工作负载身份联合示例
支持 OpenID Connect (OIDC) 或 SAML 2.0的任何身份提供者都支持 Google BigQuery, Google Cloud Pub/Sub和 Google Cloud Storage 连接的工作负载身份联合。
这些示例适用于 AWS with Amazon Cognito 和 Microsoft Azure。
AWS
在 Amazon Cognito 中配置工作负载身份联合
通过遵循 Amazon 文档中的指示信息,使用 Cognito 创建 OIDC 身份提供者 (IdP):
有关详细信息,请参阅Amazon Cognito 入门。
使用 AWS 控制台在 IdP 中创建组和用户。 或者,您可以使用 AWS CLI:
CLIENT_ID=YourClientId ISSUER_URL=https://cognito-idp.YourRegion.amazonaws.com/YourPoolId POOL_ID=YourPoolId USERNAME=YourUsername PASSWORD=YourPassword GROUPNAME=YourGroupName aws cognito-idp admin-create-user --user-pool-id $POOL_ID --username $USERNAME --temporary-password Temp-Pass1 aws cognito-idp admin-set-user-password --user-pool-id $POOL_ID --username $USERNAME --password $PASSWORD --permanent aws cognito-idp create-group --group-name $GROUPNAME --user-pool-id $POOL_ID aws cognito-idp admin-add-user-to-group --user-pool-id $POOL_ID --username $USERNAME --group-name $GROUPNAME在 AWS 控制台中,单击 查看托管 UI 并在浏览器中登录到 IDP UI ,以确保解决任何新的密码提问。
使用 AWS CLI 获取 IdToken :
aws cognito-idp admin-initiate-auth --auth-flow ADMIN_USER_PASSWORD_AUTH --client-id $CLIENT_ID --auth-parameters USERNAME=$USERNAME,PASSWORD=$PASSWORD --user-pool-id $POOL_ID有关 Amazon Cognito 用户池身份验证流程的更多信息,请参阅AdminInitiateAuth。
为 Amazon Cognito 配置 Google Cloud
在 Google Cloud中创建提供者时,请使用以下设置:
- 将发行人 ( URL ) 设置为
https://cognito-idp.YourRegion.amazonaws.com/YourPoolId。 - 将 允许的受众 设置为您的客户标识。
- 在 属性映射下,将
google.subject映射到assertion.sub。
创建与 Amazon Cognito 工作负载身份联合的连接
选择 具有访问令牌的工作负载身份联合 认证方法。
对于 安全性令牌服务受众 字段,请使用以下格式:
//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID对于 服务帐户电子邮件,输入要模拟的 Google 服务帐户的电子邮件地址。 有关详细信息,请参阅为外部工作负载创建服务帐户。
(可选) 指定 服务帐户令牌生存期 的值 (以秒计)。 服务帐户访问令牌的缺省生存期为 1 小时。 有关更多信息,请参阅 URL 来源凭证。
将 令牌格式 设置为
Text将 令牌类型 设置为
ID token
Azure
在 Azure 中配置工作负载身份联合
设置应用程序的 应用程序标识 URI 。 您可以使用缺省应用程序标识 URI (
api://APPID) 或指定定制 URI。
您可以跳过有关创建受管身份的指示信息。请按照说明创建新的应用程序秘密,以便通过 REST API 获取访问令牌。
有关详细信息,请参阅使用Azure配置工作负载身份联合。
为 Azure 配置 Google Cloud
- 请按照说明操作:配置工作负载身份联合。
- 请按照说明操作:创建工作负载身份池和提供程序。 配置提供程序时,请使用以下设置:
- 将 Issuer ( URL ) 设置为
https://sts.windows.net/TENANTID/,其中TENANTID是您在设置 Azure Active Directory 时收到的租户 ID。 - 将 允许的受众 设置为设置应用程序注册时接收到的客户机标识。 或者指定在 Azure中设置应用程序身份时使用的其他 应用程序标识 URI 。
- 在 属性映射下,将
google.subject映射到assertion.sub。
- 将 Issuer ( URL ) 设置为
创建与 Azure 工作负载身份联合的连接
选择下列其中一种认证方法:
- 使用访问令牌的工作负载身份联合
- 使用令牌 URL 的工作负载身份联合
对于安全令牌服务受众字段,请使用 "验证使用 REST API 的工作负载 "中描述的格式。 例如:
//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID对于 服务帐户电子邮件,输入要模拟的 Google 服务帐户的电子邮件地址。 有关详细信息,请参阅为外部工作负载创建服务帐户。
(可选) 指定 服务帐户令牌生存期 的值 (以秒计)。 服务帐户访问令牌的缺省生存期为 1 小时。 有关更多信息,请参阅 URL 来源凭证。
如果您使用令牌 URL 指定了 Workload Identity Federation ,请使用以下值:
- 令牌 URL :
https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token。 URL 将从 Azure 获取令牌。 - HTTP 方法 :
POST - HTTP 页眉 :
"Content-Type"="application/x-www-form-urlencoded;charset=UTF-8","Accept"="application/json" - 请求主体:
grant_type=client_credentials&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&scope=APPLICATION_ID_URI/.default
- 令牌 URL :
对于 令牌类型,请为符合 OpenID Connect (OIDC) 规范的身份提供者选择 标识令牌 。 有关信息,请参阅令牌类型。
令牌格式 选项取决于该认证选择:
- 具有访问令牌的工作负载身份联合: 如果在 访问令牌 字段中提供了原始令牌值,请选择 文本 。
- 使用令牌 URL 的工作量身份联盟 :对于来自令牌 URL 的 JSON 格式响应,以及在名为
access_token的字段中返回的访问令牌,请使用这些设置:- 令牌格式:
JSON - 令牌字段名称:
access_token
- 令牌格式: