工作负载身份联合示例

支持 OpenID Connect (OIDC) 或 SAML 2.0的任何身份提供者都支持 Google BigQuery, Google Cloud Pub/Sub和 Google Cloud Storage 连接的工作负载身份联合。

这些示例适用于 AWS with Amazon CognitoMicrosoft Azure

AWS

在 Amazon Cognito 中配置工作负载身份联合

  1. 通过遵循 Amazon 文档中的指示信息,使用 Cognito 创建 OIDC 身份提供者 (IdP):

    有关详细信息,请参阅Amazon Cognito 入门

  2. 使用 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
    
  3. 在 AWS 控制台中,单击 查看托管 UI 并在浏览器中登录到 IDP UI ,以确保解决任何新的密码提问。

  4. 使用 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 工作负载身份联合的连接

  1. 选择 具有访问令牌的工作负载身份联合 认证方法。

  2. 对于 安全性令牌服务受众 字段,请使用以下格式:

    //iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
    
  3. 对于 服务帐户电子邮件,输入要模拟的 Google 服务帐户的电子邮件地址。 有关详细信息,请参阅为外部工作负载创建服务帐户

  4. (可选) 指定 服务帐户令牌生存期 的值 (以秒计)。 服务帐户访问令牌的缺省生存期为 1 小时。 有关更多信息,请参阅 URL 来源凭证

  5. 令牌格式 设置为 Text

  6. 令牌类型 设置为 ID token

Azure

在 Azure 中配置工作负载身份联合

  1. 创建AzureAD 应用程序和服务 principal

  2. 设置应用程序的 应用程序标识 URI 。 您可以使用缺省应用程序标识 URI (api://APPID) 或指定定制 URI。

    您可以跳过有关创建受管身份的指示信息。

  3. 请按照说明创建新的应用程序秘密,以便通过 REST API 获取访问令牌。

    有关详细信息,请参阅使用Azure配置工作负载身份联合

为 Azure 配置 Google Cloud

  1. 请按照说明操作:配置工作负载身份联合
  2. 请按照说明操作:创建工作负载身份池和提供程序。 配置提供程序时,请使用以下设置:
    • Issuer ( URL ) 设置为 https://sts.windows.net/TENANTID/ ,其中 TENANTID 是您在设置 Azure Active Directory 时收到的租户 ID。
    • 允许的受众 设置为设置应用程序注册时接收到的客户机标识。 或者指定在 Azure中设置应用程序身份时使用的其他 应用程序标识 URI
    • 属性映射下,将 google.subject 映射到 assertion.sub

创建与 Azure 工作负载身份联合的连接

  1. 选择下列其中一种认证方法:

    • 使用访问令牌的工作负载身份联合
    • 使用令牌 URL 的工作负载身份联合
  2. 对于安全令牌服务受众字段,请使用 "验证使用 REST API 的工作负载 "中描述的格式。 例如:

    //iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
    
  3. 对于 服务帐户电子邮件,输入要模拟的 Google 服务帐户的电子邮件地址。 有关详细信息,请参阅为外部工作负载创建服务帐户

  4. (可选) 指定 服务帐户令牌生存期 的值 (以秒计)。 服务帐户访问令牌的缺省生存期为 1 小时。 有关更多信息,请参阅 URL 来源凭证

  5. 如果您使用令牌 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
  6. 对于 令牌类型,请为符合 OpenID Connect (OIDC) 规范的身份提供者选择 标识令牌 。 有关信息,请参阅令牌类型

  7. 令牌格式 选项取决于该认证选择:

    • 具有访问令牌的工作负载身份联合: 如果在 访问令牌 字段中提供了原始令牌值,请选择 文本
    • 使用令牌 URL 的工作量身份联盟 :对于来自令牌 URL 的 JSON 格式响应,以及在名为 access_token 的字段中返回的访问令牌,请使用这些设置:
      • 令牌格式: JSON
      • 令牌字段名称: access_token

了解更多信息