このドキュメントでは、PingOne Advanced Identity Cloud(AIC)を ID プロバイダ(IdP)として Workforce Identity 連携を構成し、Google Cloudへのアクセスを管理する方法について説明します。PingOne AIC IdP を構成すると、連携ユーザーは SAML 2.0 プロトコルを使用して、Workforce Identity 連携をサポートする Google Cloud サービスにアクセスできるようになります。
始める前に
- Google Cloud 組織を設定していることを確認します。
-
Google Cloud CLI をインストールし、 フェデレーション ID を使用して gcloud CLI にログインします。ログイン後、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init - ログインの場合、IdP は署名付き認証情報を提供する必要があります。SAML IdP レスポンスは署名されている必要があります。
- 組織またはGoogle Cloud プロダクトの変更に関する重要な情報を受け取るには、重要な連絡先を指定する必要があります。詳細については、Workforce Identity 連携の概要をご覧ください。
費用
Workforce Identity 連携は、無料の機能として利用できます。ただし、Workforce Identity 連携の詳細な監査ロギングでは Cloud Logging が使用されます。Logging の料金については、Google Cloud Observability の料金をご覧ください。
必要なロール
Workforce Identity 連携の構成に必要な権限を取得するには、組織に対する IAM Workforce プール管理者 (roles/iam.workforcePoolAdmin)の IAM ロールを付与するように管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
本番環境ではなく、開発環境またはテスト環境で権限を構成する場合は、Identity and Access Management(IAM)オーナー(roles/owner)の基本ロールを付与できます。このロールには、Workforce Identity 連携の権限も含まれています。
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 は、 Google Cloud内のすべての Workforce Identity プールでグローバルに一意である必要があります。ID の形式については、API ドキュメントのクエリ パラメータ セクションをご覧ください。ORGANIZATION_ID: Workforce Identity プールの Google Cloud 組織の組織 ID。Workforce Identity プールは、組織内のすべてのプロジェクトとフォルダで使用できます。DISPLAY_NAME: 省略可。Workforce Identity プールの表示名。DESCRIPTION: 省略可。Workforce Identity プールの説明。SESSION_DURATION: 省略可。セッション継続時間。sを付加した数値で表します(例:3600s)。セッション継続時間は、この Workforce プールの Google Cloud アクセス トークン、コンソール(連携)ログイン セッション、gcloud CLI ログイン セッションの有効期間を決定します。セッション継続時間のデフォルトは 1 時間(3,600 秒)です。セッション継続時間は 15 分(900 秒)~12 時間(43,200 秒)の範囲で指定する必要があります。
コンソール
Workforce Identity プールを作成するには、次の操作を行います。
Google Cloud コンソールで、[Workforce Identity プール] ページに移動します。
Workforce Identity プールの組織を選択します。Workforce Identity プールは、組織内のすべてのプロジェクトとフォルダで使用できます。
[プールを作成] をクリックして、次の操作を行います。
[名前] フィールドに、プールの表示名を入力します。プール ID は、入力した名前から自動的に取得され、[名前] フィールドの下に表示されます。プール ID を更新するには、プール ID の横にある [編集] をクリックします。
省略可: [説明] にプールの説明を入力します。
Workforce Identity プールを作成するには、[次へ] をクリックします。
Workforce Identity プールのセッション継続時間は、デフォルトで 1 時間(3,600 秒)に設定されます。セッション継続時間は、この Workforce プールの Google Cloud アクセス トークン、コンソール(連携)、gcloud CLI ログイン セッションの有効期間を決定します。プールを作成したら、プールを更新してカスタムのセッション継続時間を設定できます。セッション継続時間は 15 分(900 秒)から 12 時間(43,200 秒)にする必要があります。
PingOne AIC アプリケーションを作成する
このセクションでは、PingOne AIC アプリケーション統合を作成する方法について説明します。
ホスト型 IdP を作成する
- ネイティブ コンソール > アクセス管理で、レルム > REALM_NAME > ダッシュボードに移動し、[SAML アプリケーション] をクリックします。
- [Add Entity Provider > Hosted] をクリックします。
エンティティ ID を入力します。後で使用するために、この値を記録しておきます。
- [Entity Provider Base URL] の値が正しいことを確認します。Advanced Identity Cloud は、SAML 2.0 関連のすべてのエンドポイントにこの値を使用します。
- [Meta Aliases] セクションで、[Identity Provider Meta Alias] プロパティに URL フレンドリな値を指定します。このエイリアスは、信頼の輪の中で一意である必要があります。
- [作成] をクリックします。
- [アサーション処理] タブの [属性マッパー] セクションで、SAML 属性名をローカル属性名にマッピングします。SAML 属性名は、アサーションで使用される名前です。
- マッピングごとに [追加] または [更新] をクリックします。
- [変更を保存] をクリックします。
属性を使用する
このセクションでは、SAML アサーションの属性を使用する方法について説明します。
次の例では、SAML アサーションの属性がローカル属性にマッピングされています。
| SAML 属性 | ローカル属性 |
|---|---|
IDPEmail |
mail |
FirstName |
givenName |
groups |
groups |
属性マッピング セクションで必要な属性を設定します。これらの属性は、このガイドの後半で Workforce Identity プール プロバイダを作成するときにマッピングします。
プロバイダ メタデータをエクスポートする
ホスト型プロバイダの SAML 2.0 メタデータには、次のいずれかの方法でアクセスできます。
REST 経由
次のコマンドを実行します。
curl --output METADATA_XML \ "https://TENANT_ENV_FQDN/am/ExportSamlMetadata?entityid=ENTITY_ID&realm=/REALM"ブラウザの場合
ブラウザでテナント環境のメタデータ URL を開き、XML ファイルをダウンロードします。
https://TENANT_ENV_FQDN/am/ExportSamlMetadata?entityid=ENTITY_ID&realm=/REALM
- XML ファイルをローカルマシンに保存します。
Google をリモート SP としてインポートする
Google Cloud SP メタデータ XML を準備します。次のテンプレートを使用し、プレースホルダの値を置き換えます。
<?xml version="1.0" encoding="UTF-8"?> <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID"> <md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat> <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat> <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://auth./signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID" index="0" isDefault="true"/> </md:SPSSODescriptor> </md:EntityDescriptor>次のいずれかの方法でメタデータをインポートします。
コンソールで
- PingOne AIC 管理コンソールで、[SAML Applications] に移動します。
- [Add Entity Provider> Remote] をクリックします。
- 作成した Google Cloud SP メタデータ XML ファイルをアップロードします。
- [作成] をクリックします。
REST 経由
- XML メタデータを base64url でエンコードされた文字列に変換します。
- アクセス トークンを取得する。
次のコマンドを実行します。
curl --request POST \ --header 'authorization: Bearer ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --header 'Accept-API-Version: resource=1.0' \ --data-raw '{"standardMetadata": "BASE64URL_ENCODED_METADATA"}' \ 'https://TENANT_ENV_FQDN/am/json/realms/root/realms/alpha/realm-config/saml2/remote?_action=importEntity'
信頼の輪(CoT)を作成する
- [Realms] > [REALM_NAME] > [Applications] > [Federation] > [Circles of Trust] に移動します。
- [信頼の輪を追加] をクリックします。
- 名前を入力して [Create] をクリックします。
- [信頼の輪] ページの [エンティティ プロバイダ] プロパティで、ホストされている IdP と Google Cloud リモート SP を選択します。
- [変更を保存] をクリックします。
PingOne AIC Workforce Identity プール プロバイダを作成する
このセクションでは、IdP ユーザーが Google Cloudにアクセスできるように Workforce Identity プール プロバイダを作成する方法について説明します。SAML プロトコルを使用するようにプロバイダを構成できます。
SAML Workforce Identity プール プロバイダを作成する
SAML Workforce Identity プール プロバイダを作成するには、ID プロバイダのメタデータに少なくとも SAML エンティティ ID、シングル サインオン URL、署名公開鍵が 1 つ含まれていることを確認する必要があります。手順は次のとおりです。
gcloud
PingOne AIC アプリから SAML メタデータを保存します。
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: 説明。