このドキュメントでは、Microsoft Entra ID ID プロバイダ(IdP)を使用して Workforce Identity 連携を構成し、Google Cloudへのアクセスを管理する方法について説明します。連携ユーザーは、Workforce Identity 連携をサポートする Google Cloud サービスにアクセスできます。OIDC プロトコルまたは SAML 2.0 プロトコルを使用して、ID を連携できます。
始める前に
- Google Cloud 組織が設定されていることを確認します。
-
After installing the Google Cloud CLI, configure the gcloud CLI to use your federated identity and then initialize it by running the following command:
gcloud init
- Microsoft Entra ID で、暗黙的フローに対して ID トークンが有効になっていることを確認します。詳細については、ID トークンの暗黙的付与を有効にするをご覧ください。
- ログインの場合、IdP は署名付き認証情報を提供する必要があります。OIDC IdP は JWT を提供し、SAML IdP レスポンスは署名されている必要があります。
- 組織またはGoogle Cloud プロダクトの変更に関する重要な情報を受け取るには、重要な連絡先を指定する必要があります。詳細については、Workforce Identity 連携の概要をご覧ください。
必要なロール
Workforce Identity 連携の構成に必要な権限を取得するには、組織に対する IAM Workforce プール管理者(roles/iam.workforcePoolAdmin
)の IAM ロールを付与するように管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
本番環境ではなく、開発環境またはテスト環境で権限を構成する場合は、IAM オーナー(roles/owner
)の基本ロールを付与できます。このロールには、Workforce Identity 連携の権限も含まれています。
Microsoft Entra ID アプリケーションを作成する
このセクションでは、Microsoft Entra 管理ポータルを使用して Microsoft Entra ID アプリケーションを作成する方法について説明します。また、既存のアプリケーションを更新することもできます。詳細については、Microsoft Entra ID エコシステムでアプリケーションを構築するをご覧ください。Workforce Identity プールは、OIDC プロトコルと SAML プロトコルの両方を使用した連携をサポートしています。
OIDC
OIDC プロトコルを使用する Microsoft Entra ID アプリケーション登録を作成するには、次の操作を行います。
Microsoft Entra 管理ポータルにログインします。
[Identity] > [Applications] > [App registrations] に移動します。
アプリケーション登録の構成を開始するには、次の操作を行います。
[New registration] をクリックします。
アプリケーションの名前を入力します。
[Supported account types] で、オプションを選択します。
[Redirect URI] セクションの [Select a platform] プルダウン リストで、[Web] を選択します。
テキスト フィールドにリダイレクト URL を入力します。ログインに成功すると、この URL にリダイレクトされます。コンソール(連携)へのアクセスを構成する場合は、次の URL 形式を使用します。
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
次のように置き換えます。
WORKFORCE_POOL_ID
: このドキュメントの後半で Workforce Identity プールを作成するときに使用する Workforce Identity プール ID(例:entra-id-oidc-pool
)。WORKFORCE_PROVIDER_ID
: このドキュメントの後半で Workforce Identity プール プロバイダを作成するときに使用する Workforce Identity プール プロバイダ ID(例:entra-id-oidc-pool-provider
)。ID の形式については、API ドキュメントのクエリ パラメータ セクションをご覧ください。
アプリケーション登録を作成するには、[Register] をクリックします。
必要に応じて、次の手順でグループ クレームを構成できます。
Microsoft Entra ID アプリケーション登録に移動します。
[Token configuration] をクリックします。
[Add groups claim] をクリックします。このドキュメントの後半で説明するサンプル属性マッピングを使用するには、カスタム
department
属性を作成する必要があります。戻されるグループの種類を選択します。詳しくは、グループの省略可能な要求を構成するをご覧ください。
SAML
SAML プロトコルを使用する Microsoft Entra ID アプリケーション登録を作成するには、次の操作を行います。
Microsoft Entra 管理ポータルにログインします。
[Identity] > [Applications] > [App registrations] に移動します。
エンタープライズ アプリケーションの構成を開始するには、次の操作を行います。
[Single sign-on] > [Create your own application] をクリックします。
アプリケーションの名前を入力します。
[Create] をクリックします。
[Single sign-on] > [SAML] に移動します。
[基本的な SAML 構成] を次のように更新します。
[Identifier (Entity ID)] フィールドに次の値を入力します。
https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
次のように置き換えます。
WORKFORCE_POOL_ID
: このドキュメントの後半で Workforce Identity プールを作成するときに使用する Workforce Identity プール ID(例:entra-id-saml-pool
)。WORKFORCE_PROVIDER_ID
: このドキュメントの後半で Workforce Identity プール プロバイダを作成するときに使用する Workforce Identity プール プロバイダ ID(例:entra-id-saml-pool-provider
)。ID の形式については、API ドキュメントのクエリ パラメータ セクションをご覧ください。
[Reply URL (Assertion Consumer Service URL)] フィールドに、リダイレクト URL を入力します。ログインに成功すると、この URL にリダイレクトされます。コンソール(連携)へのアクセスを構成する場合は、次の URL 形式を使用します。
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
次のように置き換えます。
WORKFORCE_POOL_ID
: Workforce Identity プールの IDWORKFORCE_PROVIDER_ID
: Workforce Identity プロバイダの ID。
IdP によるログインを有効にする場合は、[Relay State] フィールドを次の値に設定します。
https://console.cloud.google/
SAML アプリケーションの構成を保存するには、[Save] をクリックします。
必要に応じて、次の手順でグループ クレームを構成できます。このドキュメントの後半で説明するサンプル属性マッピングを使用するには、カスタム department
属性を作成する必要があります。
Microsoft Entra ID アプリケーションに移動します。
[Single sign-on] をクリックします。
[Attributes & Claims] セクションで [Edit] をクリックします。
[Add a group claim] をクリックします。
戻されるグループの種類を選択します。詳しくは、SSO 構成を使用して SAML アプリケーションのトークンにグループ要求を追加するをご覧ください。
Workforce Identity プールを作成する
コンソール
Workforce Identity プールを作成するには、次の操作を行います。
Google Cloud コンソールで、[Workforce Identity プール] ページに移動します。
Workforce Identity プールの組織を選択します。Workforce Identity プールは、組織内のすべてのプロジェクトとフォルダで使用できます。
[プールを作成] をクリックして、次の操作を行います。
[名前] フィールドに、プールの表示名を入力します。プール ID は、入力した名前から自動的に取得され、[名前] フィールドの下に表示されます。プール ID を更新するには、プール ID の横にある [編集] をクリックします。
省略可: [説明] にプールの説明を入力します。
[セッション継続時間] はデフォルトで設定されています。カスタムのセッション継続時間を入力するには、[編集] をクリックします。セッション継続時間は、この Workforce プールの Google Cloudアクセス トークン、コンソール(連携)ログイン セッション、gcloud CLI ログイン セッションの有効期間を決定します。継続時間は 15 分(900 秒)より長く、12 時間(43,200 秒)より短くする必要があります。セッション継続時間が設定されていない場合、デフォルトで 1 時間(3,600 秒)に設定されます。
プールを有効な状態で作成するには、[有効なプール] がオンになっていることを確認します。
Workforce Identity プールを作成するには、[次へ] をクリックします。
gcloud
Workforce Identity プールを作成するには、次のコマンドを実行します。
gcloud iam workforce-pools create WORKFORCE_POOL_ID \
--organization=ORGANIZATION_ID \
--display-name="DISPLAY_NAME" \
--description="DESCRIPTION" \
--session-duration=SESSION_DURATION \
--location=global
次のように置き換えます。
WORKFORCE_POOL_ID
: Google Cloud Workforce プールを表す ID。ID の形式については、API ドキュメントのクエリ パラメータ セクションをご覧ください。ORGANIZATION_ID
: Workforce Identity プールの Google Cloud 組織の組織 ID。Workforce Identity プールは、組織内のすべてのプロジェクトとフォルダで使用できます。DISPLAY_NAME
: 省略可。Workforce Identity プールの表示名。DESCRIPTION
: 省略可。Workforce Identity プールの説明。SESSION_DURATION
: 省略可。セッション継続時間。この Workforce プールの Google Cloudアクセス トークン、コンソール(連携)ログイン セッション、gcloud CLI ログイン セッションの有効期間を決定します。継続時間は 15 分(900 秒)より長く、12 時間(43,200 秒)より短くする必要があります。セッション継続時間が設定されていない場合、デフォルトで 1 時間(3,600 秒)に設定されます。
Microsoft Entra ID Workforce Identity プール プロバイダを作成する
このセクションでは、IdP ユーザーが Google Cloudにアクセスできるように Workforce Identity プール プロバイダを作成する方法について説明します。OIDC または SAML プロトコルを使用するようにプロバイダを構成できます。
OIDC Workforce Identity プール プロバイダを作成する
OIDC プロトコルを使用して、Microsoft Entra ID アプリケーション統合用の Workforce Identity プール プロバイダを作成するには、次の操作を行います。
Microsoft Entra ID アプリケーションの発行元 URI を取得するには、次の操作を行います。
- Microsoft Entra ID アプリケーション登録に移動します。
- [Endpoints] をクリックします。
- 新しいタブで OpenID Connect のメタデータ ドキュメントを開きます。
- JSON で、
issuer
の値をコピーします。
Microsoft Entra ID アプリケーションのクライアント ID を取得するには、次の操作を行います。
- Microsoft Entra ID アプリケーション登録に移動します。
- [Application (client) ID] の値をコピーします。
ウェブベースのログイン用の OIDC Workforce Identity プール プロバイダを作成するには、次の操作を行います。
コンソール
コードフロー
ウェブベースのログインに認可コードフローを使用する OIDC プロバイダを作成するには、次の操作を行います。
Microsoft Entra ID クライアント シークレットを取得するには、次の操作を行います。
Microsoft Entra ID アプリの登録に移動します。
[Certificates & secrets] で、[Client secrets] タブをクリックします。
クライアント シークレットを追加するには、[+ New client secret] をクリックします。
[Add a client secret] ダイアログで、必要に応じて情報を入力します。
クライアント シークレットを作成するには、[Add] をクリックします。
[Client secrets] タブで、新しいクライアント シークレットを見つけます。
新しいクライアント シークレットの [Value] 列で、[content_copyCopy] をクリックします。
Google Cloud コンソールで認可コードフローを使用する OIDC プロバイダを作成するには、次の操作を行います。
Google Cloud コンソールで、[Workforce Identity プール] ページに移動します。
[Workforce Identity プール] テーブルで、プロバイダを作成するプールを選択します。
[プロバイダ] テーブルで [プロバイダを追加] をクリックします。
[プロトコルを選択] で、[Open ID Connect(OIDC)] を選択します。
[プール プロバイダの作成] で、次の操作を行います。
- [名前] にプロバイダの名前を入力します。
- [発行元(URL)] に発行元 URI を入力します。OIDC 発行元 URI は有効な URI 形式で、
https
で始まる必要があります。(例:https://example.com/oidc
)。 - クライアント ID(OIDC IdP に登録されている OIDC クライアント ID)を入力します。ID は、IdP によって発行された JWT の
aud
クレームと一致する必要があります。 - 有効なプロバイダを作成するには、[有効なプロバイダ] がオンになっていることを確認します。
- [続行] をクリックします。
[フロータイプ] で、次の操作を行います。フロータイプは、ウェブベースのシングル サインオン フローでのみ使用されます。
- [フロータイプ] で [コード] を選択します。
- [クライアント シークレット] に、IdP のクライアント シークレットを入力します。
[アサーション クレームの動作] で、次のいずれかを選択します。
- ユーザー情報と ID トークン
- ID トークンのみ
[続行] をクリックします。
[プロバイダの構成] で、属性のマッピングと属性条件を構成できます。属性のマッピングを作成する手順は次のとおりです。IdP フィールド名、または文字列を返す CEL 形式の式を指定できます。
必須: [OIDC 1] に、IdP からの件名を入力します(例:
assertion.sub
)。OIDC 認証を使用した Microsoft Entra ID では、次の属性マッピングをおすすめします。
google.subject=assertion.sub, google.groups=assertion.groups, google.display_name=assertion.preferred_username
この例では、IdP 属性
subject
、groups
、preferred_username
を Google Cloud属性google.subject
、google.groups
、google.display_name
にそれぞれマッピングしています。省略可: 属性のマッピングを追加する手順は次のとおりです。
- [マッピングを追加] をクリックします。
- [Google n](n は数値)で、Google Cloudでサポートされている鍵のいずれかを入力します。
- 対応する [OIDC n] フィールドに、マッピングする IdP 固有のフィールドの名前を CEL 形式で入力します。
属性条件を作成するには、次の操作を行います。
- [条件を追加] をクリックします。
- [属性条件] に、CEL 形式で条件を入力します。たとえば、
ipaddr
属性を特定の IP 範囲に制限するには、条件assertion.ipaddr.startsWith('98.11.12.')
を設定します。
プロバイダを作成するには、[送信] をクリックします。
暗黙的フロー
ウェブベースのログインに暗黙的フローを使用する OIDC プロバイダを作成するには、次の操作を行います。
Google Cloud コンソールで、[Workforce Identity プール] ページに移動します。
[Workforce Identity プール] テーブルで、プロバイダを作成するプールを選択します。
[プロバイダ] テーブルで [プロバイダを追加] をクリックします。
[プロトコルを選択] で、[Open ID Connect(OIDC)] を選択します。
[プール プロバイダの作成] で、次の操作を行います。
- [名前] にプロバイダの名前を入力します。
- [発行元(URL)] に発行元 URI を入力します。OIDC 発行元 URI は有効な URI 形式で、
https
で始まる必要があります。(例:https://example.com/oidc
)。 - クライアント ID(OIDC IdP に登録されている OIDC クライアント ID)を入力します。ID は、IdP によって発行された JWT の
aud
クレームと一致する必要があります。 - 有効なプロバイダを作成するには、[有効なプロバイダ] がオンになっていることを確認します。
- [続行] をクリックします。
[フロータイプ] で、次の操作を行います。フロータイプは、ウェブベースのシングル サインオン フローでのみ使用されます。
- [フロータイプ] で [ID トークン] を選択します。
- [続行] をクリックします。
[プロバイダの構成] で、属性のマッピングと属性条件を構成できます。属性のマッピングを作成する手順は次のとおりです。IdP フィールド名、または文字列を返す CEL 形式の式を指定できます。
必須: [OIDC 1] に、IdP からの件名を入力します(例:
assertion.sub
)。OIDC 認証を使用した Microsoft Entra ID では、次の属性マッピングをおすすめします。
google.subject=assertion.sub, google.groups=assertion.groups, google.display_name=assertion.preferred_username
この例では、IdP 属性
subject
、groups
、preferred_username
を Google Cloud属性google.subject
、google.groups
、google.display_name
にそれぞれマッピングしています。省略可: 属性のマッピングを追加する手順は次のとおりです。
- [マッピングを追加] をクリックします。
- [Google n](n は数値)で、Google Cloudでサポートされている鍵のいずれかを入力します。
- 対応する [OIDC n] フィールドに、マッピングする IdP 固有のフィールドの名前を CEL 形式で入力します。
属性条件を作成するには、次の操作を行います。
- [条件を追加] をクリックします。
[属性条件] に、CEL 形式で条件を入力します。たとえば、
ipaddr
属性を特定の IP 範囲に制限するには、条件assertion.ipaddr.startsWith('98.11.12.')
を設定します。
プロバイダを作成するには、[送信] をクリックします。
gcloud
OIDC プロトコルをサポートするプロバイダを作成するには、次の操作を行います。
コードフロー
ウェブベースのログインに認可コードフローを使用する OIDC プロバイダを作成するには、次の操作を行います。
Microsoft Entra ID アプリケーションでクライアント シークレットを取得するには、次の操作を行います。
Microsoft Entra ID アプリの登録に移動します。
[Certificates & secrets] で、[Client secrets] タブをクリックします。
クライアント シークレットを追加するには、[+ New client secret] をクリックします。
[Add a client secret] ダイアログで、必要に応じて情報を入力します。
クライアント シークレットを作成するには、[Add] をクリックします。
[Client secrets] タブで、新しいクライアント シークレットを見つけます。
新しいクライアント シークレットの [Value] 列で、[content_copyCopy] をクリックします。
Google Cloud コンソールでコードフローを使用する OIDC プロバイダを作成するには、次の操作を行います。
gcloud iam workforce-pools providers create-oidc WORKFORCE_PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --display-name="DISPLAY_NAME" \ --description="DESCRIPTION" \ --issuer-uri="ISSUER_URI" \ --client-id="OIDC_CLIENT_ID" \
--client-secret-value="OIDC_CLIENT_SECRET" \ --web-sso-response-type="code" \ --web-sso-assertion-claims-behavior="merge-user-info-over-id-token-claims" \ --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --jwk-json-path="JWK_JSON_PATH" \ --location=global次のように置き換えます。
WORKFORCE_PROVIDER_ID
: 一意の Workforce Identity プール プロバイダ ID。接頭辞gcp-
は予約されているため、Workforce Identity プールまたは Workforce Identity プール プロバイダ ID では使用できません。WORKFORCE_POOL_ID
: IdP を接続する Workforce Identity プール ID。DISPLAY_NAME
: プロバイダのわかりやすい表示名。省略可能です。例:idp-eu-employees
DESCRIPTION
: Workforce プロバイダの説明。省略可能です。例:IdP for Partner Example Organization employees
ISSUER_URI
:https
で始まる有効な URI 形式の OIDC 発行者 URI。例:https://example.com/oidc
注: セキュリティ上の理由により、ISSUER_URI
では HTTPS スキームを使用する必要があります。OIDC_CLIENT_ID
: OIDC IdP に登録されている OIDC クライアント ID。ID は、IdP によって発行された JWT のaud
クレームと一致する必要があります。OIDC_CLIENT_SECRET
: OIDC クライアント シークレット。WEB_SSO_ADDITIONAL_SCOPES
: コンソール(連携)または gcloud CLI ブラウザベースのログイン用に OIDC IdP に送信する任意の追加スコープATTRIBUTE_MAPPING
: 属性マッピング。OIDC 認証を使用した Microsoft Entra ID では、次の属性マッピングをおすすめします。google.subject=assertion.sub, google.groups=assertion.groups, google.display_name=assertion.preferred_username
この例では、IdP 属性
subject
、groups
、preferred_username
を Google Cloud属性google.subject
、google.groups
、google.display_name
にそれぞれマッピングしています。ATTRIBUTE_CONDITION
: 属性条件。たとえば、ipaddr
属性を特定の IP 範囲に制限する場合は、条件assertion.ipaddr.startsWith('98.11.12.')
を設定します。JWK_JSON_PATH
: ローカルにアップロードされた OIDC JWK へのパス(省略可)。このパラメータを指定しない場合、代わりに Google Cloud は IdP の/.well-known/openid-configuration
パスを使用して公開鍵を含む JWK を取得します。ローカルにアップロードされた OIDC JWK の詳細については、OIDC JWK を管理するをご覧ください。
locations/global/workforcePools/enterprise-example-organization-employees
暗黙的フロー
ウェブログインに暗黙的フローを使用する OIDC プロバイダを作成するには、次の操作を行います。
Microsoft Entra ID アプリケーションで ID トークンを有効にするには、次の操作を行います。
- Microsoft Entra ID アプリケーション登録に移動します。
- [Authentication] で、[ID token] チェックボックスをオンにします。
- [Save] をクリックします。
プロバイダを作成するには、次のコマンドを実行します。
gcloud iam workforce-pools providers create-oidc WORKFORCE_PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --display-name="DISPLAY_NAME" \ --description="DESCRIPTION" \ --issuer-uri="ISSUER_URI" \ --client-id="OIDC_CLIENT_ID" \ --web-sso-response-type="id-token" \ --web-sso-assertion-claims-behavior="only-id-token-claims" \ --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --jwk-json-path="JWK_JSON_PATH" \ --location=global
次のように置き換えます。
WORKFORCE_PROVIDER_ID
: 一意の Workforce Identity プール プロバイダ ID。接頭辞gcp-
は予約されているため、Workforce Identity プールまたは Workforce Identity プール プロバイダ ID では使用できません。WORKFORCE_POOL_ID
: IdP を接続する Workforce Identity プール ID。DISPLAY_NAME
: プロバイダのわかりやすい表示名。省略可能です。例:idp-eu-employees
DESCRIPTION
: Workforce プロバイダの説明。省略可能です。例:IdP for Partner Example Organization employees
ISSUER_URI
:https
で始まる有効な URI 形式の OIDC 発行者 URI。例:https://example.com/oidc
注: セキュリティ上の理由により、ISSUER_URI
では HTTPS スキームを使用する必要があります。OIDC_CLIENT_ID
: OIDC IdP に登録されている OIDC クライアント ID。ID は、IdP によって発行された JWT のaud
クレームと一致する必要があります。WEB_SSO_ADDITIONAL_SCOPES
: コンソール(連携)または gcloud CLI ブラウザベースのログイン用に OIDC IdP に送信する任意の追加スコープATTRIBUTE_MAPPING
: 属性マッピング。OIDC 認証を使用した Microsoft Entra ID では、次の属性マッピングをおすすめします。google.subject=assertion.sub, google.groups=assertion.groups, google.display_name=assertion.preferred_username
この例では、IdP 属性
subject
、groups
、preferred_username
を Google Cloud属性google.subject
、google.groups
、google.display_name
にそれぞれマッピングしています。ATTRIBUTE_CONDITION
: 属性条件。たとえば、ipaddr
属性を特定の IP 範囲に制限する場合は、条件assertion.ipaddr.startsWith('98.11.12.')
を設定します。JWK_JSON_PATH
: ローカルにアップロードされた OIDC JWK へのパス(省略可)。このパラメータを指定しない場合、代わりに Google Cloud は IdP の/.well-known/openid-configuration
パスを使用して公開鍵を含む JWK を取得します。ローカルにアップロードされた OIDC JWK の詳細については、OIDC JWK を管理するをご覧ください。
locations/global/workforcePools/enterprise-example-organization-employees
SAML 2.0 Workforce Identity プール プロバイダを作成する
SAML IdP で、 Google CloudWorkforce Identity 連携用の新しいアプリケーションを登録します。
SAML アサーションのオーディエンスを設定します。通常、これは IdP 構成の
SP Entity ID
フィールドです。次の URL に設定する必要があります。https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
コンソールへのユーザー アクセスを設定する場合は、SAML IdP で、リダイレクト URL または Assertion Consumer Service(ACS)の URL フィールドを次の URL に設定します。
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
次のように置き換えます。
WORKFORCE_POOL_ID
: Workforce Identity プールの IDWORKFORCE_PROVIDER_ID
: このドキュメントの後半で作成する Workforce Identity プール プロバイダの ID。
コンソール ログインの構成の詳細については、コンソールへのユーザー アクセスを設定するをご覧ください。
Google Cloudで、IdP の SAML メタデータ ドキュメントを使用して SAML Workforce Identity プール プロバイダを作成します。IdP から SAML メタデータ XML ドキュメントをダウンロードできます。ドキュメントには少なくとも次のものが含まれている必要があります。
- IdP の SAML エンティティ ID。
- IdP のシングル サインオン URL。
- 少なくとも 1 つの署名公開鍵。署名鍵の詳細については、このガイドの後述の鍵の要件をご覧ください。
コンソール
Google Cloud コンソールを使用して SAML プロバイダを構成する手順は次のとおりです。
Google Cloud コンソールで、[Workforce Identity プール] ページに移動します。
[Workforce Identity プール] テーブルで、プロバイダを作成するプールを選択します。
[プロバイダ] テーブルで [プロバイダを追加] をクリックします。
[プロトコルを選択] で、[SAML] を選択します。
[プール プロバイダの作成] で、次の操作を行います。
[名前] にプロバイダの名前を入力します。
省略可: [説明] にプロバイダの説明を入力します。
[IdP メタデータ ファイル(XML)] で、このガイドの前半で生成したメタデータ XML ファイルを選択します。
[有効なプロバイダ] が有効になっていることを確認します。
[続行] をクリックします。
[プロバイダの構成] で、次の操作を行います。
[属性のマッピング] で、
google.subject
の CEL 式を入力します。省略可: 他のマッピングを入力するには、[マッピングを追加] をクリックして他のマッピングを入力します。次に例を示します。
この例では、IdP 属性google.subject=assertion.subject, google.groups=assertion.attributes['https://example.com/aliases'], attribute.costcenter=assertion.attributes.costcenter[0]
assertion.subject
、assertion.attributes['https://example.com/aliases']
、assertion.attributes.costcenter[0]
を Google Cloud属性google.subject
、google.groups
、google.costcenter
にそれぞれマッピングしています。省略可: 属性条件を追加するには、[条件を追加] をクリックし、属性条件を表す CEL 式を入力します。たとえば、
ipaddr
属性を特定の IP 範囲に制限するには、条件assertion.attributes.ipaddr.startsWith('98.11.12.')
を設定します。この例の条件により、98.11.12.
で始まる IP アドレスを持つユーザーだけが、この Workforce プロバイダを使用してログインできます。[続行] をクリックします。
プロバイダを作成するには、[送信] をクリックします。
gcloud
Microsoft Entra ID アプリケーションの SAML メタデータを保存するには、次の操作を行います。
- Microsoft Entra ID アプリケーションに移動します。
- [Single sign-on] をクリックします。
- [SAML 証明書] でフェデレーション メタデータ XML をダウンロードします。
- メタデータをローカル XML ファイルとして保存します。
SAML Workforce Identity プール プロバイダを作成するには、次のコマンドを実行します。
gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \
--workforce-pool="WORKFORCE_POOL_ID" \
--display-name="DISPLAY_NAME" \
--description="DESCRIPTION" \
--idp-metadata-path="XML_METADATA_PATH" \
--attribute-mapping="ATTRIBUTE_MAPPING" \
--attribute-condition="ATTRIBUTE_CONDITION" \
--location=global
次のように置き換えます。
WORKFORCE_PROVIDER_ID
: プロバイダ ID。WORKFORCE_POOL_ID
: Workforce Identity プールの ID。DISPLAY_NAME
: 表示名。DESCRIPTION
: 説明。XML_METADATA_PATH
: SAML ID プロバイダの構成メタデータを含む XML 形式のメタデータ ファイルのパス。ATTRIBUTE_MAPPING
: 属性マッピング。例: この例では、IdP 属性google.subject=assertion.subject, google.groups=assertion.attributes['https://example.com/aliases'], attribute.costcenter=assertion.attributes.costcenter[0]
assertion.subject
、assertion.attributes['https://example.com/aliases']
、assertion.attributes.costcenter[0]
を Google Cloud属性google.subject
、google.groups
、google.costcenter
にそれぞれマッピングしています。詳細については、属性のマッピングをご覧ください。
ATTRIBUTE_CONDITION
: オプションの属性条件。たとえば、ipaddr
属性を特定の IP 範囲に制限するには、条件assertion.attributes.ipaddr.startsWith('98.11.12.')
を設定します。この例の条件により、98.11.12.
で始まる IP アドレスを持つユーザーだけが、この Workforce プロバイダを使用してログインできます。
省略可: IdP から暗号化された SAML アサーションを受け入れる
SAML 2.0 IdP が Workforce Identity 連携で受け入れられる暗号化された SAML アサーションを生成できるようにするには、次のようにします。
- Workforce Identity 連携で、次の操作を行います。
- Workforce Identity プールのプロバイダ用に非対称鍵ペアを作成します。
- 公開鍵を含む証明書ファイルをダウンロードします。
- 公開鍵を使用して、発行する SAML アサーションが暗号化されるように SAML IdP を構成します。
- IdP で次の操作を行います。
- アサーション暗号化(トークン暗号化)を有効にします。
- Workforce Identity 連携で作成した公開鍵をアップロードします。
- IdP が暗号化された SAML アサーションを生成することを確認します。
Workforce Identity 連携の SAML アサーション暗号鍵を作成する
このセクションでは、Workforce Identity 連携で暗号化された SAML アサーションを受け入れる非対称鍵ペアの作成について説明します。
Google Cloud は秘密鍵を使用して、IdP が発行する SAML アサーションを復号します。SAML 暗号化で使用する非対称鍵ペアを作成するには、次のコマンドを実行します。詳細については、サポートされている SAML 暗号化アルゴリズムをご覧ください。
gcloud iam workforce-pools providers keys create KEY_ID \ --workforce-pool WORKFORCE_POOL_ID \ --provider WORKFORCE_PROVIDER_ID \ --location global \ --use encryption \ --spec KEY_SPECIFICATION
次のように置き換えます。
KEY_ID
: 任意の鍵名WORKFORCE_POOL_ID
: プール IDWORKFORCE_PROVIDER_ID
: Workforce Identity プール プロバイダ ID-
KEY_SPECIFICATION
: 鍵仕様(rsa-2048
、rsa-3072
、rsa-4096
のいずれか)。
鍵ペアを作成したら、次のコマンドを実行して、公開鍵を証明書ファイルにダウンロードします。秘密鍵にアクセスできるのは Workforce Identity 連携だけです。
gcloud iam workforce-pools providers keys describe KEY_ID \ --workforce-pool WORKFORCE_POOL_ID \ --provider WORKFORCE_PROVIDER_ID \ --location global \ --format "value(keyData.key)" \ > CERTIFICATE_PATH
次のように置き換えます。
KEY_ID
: 鍵名WORKFORCE_POOL_ID
: プール IDWORKFORCE_PROVIDER_ID
: Workforce Identity プール プロバイダ IDCERTIFICATE_PATH
: 証明書を書き込むパス(例:saml-certificate.cer
やsaml-certificate.pem
)
暗号化された SAML アサーションを発行するように SAML 2.0 準拠の IdP を構成する
SAML トークンを暗号化するように Microsoft Entra ID を構成します。Azure Active Directory SAML トークンの暗号化を構成するをご覧ください。
SAML アサーションを暗号化するように IdP を構成したら、IdP によって生成されるアサーションが実際に暗号化されていることを確認することをおすすめします。SAML アサーションの暗号化が構成されている場合でも、Workforce Identity 連携は平文のアサーションを処理できます。
Workforce Identity 連携の暗号鍵を削除する
SAML 暗号鍵を削除するには、次のコマンドを実行します。gcloud iam workforce-pools providers keys delete KEY_ID \ --workforce-pool WORKFORCE_POOL_ID \ --provider WORKFORCE_PROVIDER_ID \ --location global
次のように置き換えます。
KEY_ID
: 鍵名WORKFORCE_POOL_ID
: プール IDWORKFORCE_PROVIDER_ID
: Workforce Identity プール プロバイダ ID
サポートされている SAML 暗号化アルゴリズム
Workforce Identity 連携は、次の主要なトランスポート アルゴリズムをサポートしています。
- http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p
- http://www.w3.org/2009/xmlenc11#rsa-oaep"
- http://www.w3.org/2001/04/xmlenc#rsa-1_5"
Workforce Identity 連携は、次のブロック暗号化アルゴリズムをサポートしています。
Google Cloud リソースへのアクセスを管理する
このセクションでは、例として、Workforce Identity 連携ユーザーによるGoogle Cloud リソースへのアクセスを管理する方法を説明します。
この例では、サンプル プロジェクトに対して Identity and Access Management(IAM)のロールを付与します。これにより、ユーザーはログインしてこのプロジェクトを使用し、 Google Cloud プロダクトにアクセスできます。
単一の ID、ID のグループ、プール全体で IAM ロールを管理できます。詳細については、IAM ポリシーで Workforce Identity プールユーザーを表すをご覧ください。
単一の ID の場合
プロジェクト TEST_PROJECT_ID
の単一の ID にストレージ管理者(roles/storage.admin
)ロールを付与するには、次のコマンドを実行します。
gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
--role="roles/storage.admin" \
--member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
次のように置き換えます。
TEST_PROJECT_ID
: テスト プロジェクト IDWORKFORCE_POOL_ID
: Workforce Identity プールの IDSUBJECT_VALUE
: ユーザー ID
マッピングされた部門属性の使用
プロジェクト TEST_PROJECT_ID
の特定の部門内のすべての ID にストレージ管理者ロール(roles/storage.admin
)を付与するには、次のコマンドを実行します。
gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
--role="roles/storage.admin" \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.department/DEPARTMENT_VALUE"
次のように置き換えます。
TEST_PROJECT_ID
: テスト プロジェクト IDWORKFORCE_POOL_ID
: Workforce Identity プールの IDDEPARTMENT_VALUE
: マッピングされたattribute.department
値
マッピングされたグループの使用
プロジェクト TEST_PROJECT_ID
のグループ GROUP_ID
内のすべての ID にストレージ管理者ロール(roles/storage.admin
)を付与するには、次のコマンドを実行します。
gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
--role="roles/storage.admin" \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
次のように置き換えます。
TEST_PROJECT_ID
: テスト プロジェクト IDWORKFORCE_POOL_ID
: Workforce Identity プールの IDGROUP_ID
: マッピングされたgoogle.groups
クレーム内のグループ。
ログインしてアクセスをテストする
このセクションでは、Workforce Identity プールユーザーとしてログインし、 Google Cloud リソースにアクセスできることを確認します。
ログイン
このセクションでは、連携ユーザーとしてログインし、Google Cloud リソースにアクセスする方法について説明します。
コンソール(連携)ログイン
Google Cloud Workforce Identity 連携コンソール(コンソール(連携))にログインするには、次の操作を行います。
-
コンソール(連携)のログインページに移動します。
- プロバイダ名を入力します。形式は次のとおりです。
locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
プロンプトが表示されたら、Microsoft Entra ID でユーザー認証情報を入力します。
IdP 開始のログインを始める場合は、リレー URL に https://console.cloud.google/
を使用します。
gcloud CLI ブラウザベースのログイン
ブラウザベースのログインフローを使用して gcloud CLI にログインする方法は次のとおりです。
構成ファイルを作成する
ログイン構成ファイルを作成するには、次のコマンドを実行します。必要に応じて、--activate
フラグを追加することで、このファイルを gcloud CLI のデフォルトとして有効にできます。その後、構成ファイルのパスを毎回指定しなくても gcloud auth login
を実行できます。
gcloud iam workforce-pools create-login-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID \ --output-file=LOGIN_CONFIG_FILE_PATH
次のように置き換えます。
WORKFORCE_POOL_ID
: Workforce プール IDPROVIDER_ID
: プロバイダ IDLOGIN_CONFIG_FILE_PATH
: 指定した構成ファイルのパス(例:login.json
)
このファイルには、gcloud CLI でブラウザベースの認証フローを有効にし、Workforce Identity プール プロバイダで構成された IdP にオーディエンスを設定するために使用するエンドポイントが含まれています。このファイルに機密情報は含まれていません。
出力は次のようになります。
{ "type": "external_account_authorized_user_login_config", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "auth_url": "https://auth.cloud.google/authorize", "token_url": "https://sts.googleapis.com/v1/oauthtoken", "token_info_url": "https://googleapis.com/v1/introspect", }
gcloud auth login
がこの構成ファイルを自動的に使用しないようにするには、gcloud config unset auth/login_config_file
を実行して設定を解除します。
ブラウザベースの認証を使用してログインする
ブラウザベースのログイン認証を使用して認証するには、次のいずれかの方法を使用します。
-
構成ファイルの作成時に
--activate
フラグを使用した場合、またはgcloud config set auth/login_config_file
で構成ファイルを有効にした場合、gcloud CLI は構成ファイルを自動的に使用します。gcloud auth login
-
構成ファイルの場所を指定してログインするには、次のコマンドを実行します。
gcloud auth login --login-config=LOGIN_CONFIG_FILE_PATH
-
環境変数を使用して構成ファイルの場所を指定するには、
CLOUDSDK_AUTH_LOGIN_CONFIG_FILE
を構成パスに設定します。
ブラウザベースのログインを無効にする
ログイン構成ファイルの使用を停止するには、次の手順を行います。
-
構成ファイルの作成時に
--activate
フラグを使用した場合、またはgcloud config set auth/login_config_file
で構成ファイルを有効にした場合は、次のコマンドを実行して設定を解除する必要があります。gcloud config unset auth/login_config_file
-
CLOUDSDK_AUTH_LOGIN_CONFIG_FILE
環境変数が設定されている場合は、クリアします。
gcloud CLI ヘッドレス ログイン
gcloud CLI を使用して Microsoft Entra ID にログインする手順は次のとおりです。
OIDC
ログイン リクエストを送信するの手順に沿って操作します。OIDC を使用して、Microsoft Entra ID でユーザーをアプリケーションにログインさせます。
リダイレクト URL の
id_token
パラメータから ID トークンをコピーし、ローカルマシン上の安全な場所にあるファイルに保存します。後のステップで、PATH_TO_OIDC_ID_TOKEN をこのファイルのパスに設定します。次のコマンドを実行して、この手順の後半の例に似た構成ファイルを生成します。
gcloud iam workforce-pools create-cred-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --subject-token-type=urn:ietf:params:oauth:token-type:id_token \ --credential-source-file=PATH_TO_OIDC_ID_TOKEN \ --workforce-pool-user-project=WORKFORCE_POOL_USER_PROJECT \ --output-file=config.json
次のように置き換えます。
WORKFORCE_POOL_ID
: Workforce Identity プールの ID。WORKFORCE_PROVIDER_ID
: Workforce Identity プール プロバイダ ID。PATH_TO_OIDC_ID_TOKEN
: IdP トークンが保存されているファイルのパス。WORKFORCE_POOL_USER_PROJECT
: 割り当てと課金に使用されるプロジェクト番号または ID。プリンシパルには、このプロジェクトに対するserviceusage.services.use
権限が必要です。
コマンドが完了すると、Microsoft Entra ID によって次の構成ファイルが作成されます。
{ "type": "external_account", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "subject_token_type": "urn:ietf:params:oauth:token-type:id_token", "token_url": "https://sts.googleapis.com/v1/token", "workforce_pool_user_project": "WORKFORCE_POOL_USER_PROJECT", "credential_source": { "file": "PATH_TO_OIDC_CREDENTIALS" } }
gcloud CLI を開き、次のコマンドを実行します。
gcloud auth login --cred-file=PATH_TO_OIDC_CREDENTIALS
PATH_TO_OIDC_CREDENTIALS は、前の手順の出力ファイルのパスに置き換えます。
gcloud CLI は、認証情報を Security Token Service エンドポイントに透過的に送信します。これは、エンドポイントで一時的な Google Cloud アクセス トークンと交換されます。
これで、Google Cloudに gcloud CLI コマンドを実行できるようになりました。
SAML
Microsoft Entra ID アプリケーションにユーザーをログインさせ、SAML レスポンスを取得します。
Microsoft Entra ID から返された SAML レスポンスをローカルマシンの安全な場所に保存し、次のようにパスを保存します。
SAML_ASSERTION_PATH=SAML_ASSERTION_PATH
次のコマンドを実行して、認証情報の構成ファイルを生成します。
gcloud iam workforce-pools create-cred-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --subject-token-type=urn:ietf:params:oauth:token-type:saml2 \ --credential-source-file=SAML_ASSERTION_PATH \ --workforce-pool-user-project=PROJECT_ID \ --output-file=config.json
次のように置き換えます。
WORKFORCE_PROVIDER_ID
: このガイドの前半で作成した Workforce Identity プール プロバイダの ID。WORKFORCE_POOL_ID
: このガイドの前半で作成した Workforce Identity プールの ID。SAML_ASSERTION_PATH
: SAML アサーション ファイルのパスPROJECT_ID
: プロジェクト ID
生成された構成ファイルは次のようになります。
{ "type": "external_account", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "subject_token_type": "urn:ietf:params:oauth:token-type:saml2", "token_url": "https://sts.googleapis.com/v1/token", "credential_source": { "file": "SAML_ASSERTION_PATH" }, "workforce_pool_user_project": "PROJECT_ID" }
Workforce Identity 連携のトークン交換を使用して gcloud CLI にログインするには、次のコマンドを実行します。
gcloud auth login --cred-file=config.json
gcloud CLI は、Microsoft Entra ID の認証情報を一時的な Google Cloud アクセス トークンと透過的に交換します。アクセス トークンを使用すると、 Google Cloudにアクセスできます。
次のような出力が表示されます。
Authenticated with external account user credentials for: [principal://iam.googleapis.com/locations/global/workforcePools/
WORKFORCE_POOL_ID
/subject/USER_ID
].認証されたアカウントとアクティブなアカウントを一覧表示するには、次のコマンドを実行します。
gcloud auth list
テストアクセス
これで、Workforce Identity 連携をサポートし、アクセス権が付与されている Google Cloud プロダクトにアクセスできるようになりました。このドキュメントの前半で、プロジェクト TEST_PROJECT_ID
の gcloud projects add-iam-policy-binding
で指定したグループ ID 内のすべての ID にストレージ管理者ロール(roles/storage.admin
)を付与しました。
ここでは、Cloud Storage バケットを一覧取得して、そのバケットにアクセスできるかどうかをテストします。
コンソール(連携)
コンソール(連携)を使用してアクセス権があることを確認するには、次の操作を行います。
Cloud Storage ページに移動します。
TEST_PROJECT_ID
の既存バケットの一覧が表示できることを確認します。
gcloud CLI
gcloud CLI を使用してアクセス権があることを確認するには、アクセス権のあるプロジェクトの Cloud Storage バケットとオブジェクトを一覧取得します。これを行うには、次のコマンドを実行します。プリンシパルには、指定したプロジェクトに対する serviceusage.services.use
権限が必要です。
gcloud storage ls --project="TEST_PROJECT_ID"
ユーザーを削除する
Workforce Identity 連携は、連携ユーザー ID のユーザー メタデータとリソースを作成します。IdP でユーザーを削除する場合は、 Google Cloudでこれらのリソースも明示的に削除する必要があります。詳しくは、Workforce Identity 連携ユーザーとそのデータを削除するをご覧ください。
削除されたユーザーにリソースが引き続き関連付けられていることがあります。これは、ユーザーのメタデータとリソースの削除には長時間実行オペレーションが必要になるためです。ユーザー ID の削除を開始した後、削除前にユーザーが開始したプロセスは、プロセスが完了するかキャンセルされるまで引き続き実行されます。
次のステップ
- Workforce Identity 連携ユーザーとそのデータを削除する
- Workforce Identity 連携をサポートする Google Cloud プロダクトを確認する
- コンソール(連携)へのユーザー アクセスを設定する