本文档介绍了如何将工作负载身份联合与 Google Cloud 身份验证库(简称“身份验证库”)搭配使用,以对来自第三方身份提供商(如 AWS、Microsoft Azure 以及支持 OpenID Connect (OIDC) 或 SAML 2.0 的提供商)的工作负载进行身份验证。
借助工作负载身份联合,在 Google Cloud外部运行的应用无需使用服务账号密钥即可访问 Google Cloud 资源。Google Auth 库通过将外部凭据交换为短期 Google Cloud 访问令牌来实现此目的。
对于身份验证,您可以使用以下方法获取外部凭据:
准备工作
Enable the required APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.配置使用身份提供方的工作负载身份联合。
使用标准凭据机制进行身份验证
对于常用的受支持的第三方身份提供方,您可以使用Google Cloud auth 库的内置功能,通过生成凭据配置文件来验证工作负载的身份。此文件为身份验证库提供了从外部提供方联合身份所需的必要信息。
凭据配置文件(通常使用 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 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。