工作负载身份联合可与Google Cloud 身份验证库(身份验证库)搭配使用,让外部工作负载无需服务账号密钥即可访问 Google Cloud 资源。身份验证库会将外部凭证(例如来自 Amazon Web Services (AWS)、Microsoft Azure 或 OpenID Connect (OIDC) 和安全断言标记语言 (SAML) 2.0 提供商的令牌,或 X.509 客户端证书)交换为短期有效的访问令牌。
如需获取外部凭据,您可以对常见设置使用标准机制,也可以为需要自定义代码的工作流实现自定义凭据提供方。
准备工作
启用所需的 API(如果尚未启用)。
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。配置使用您的身份提供方的工作负载身份联合。
使用标准凭证机制进行身份验证
对于常用的受支持第三方身份提供方,您可以使用Google Cloud 身份验证库的内置功能,通过生成凭证配置文件来对工作负载进行身份验证。此文件为身份验证库提供了必要的信息,以便联合来自外部提供方的身份。
凭据配置文件(通常使用 GOOGLE_APPLICATION_CREDENTIALS 环境变量加载)可以指示身份验证库使用以下方法之一获取第三方主体令牌:
- 文件来源:库从本地文件读取主体令牌。必须通过单独的进程确保此文件包含有效、未过期的令牌。
- 网址来源:库通过向指定的本地网址端点发出请求来提取主体令牌。
- 可执行文件溯源:库运行配置的可执行命令。可执行文件的标准输出应包含主体令牌。
为您的特定提供方生成凭证配置文件:
使用凭据配置文件进行身份验证。
如需让 Google Cloud 客户端库自动找到并使用您的凭证配置文件,请将
GOOGLE_APPLICATION_CREDENTIALS环境变量设置为生成的 JSON 文件的路径。在 shell 中导出环境变量:
bash export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/config.json设置环境变量后,客户端库会处理身份验证流程。
以下代码示例展示了如何对 Google Cloud API 进行经过身份验证的调用:
Node.js
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。 如需了解详情,请参阅 IAM Node.js API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。 如需了解详情,请参阅 IAM Python API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。 如需了解详情,请参阅 IAM Java API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。 如需了解详情,请参阅 IAM Go API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
使用自定义凭证提供方进行身份验证
如果您的环境不支持 Google 身份验证库的内置功能,或者您想实现自定义逻辑来向 Google 身份验证库提供凭证,请使用自定义凭证提供程序对工作负载进行身份验证。
从 AWS 访问资源
初始化身份验证客户端时,请提供凭据提供方的自定义实现。客户端实例会遵从提供方来检索 AWS 安全凭证,以换取 Google Cloud 访问令牌。当客户端调用提供程序时,提供程序必须返回有效且未过期的凭据。
身份验证客户端不会缓存返回的 AWS 安全凭证或区域,因此请在提供方中实现缓存,以防止对相同资源发出多余的请求。
以下代码示例展示了如何使用自定义凭据提供方设置从 AWS 访问 Google Cloud资源。
Node.js
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。 如需了解详情,请参阅 IAM Node.js API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。 如需了解详情,请参阅 IAM Python API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。 如需了解详情,请参阅 IAM Java API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
从 OIDC 和 SAML 访问资源
初始化身份验证客户端时,请提供自定义令牌提供方,以提供用于交换 Google Cloud 访问令牌的主体令牌。当客户端调用供应商时,供应商必须返回一个有效且未过期的主体令牌。
身份验证客户端不会缓存返回的令牌,因此请在提供方中实现缓存,以防止针对同一主体令牌发出多余的请求。
以下代码示例展示了如何通过支持 OpenID Connect (OIDC) 或 SAML 2.0 的提供方,使用自定义凭证供应商设置对 Google Cloud资源的访问权限。
Node.js
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。 如需了解详情,请参阅 IAM Node.js API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。 如需了解详情,请参阅 IAM Python API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。 如需了解详情,请参阅 IAM Java API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。