安全与风控
在 Google Cloud 上为人类用户…
当需要为本地开发、生产服务、GKE 工作负载或跨云应用配置 Google Cloud 认证与 IAM 授权时,按身份类型和运行环境选择对应方案。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
在 Google Cloud 上为人类用特定
解决思路
- 先向用户澄清四个问题:谁在认证(人类开发者、本地脚本还是生产应用)、代码在哪里运行(本地、Compute Engine、GKE、Cloud Run 还是 AWS/Azure)、目标是什么(Google Cloud API 还是自建应用)、是否使用高层客户端库(Python/Go/Node.js 库通常自动处理 ADC)。
- 为内部员工配置用户身份时,选择 Google 托管账号(Cloud Identity 或 Google Workspace)、通过 Cloud Identity/Workspace 联合身份(用 GCDS 或 Active Directory/Microsoft Entra ID 同步账号),或使用 Workforce Identity Federation(无需同步身份,支持基于属性的无同步 SSO)。
- 开发者和管理员访问时:用 Google Cloud Console 配合 Google 账号;用 `gcloud auth login` 认证 CLI 本身以运行管理命令;用 `gcloud auth application-default login` 生成本地 JSON 凭据供客户端库以“你”的身份运行代码;避免下载服务账号密钥,改用服务账号模拟(Service Account Impersonation)生成短期凭据。
- 为终端用户和客户配置访问时:用 Identity-Aware Proxy (IAP) 作为 Web 应用的集中授权层,在请求到达应用前验证身份;用 Identity Platform 作为 CIAM 方案,在自建应用中集成消费者登录(邮箱/密码、电话、社交)。
- 生产环境代码应使用服务账号而非人类账号:服务账号是带邮箱的非人类“机器人身份”;服务代理(Service Agent)是 Google 管理的服务账号,允许 Pub/Sub 等服务代表你访问资源。
- 最佳实践是附加服务账号而非使用密钥:在 Compute Engine 创建 VM 时分配服务账号,在 Cloud Run 服务配置中分配服务账号,让环境通过本地元数据服务器提供短期 Token。
- GKE 上使用 Workload Identity Federation for GKE,将 Kubernetes 身份映射到 IAM 主体标识符,授予特定工作负载访问特定 Google Cloud API 的权限。
- Google Cloud 之外(AWS、Azure、本地)的工作负载不要用密钥,改用 Workload Identity Federation 将外部令牌(如 AWS IAM 角色)换取短期 Google Cloud 访问令牌。
- API Keys 仅用于公开数据(如 Google Maps)或简化访问(如 Vertex AI Express Mode 快速测试 Gemini 模型);必须限制到特定 API 和项目,并存放在 Secret Manager 等密钥管理器中防止泄露。
- 注意 OAuth 2.0 Access Scopes:旧版 Compute Engine VM 和 GKE 节点池仍依赖访问范围配合 IAM,若 VM 范围受限,即使 IAM 权限正确附加的服务账号也会调用失败,应优先排查此项。
- 使用 IAM Service Account Credentials API 动态生成短期访问令牌、OIDC ID 令牌或自签名 JWT,消除对静态凭据的依赖。
- 认证之后用 IAM 做授权:Allow Policy 将 Principal 绑定到 Resource 上的 Role;优先使用预定义角色(如 `roles/storage.objectViewer`、`roles/bigquery.dataEditor`),预定义角色过宽时再创建自定义角色。
- 本地 Python 开发示例:运行 `gcloud auth application-default login` 创建 ADC,给邮箱授予 bucket 的 `roles/storage.objectViewer`,代码中用 `storage.Client()` 自动通过 ADC 查找凭据(查找顺序:`GOOGLE_APPLICATION_CREDENTIALS` 环境变量、本地 gcloud JSON 文件、附加服务账号的元数据服务器)。
- Cloud Run 到 Cloud SQL 示例:给 Cloud Run 服务附加自定义服务账号,给该服务账号授予项目上的 `roles/cloudsql.client`,运行环境自动向连接驱动提供令牌。
- 调用自建应用示例:从另一个服务调用私有 Cloud Run 服务时,调用方生成 Google 签名的 OIDC ID Token 并放入 `Authorization: Bearer <TOKEN>` 请求头。
- 按验证清单逐项检查:本地运行代码建议用 `gcloud auth application-default login` 或服务账号模拟;本地使用服务账号密钥应强烈劝阻并推荐模拟;生产环境推荐附加最小权限的自定义服务账号而非密钥;避免依赖 Compute Engine 默认服务账号,应创建自定义服务账号;其他云上推荐 Workload Identity Federation;调用自建应用推荐 OIDC ID Token;检查 API Keys 是否已添加适当限制。
适用边界 · 注意事项
- 不涉及 Google Cloud 认证与 IAM 授权的场景不适用。
- 没有 Google Cloud 账号或未使用 Google Cloud 服务的项目无法直接套用。
- 非 Google Cloud 环境(如纯 AWS/Azure 内部认证)需改用对应云厂商的方案,仅跨云访问 Google Cloud 时才用 Workload Identity Federation。