使用服务账号是管理在 Google Cloud 上运行的应用程序权限的关键方法。 它们允许你的应用程序以安全和受控的方式访问 Google Cloud 资源。
服务账号是一种特殊的 Google Cloud 账号,它不是由个人用户拥有,而是由应用程序或虚拟机 (VM) 实例拥有。 你的应用程序可以使用服务账号的凭据来向 Google Cloud 服务进行身份验证,并获得执行操作的授权。
你可以使用 Google Cloud Console、Google Cloud CLI 或 IAM API 创建服务账号。
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
--display-name="SERVICE_ACCOUNT_DISPLAY_NAME"
将 SERVICE_ACCOUNT_NAME 替换为服务账号的名称,将 SERVICE_ACCOUNT_DISPLAY_NAME 替换为显示名称。
角色定义了服务账号可以访问的 Google Cloud 资源以及它可以执行的操作。 你应该授予服务账号仅完成其任务所需的最小权限集。
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
--role="ROLE_NAME"
将 PROJECT_ID 替换为你的 Google Cloud 项目 ID,将 SERVICE_ACCOUNT_EMAIL 替换为服务账号的电子邮件地址,将 ROLE_NAME 替换为要授予的角色。
你的应用程序需要使用服务账号的凭据来向 Google Cloud 服务进行身份验证。 你可以使用以下方法之一来提供凭据:
在 Google Cloud 环境 (例如 Compute Engine、App Engine、Cloud Functions、Cloud Run) 中,Google Cloud 客户端库会自动检测并使用附加到 VM 实例或服务的服务账号。 这是推荐的方法,因为它最安全且易于使用。
from google.cloud import storage
client = storage.Client() # 客户端库自动发现凭据
在本地开发或在 Google Cloud 外部运行应用程序时,你需要手动提供服务账号的凭据。 这可以通过以下方式完成:
GOOGLE_APPLICATION_CREDENTIALS 环境变量:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
将 /path/to/your/service-account-key.json 替换为下载的 JSON 密钥文件的路径。
import os
from google.cloud import storage
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "/path/to/your/service-account-key.json" #不推荐直接在代码中设置,推荐环境变量
client = storage.Client() # 客户端库使用 GOOGLE_APPLICATION_CREDENTIALS 环境变量
服务账号是管理 Google Cloud 应用程序权限的强大工具。 通过遵循这些最佳实践,你可以确保你的应用程序以安全和受控的方式访问 Google Cloud 资源。记住,安全第一! 🛡️