このドキュメントでは、Workforce Identity プールで SCIM テナントを構成する方法について説明します。SCIM の詳細については、Workforce Identity 連携の SCIM プロビジョニングをご覧ください。
各 Workforce Identity プールで 1 つの SCIM テナントのみがサポートされます。すでに SCIM テナントが存在するプールに新しい SCIM テナントを構成するには、まず既存のテナントを完全に削除する必要があります。
SCIM テナントの --claim-mapping フラグに使用できるのは、特定の Common Expression Language(CEL)式のみです。サポートされている式については、トークンと SCIM 属性をマッピングするをご覧ください。
System for Cross-domain Identity Management(SCIM)を構成する手順は次のとおりです。
- で SCIM テナントとトークンを構成する Google Cloud
- OIDC または SAML IdP で SCIM を構成する
- プロバイダを更新して SCIM を有効にする
- SCIM 同期を確認する
で SCIM テナントとトークンを構成する Google Cloud
Google Cloudで SCIM テナントを構成する手順は次のとおりです。
-
SCIM テナントを作成します。
gcloud iam workforce-pools providers scim-tenants create SCIM_TENANT_ID \ --workforce-pool="WORKFORCE_POOL_ID" \ --provider="PROVIDER_ID" \ --display-name="SCIM_TENANT_DISPLAY_NAME" \ --description="SCIM_TENANT_DESCRIPTION" \ --claim-mapping="CLAIM_MAPPING" \ --location="global"次のように置き換えます。
SCIM_TENANT_ID: SCIM テナントの ID。WORKFORCE_POOL_ID: このドキュメントで作成した Workforce プールの ID。PROVIDER_ID: このドキュメントで作成した Workforce Identity プール プロバイダの ID。SCIM_TENANT_DISPLAY_NAME: SCIM テナントの表示名。SCIM_TENANT_DESCRIPTION: SCIM テナントの説明。CLAIM_MAPPING: 属性マッピングのカンマ区切りのリスト。マッピング属性の拡張リストについては、トークンと SCIM 属性をマッピングするをご覧ください。Gemini Enterprise では、次のマッピングをおすすめします。google.subject=user.emails[0].value.lowerAscii(),google.group=group.externalIdSCIM テナントでマッピングする
google.subject属性は、--attribute-mappingフラグを使用して、Workforce Identity プール プロバイダのgoogle.subject属性でマッピングされる同じ ID を一意に参照する必要があります。 SCIM テナントの作成後に、クレーム マッピングを更新することはできません。置き換えるには、SCIM テナントを完全に削除して、すぐに新しいテナントを作成します。SCIM を使用する際の考慮事項の詳細については、SCIM のサポートをご覧ください。
-
コマンドが完了したら、次の操作を行います。
-
出力の
baseUriフィールドに、https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID形式の URI 全体を保存します。この URI を IdP に提供する必要があります。 -
または、URI から
SCIM_TENANT_UIDのみを保存します。 この UID は、このドキュメントで後述する SCIM テナントに IAM 許可ポリシーを設定するために必要です。
-
出力の
-
SCIM トークンを作成します。
gcloud iam workforce-pools providers scim-tenants tokens create SCIM_TOKEN_ID \ --display-name DISPLAY_NAME \ --scim-tenant SCIM_TENANT_ID \ --workforce-pool WORKFORCE_POOL_ID \ --provider PROVIDER_ID \ --location global次のように置き換えます。
SCIM_TOKEN_ID: SCIM トークンの IDDISPLAY_NAME: SCIM トークンの表示名WORKFORCE_POOL_ID: Workforce プールの IDSCIM_TENANT_ID: SCIM テナントの IDPROVIDER_ID: Workload Identity プール プロバイダの ID
-
gcloud iam workforce-pools providers scim-tenants tokens createコマンドが完了したら、次の操作を行います。-
出力で、
SCIM_TOKENの値をsecurityTokenフィールドに保存します。このセキュリティ トークンを IdP に提供する必要があります。セキュリティ トークンはこの出力にのみ表示されます。 紛失した場合は、新しい SCIM トークンを作成する必要があります。 -
SCIM_TOKENが組織のポリシーによって拒否されているかどうかを確認するには、次のコマンドを実行します。curl -v -H "Authorization: Bearer SCIM_TOKEN" https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users
コマンドが権限関連のエラーで失敗した場合は、後のステップで説明する
gcloud organizations add-iam-policy-bindingを実行します。コマンドが成功した場合は、そのステップをスキップできます。
-
-
SCIM テナントとトークンに IAM 許可ポリシーを設定します。前のステップの
curlコマンド が権限関連のエラーで失敗した場合は、次のコマンドを実行する必要があります:gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member=serviceAccount:SERVICE_AGENT_EMAIL \ --role roles/iam.scimSyncer次のように置き換えます。
- ORGANIZATION_ID: 組織の ID。
- SERVICE_AGENT_EMAIL: サービス エージェントのメールアドレス。メールアドレスは
o-ORGANIZATION_ID-SCIM_TENANT_UID@gcp-sa-iamscim.iam.gserviceaccount.comの形式で指定します。SCIM_TENANT_UID は、SCIM テナントの作成時に返されます。
IdP でグループをプロビジョニングする場合は、displayName フィールドで指定された各グループの表示名が SCIM テナント内で一意であることを確認してください。Microsoft Entra ID のグループと SCIM の詳細については、グループをご覧ください。
OIDC または SAML IdP で SCIM を構成する
IdP のドキュメントの説明に従って IdP で SCIM を構成します。前の手順で取得した SCIM URL と SCIM トークンを使用します。
プロバイダを更新して SCIM を有効にする
プロバイダの SCIM を有効にするには、次の操作を行います。
OIDC
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=LOCATION \
--scim-usage=enabled-for-groups
次のように置き換えます。
PROVIDER_ID: Workload Identity プール プロバイダの IDWORKFORCE_POOL_ID: Workforce プールの IDLOCATION: Workforce プールのロケーション
SAML
gcloud iam workforce-pools providers update-saml PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=LOCATION \
--scim-usage=enabled-for-groups
次のように置き換えます。
PROVIDER_ID: Workload Identity プール プロバイダの IDWORKFORCE_POOL_ID: Workforce プールの IDLOCATION: Workforce プールのロケーション
SCIM 同期を確認するには、SCIM 同期を確認するをご覧ください。
トークンと SCIM 属性をマッピングする
Workforce Identity プール プロバイダと、プロバイダ用に構成された SCIM
テナントの両方で、属性を一貫してマッピングする必要があります。Workforce Identity プール プロバイダには
--attribute-mapping フラグを使用し、SCIM テナントには --claim-mapping フラグを使用します。ユーザーの
google.subject にマッピングされる IdP 属性は、トークンまたは SCIM マッピングで定義されているかどうかにかかわらず、同じ ID
を一意に参照する必要があります。SCIM を使用する際の属性のマッピングの詳細については、SCIM のサポート セクションをご覧ください。
次の表は、トークン クレームの属性と SCIM 属性をマッピングする方法を示しています。
| Google の属性 | Workforce Identity プール プロバイダのマッピング | SCIM テナントのマッピング |
|---|---|---|
google.subject |
assertion.sub |
user.externalId |
google.group プロバイダが --scim-usage=enabled-for-groups で更新されていることを確認します |
N/A |
group.externalId |
SCIM 同期を確認する
SCIM を構成したら、curl を使用して、ユーザーとグループが Google Cloudに正しく同期されていることを確認できます。これらのコマンドには、有効な SCIM トークンと SCIM テナント ID が必要です。
ユーザーの同期を確認する
ユーザーが正しく同期されたことを確認するには、次のフィルタを使用してユーザーの userName を検索します。
curl -H "Authorization: Bearer SCIM_TOKEN" \ "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users?filter=userName%20eq%20%22USER_NAME%22"
レスポンスの例:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "USER_ID",
"userName": "USER_NAME",
...
}
]
}
グループの同期を確認する
グループが正しく同期されたことを確認するには、次のフィルタを使用してグループの displayName を検索します。
curl -H "Authorization: Bearer SCIM_TOKEN" \ "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=displayName%20eq%20%22GROUP_NAME%22"
レスポンスの例:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "GROUP_ID",
"displayName": "GROUP_NAME",
...
}
]
}
グループ メンバーシップを確認する
特定のユーザーがグループのメンバーであるかどうかを確認するには、グループ ID とユーザー ID の両方を指定するフィルタを使用します。
curl -H "Authorization: Bearer SCIM_TOKEN" \ "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=id%20eq%20%22GROUP_ID%22%20and%20members%20eq%20%22USER_ID%22"
ユーザーがメンバーの場合のレスポンスの例:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [
{
"id": "GROUP_ID",
"displayName": "GROUP_NAME",
...
}
]
}
ユーザーがメンバーでない場合のレスポンスの例:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 0,
"Resources": []
}
注: GROUP_ID と USER_ID を取得するには、まず displayName フィルタと userName
フィルタを使用してグループとユーザーを検索します。ID はレスポンスの id フィールドに返されます。SCIM_TOKEN、SCIM_TENANT_UID、USER_NAME、GROUP_NAME、GROUP_ID、USER_ID は実際の値に置き換えてください。
SCIM テナントを強制削除する
SCIM テナントを強制削除する手順は次のとおりです。
- プロバイダに
--scim-usage=enabled-for-groupsが設定されている場合は、プロバイダの構成から無効にします。gcloud iam workforce-pools providers update-oidc --provider=PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --location= global --scim-usage=SCIM_USAGE_UNSPECIFIED次のように置き換えます。
PROVIDER_ID: Workload Identity プール プロバイダの IDWORKFORCE_POOL_ID: Workforce プールの ID
- SCIM テナントを削除します。
gcloud iam workforce-pools providers scim-tenants delete SCIM_TENANT_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --provider=PROVIDER_ID \ --hard-delete \ --location=global次のように置き換えます。
SCIM_TENANT_ID: 削除する SCIM テナントの IDWORKFORCE_POOL_ID: Workforce プールの IDPROVIDER_ID: Workload Identity プール プロバイダの ID
次のステップ
- Workforce Identity 連携ユーザーとそのデータを削除する
- Workforce Identity 連携をサポートする Google Cloud プロダクトを確認する
- コンソール(連携)へのユーザー アクセスを設定する