在线客服

Google Cloud IAM如何进行服务账号管理,以便应用程序可以访问云资源?

⏱️2026-03-12 09:29 👁️13

Google Cloud IAM 服务账号管理 ☁️

使用 IAM 服务账号,允许你的应用程序安全地访问 Google Cloud 资源。以下是一些关键步骤和最佳实践:

1. 创建服务账号 🛠️

首先,你需要为你的应用程序创建一个服务账号。可以通过 Google Cloud Console 或 gcloud CLI 完成:

使用 Cloud Console

  1. 打开 IAM & 管理员 > 服务账号
  2. 点击 创建服务账号
  3. 输入服务账号名称、ID 和描述。确保 ID 易于识别,例如 [项目ID]-app-service-account
  4. 点击 创建并继续

使用 gcloud CLI

gcloud iam service-accounts create [SERVICE_ACCOUNT_NAME] \
    --description="服务账号描述" \
    --display-name="服务账号显示名称"

替换 [SERVICE_ACCOUNT_NAME] 为你想要的服务账号名称。

2. 授予角色 🔑

创建服务账号后,你需要授予它访问云资源所需的角色。

使用 Cloud Console

  1. 在服务账号创建页面,点击 选择角色
  2. 选择适当的角色,例如 Storage Object Admin (存储对象管理员) 或 Cloud SQL Client (Cloud SQL 客户端)。 考虑最小权限原则,仅授予必要的权限。
  3. 点击 完成

使用 gcloud CLI

gcloud projects add-iam-policy-binding [PROJECT_ID] \
    --member="serviceAccount:[SERVICE_ACCOUNT_EMAIL]" \
    --role="roles/[ROLE_NAME]"

  • 替换 [PROJECT_ID] 为你的 Google Cloud 项目 ID。
  • 替换 [SERVICE_ACCOUNT_EMAIL] 为你的服务账号电子邮件地址。
  • 替换 [ROLE_NAME] 为你想要授予的角色名称,例如 storage.objectAdmincloudsql.client

3. 下载服务账号密钥 ⬇️

为了让你的应用程序可以使用服务账号,你需要下载一个 JSON 密钥文件。 注意: 妥善保管此密钥,不要将其存储在公共代码仓库中!

使用 Cloud Console

  1. IAM & 管理员 > 服务账号,找到你的服务账号。
  2. 点击服务账号名称。
  3. 点击 密钥 选项卡。
  4. 点击 添加密钥 > 创建新的密钥
  5. 选择 JSON 格式,然后点击 创建。密钥文件将自动下载。

使用 gcloud CLI

gcloud iam service-accounts keys create [KEY_FILE] \
    --iam-account=[SERVICE_ACCOUNT_EMAIL]

  • 替换 [KEY_FILE] 为你想要保存密钥文件的路径和名称。
  • 替换 [SERVICE_ACCOUNT_EMAIL] 为你的服务账号电子邮件地址。

4. 在应用程序中使用服务账号 🚀

现在,你的应用程序可以使用下载的密钥文件进行身份验证,并访问 Google Cloud 资源。

示例代码 (Python)

import google.auth
from google.cloud import storage

# 使用环境变量 GOOGLE_APPLICATION_CREDENTIALS 指定密钥文件路径
# 例如: export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/key.json"
credentials, project = google.auth.default()

# 创建 Storage 客户端
storage_client = storage.Client(credentials=credentials, project=project)

# 列出所有 bucket
buckets = list(storage_client.list_buckets())
print("Buckets:")
for bucket in buckets:
    print(bucket.name)

确保设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量指向你的密钥文件:

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/key.json"

5. 服务账号管理最佳实践 🏆

  • 最小权限原则: 只授予服务账号访问其所需资源的最小权限。
  • 定期轮换密钥: 定期更换服务账号密钥以提高安全性。
  • 监控服务账号活动: 使用 Cloud Logging 监控服务账号的活动,以便及时发现异常行为。
  • 使用 Workload Identity: 如果你的应用程序在 Kubernetes Engine 上运行,考虑使用 Workload Identity 来管理服务账号,从而避免手动管理密钥。
  • 不要在公共代码仓库中存储密钥: 永远不要将服务账号密钥存储在公共代码仓库中。使用 Secret Manager 或其他安全的方式来管理密钥。

6. 常见问题解答 🤔

Q: 我应该为每个应用程序都创建一个单独的服务账号吗?
A: 强烈建议为每个应用程序或组件创建一个单独的服务账号,以便更好地控制权限和隔离风险。
Q: 如何撤销服务账号的权限?
A: 你可以通过 Cloud Console 或 gcloud CLI 移除服务账号的角色绑定来撤销其权限。
Q: 服务账号密钥过期了吗?
A: 服务账号密钥本身不会过期。但是,定期轮换密钥是一个好的安全实践。

遵循这些步骤和最佳实践,你可以有效地管理 Google Cloud IAM 服务账号,确保你的应用程序安全地访问云资源。🎉

更多信息请参考 Google Cloud IAM 文档.