ワークロード ID フェデレーションの例
Google BigQuery 接続および Google Cloud Storage 接続のワークロード ID フェデレーションは、 OpenID Connect (OIDC) または SAML 2.0をサポートするすべての ID プロバイダーによってサポートされます。
これらの例は、 AWS と Amazon Cognito および Microsoft Azure用です。
AWS
Amazon Cognito でのワークロード ID フェデレーションの構成
Amazon 資料の説明に従って、Cognito を使用して OIDC ID プロバイダー (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 の表示 (View Hosted 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 User Pools 認証フローの詳細については、AdminInitiateAuth を参照してください。
Amazon Cognito 用に Google Cloud を構成する
Google Cloudでプロバイダーを作成する場合は、以下の設定を使用します。
- 「発行者 (URL)」 を
https://cognito-idp.YourRegion.amazonaws.com/YourPoolId
に設定します。 - 「許可されたオーディエンス」 をクライアント ID に設定します。
- 「属性マッピング」の下で、
google.subject
をassertion.sub
にマップします。
Amazon Cognito ワークロード ID 連携との接続を作成します
「アクセス・トークンを使用したワークロード ID フェデレーション」 認証方式を選択します。
「セキュリティー・トークン・サービス対象者」 フィールドには、以下の形式を使用します。
//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
「サービス・アカウント E メール」に、偽名を使用する Google サービス・アカウントの E メール・アドレスを入力します。 詳細については、外部ワークロード用のサービスアカウントの作成を参照してください。
(オプション) サービス・アカウント・トークン存続時間 の値を秒単位で指定します。 サービス・アカウント・アクセス・トークンのデフォルトの存続時間は 1 時間です。 詳細については、URL ソースのクレデンシャルを参照してください。
「トークン・フォーマット」 を
Text
に設定します。「トークン・タイプ」 を
ID token
に設定します。
Azure
Azure でのワークロード ID フェデレーションの構成
アプリケーションの 「アプリケーション ID URI」 を設定します。 デフォルトのアプリケーション ID URI (
api://APPID
) を使用することも、カスタム URI を指定することもできます。
管理対象 ID の作成手順はスキップできます。指示に従って新しいアプリケーションシークレットを作成し、REST APIでアクセストークンを取得してください。
詳細については、「 Azureでワークロード ID フェデレーションを構成する」を参照してください。
Azure 用に Google Cloud を構成します。
- 指示に従ってください:ワークロード ID フェデレーションを構成する。
- 指示に従ってください:ワークロード ID プールとプロバイダを作成します。 プロバイダーを構成するときは、以下の設定を使用します。
- 「発行者 (URL)」 を
https://sts.windows.net/TENANTID/
に設定します。ここで、TENANTID
は、 Azure Active Directoryのセットアップ時に受け取ったテナント ID です。 - 「許可されるオーディエンス (Allowed audience)」 を、アプリ登録のセットアップ時に受け取ったクライアント ID に設定します。 または、 Azureでアプリケーション ID をセットアップしたときに使用した別の アプリケーション ID URI を指定します。
- 「属性マッピング」の下で、
google.subject
をassertion.sub
にマップします。
- 「発行者 (URL)」 を
Azure ワークロード ID 連携を使用した接続の作成
以下のいずれかの認証方式を選択します。
- アクセス・トークンを使用したワークロード ID のフェデレーション
- トークン URL を使用した ワークロード ID のフェデレーション
Security Token Serviceのオーディエンス・フィールドには、『Authenticate a workload that uses REST API』に記載されている形式を使用する。 例:
//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
「サービス・アカウント E メール」に、偽名を使用する Google サービス・アカウントの E メール・アドレスを入力します。 詳細については、外部ワークロード用のサービスアカウントの作成を参照してください。
(オプション) サービス・アカウント・トークン存続時間 の値を秒単位で指定します。 サービス・アカウント・アクセス・トークンのデフォルトの存続時間は 1 時間です。 詳細については、URL ソースのクレデンシャルを参照してください。
「トークン URL を使用したワークロード ID フェデレーション」を指定した場合は、以下の値を使用します。
- トークン 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) 仕様に準拠する ID プロバイダーの 「ID トークン」 を選択します。 詳しくは、トークン・タイプを参照のこと。
「トークン・フォーマット」 オプションは、その認証の選択によって異なります。
- アクセス・トークンを使用したワークロード ID フェデレーション: 「アクセス・トークン」 フィールドにロー・トークン値を指定した場合は、 「テキスト」 を選択します。
- トークン URL を使用した Workload Identity Federation:
access_token
という名前のフィールドに返されるアクセス・トークンを使用した、JSON 形式のトークン URL からの応答の場合は、以下の設定を使用します。- トークン・フォーマット:
JSON
- トークン・フィールド名:
access_token
- トークン・フォーマット: