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