Workforce Identity 連携の SCIM プロビジョニング

ID プロバイダ(IdP)が System for Cross-domain Identity Management(SCIM)をサポートしている場合は、 でグループをプロビジョニングして管理するように IdP を構成できます Google Cloud。

機能

Workforce Identity 連携の SCIM サポートには、次の機能があります。

  • ID の同期: IdP からユーザーデータの読み取り専用コピーを同期して 、ユーザー プロパティとメンバーシップの全体像を把握します Google Cloud。

  • グループのフラット化: SCIM は IdP からグループを処理し、ユーザーの直接的 および間接的(ネストされた)メンバーシップをすべてフラット化して、 Google Cloud グループ メンバーシップ サービス(GMS)に同期します。IAM は、これらのフラット化されたグループをポリシー チェックに使用し、IdP トークンでよく見られるサイズ制限を回避します。

  • Gemini Enterprise との統合: SCIM テナントは、Gemini Enterprise での共有をサポートしています。SCIM テナントでは、NotebookLM Enterprise 内でのノートブックの共有に関連する次の 2 つの機能が有効になります。

    • メールアドレスとグループのオートコンプリート

    • オブジェクト ID(UUID)ではなくグループ名を使用する

    詳細については、ノートブックを グループと共有するをご覧ください。

考慮事項

Workforce Identity 連携の SCIM サポートを使用する場合は、次の点に注意してください。

  • SCIM テナントを構成する前に、Workforce Identity プールとプロバイダを設定する必要があります。
  • 各 Workforce Identity プールで 1 つの SCIM テナントのみがサポートされます。SCIM テナントは特定の Workforce Identity プール プロバイダの下に作成されるため、そのプロバイダのみがグループに SCIM を使用できます。同じプール内の他のプロバイダで SCIM の使用(--scim-usage=enabled-for-groups または --scim-usage=enabled-for-users-groups)を有効にすることはできません。同じ Workforce Identity プールで新しい SCIM テナントを構成するには、まず既存のテナントを削除する必要があります。SCIM テナントを削除するには、次のいずれかの方法を使用します。
    • 削除(復元可能)(デフォルト): SCIM テナントを削除すると、30 日間の削除(復元可能)期間が開始されます。この間、当該テナントは非表示になり、使用できなくなります。また、同じ Workforce Identity プールに新しい SCIM テナントを作成することもできません。
    • 削除(復元不可): SCIM テナントを直ちに完全に削除するには、--hard-delete フラグを指定して削除コマンドを実行します。この操作は元に戻すことができません。削除の完了後すぐに、同じ Workforce Identity プールに新しい SCIM テナントを作成できます。あるいは、新しい Workforce Identity プールを作成して新しい SCIM テナントを追加することも、以前に SCIM テナントが構成されていない Workforce Identity プールを使用することもできます。
  • SCIM を使用する場合は、Workforce Identity プール プロバイダと SCIM テナントの両方で属性をマッピングします。google.subject 属性では、同じ ID を一意に参照する必要があります。google.subject は、Workforce Identity プール プロバイダでは --attribute-mapping フラグ、SCIM テナントでは --claim-mapping フラグを使用して指定します。一意でない ID 値をマッピングすると、 Google Cloud で異なる IdP ID が 同じ ID として扱われる可能性があります。その結果、1 つのユーザーまたはグループ ID に付与されたアクセス権が他の ID にも適用される可能性があり、1 つの ID のアクセス権を取り消しても、すべての ID のアクセス権が取り消されず、一部の ID にアクセス権が残る可能性があります。
  • SCIM を使用してグループをマッピングするには、SCIM テナントがアタッチされている Workforce Identity プール プロバイダで --scim-usage=enabled-for-groups(または --scim-usage=enabled-for-users-groups)を設定します。SCIM を使用してグループをマッピングすると、そのプロバイダで定義されているグループ マッピングは無視され、SCIM で管理されるグループが優先されます。SCIM で管理されているグループを参照するとき、マッピングされた 属性は google.group ではなく google.groups です。google.groups は、トークンでマッピングされたグループのみを参照します。SCIM テナントがアタッチされていないプロバイダで SCIM の使用を有効にすると、その プロバイダのパスに SCIM テナントが見つからないため、その プロバイダを介したログイン試行はランタイムで失敗します。 Google Cloud
  • 一意性の適用: Google Cloud は、SCIM テナントの google.subject(ユーザー)と google.group(グループ)にマッピングされた属性の 一意性を検証して適用します。IdP によってプロビジョニングされたマッピングされた属性が、同期中に google.subject または google.group の値の重複を引き起こした場合、プロビジョニングは HTTP 409 Conflict エラーで失敗します。マッピングされた属性が null または空に評価されると、プロビジョニングは HTTP 400 Bad Request エラーで失敗します。
  • SCIM を使用する場合、--attribute-mapping でマッピングされたトークンベースの属性は、引き続き認証とプリンシパル ID で使用できます。
  • Microsoft Entra ID の構成で、Gemini Enterprise で人が読めるグループ名を有効にするには、SCIM を使用します。
  • SCIM API(iamscim.googleapis.com)には、標準の IAM リソース API の割り当てとは異なるレートの割り当てが適用されます。デフォルトでは、書き込みリクエストと読み取りリクエストは、組織ごとに 1 分あたり 1 つの SCIM テナントあたり 3,000 リクエストに制限されます。詳細については、 割り当てと上限をご覧ください。

OIDC プロバイダと SAML プロバイダを SCIM 構成にマッピングする

Workforce Identity プール プロバイダ構成(--attribute-mapping)の属性マッピングと、SCIM テナント(--claim-mapping)のクレーム マッピングの間には整合性が必要です。google.subject(ユーザー用)の入力に使用される基盤となる IdP 属性は、トークン クレームから読み取られるか SCIM 属性から読み取られるかにかかわらず、同じである必要があります。

これらのマッピングに一貫性がない場合、ユーザーはログインできる可能性がありますが、SCIM でプロビジョニングされたグループのメンバーとして認識されません。たとえば、プロバイダが google.subjectassertion.email を使用する場合、SCIM テナントも google.subject に同等の SCIM 属性(user.emails[0].value など)を使用する必要があります。

次の表に、トークン クレーム属性と SCIM 属性のマッピングを示します。

Google の属性 Workforce Identity プール プロバイダのマッピング SCIM テナントのマッピング(SCIM)
google.subject assertion.oid(EntraId) user.externalId
google.subject assertion.sub(Okta) user.externalId
google.subject assertion.preferred_username user.userName
google.subject assertion.preferred_username.lowerAscii() user.userName.lowerAscii()
google.subject assertion.email user.emails[0].value
google.subject assertion.email.lowerAscii() user.emails[0].value.lowerAscii()
google.group 該当なし(SCIM を使用してマッピング) group.externalId

サポートされているエンドポイントとサポートされていないエンドポイント

次の標準 SCIM プロトコル エンドポイントがサポートされています。

  • /Users: ユーザー リソースを管理します。サポートされているオペレーション: CreateGetUpdateDeletePatchPut

  • /Groups: グループ リソースを管理します。サポートされているオペレーション: CreateGetUpdateDeletePatch。グループでは PUT メソッドはサポートされていません。

  • /Schemas: スキーマ情報を取得します。

  • /ServiceProviderConfig: サービス プロバイダの構成を取得します。

次の SCIM プロトコル エンドポイントはサポートされていません。

  • /Me

  • /Bulk

  • /Search

  • /ResourceTypes

制限事項

以降のセクションでは、Workforce Identity 連携の SCIM 実装の制限事項と、SCIM 仕様(RFC 7643 と 7644)からの逸脱について説明します。

プロトコルの機能の制限事項

  • フィルタのサポート: /Users エンドポイントまたは /Groups エンドポイントを使用してユーザーまたはグループを一覧表示する場合、フィルタ式では eq(等しい)演算子のみがサポートされます。複数の eq フィルタを and で組み合わせることができます。` co (次を含む) や sw (次から始まる) などの他の SCIM フィルタ演算子はサポートされていません。

  • ページネーション: IAM SCIM API は、ユーザーまたはグループの一覧表示の標準ページネーションをサポートしていません。

    • startIndex: このパラメータは常に 1 です。startIndex に指定した値に関係なく、API は最大 100 件の結果を返します。

    • itemsPerPage: 1 つのレスポンスで返されるリソースの最大数は 100 です。

    • totalResults: API は、一致するリソースの実際の合計数を返しません。レスポンスの totalResults フィールドは、そのレスポンスで返されるアイテムの数と常に等しく、最大 100 です。

  • フィルタなしでグループを取得してグループを一覧表示する: GetGroup API と ListGroups API は空のメンバーリストを返します。特定のグループのメンバーを取得するには、メンバー フィルタを指定して ListGroups API を使用します。

  • 無効なトークンを含む非準拠の JSON レスポンス: 無効な API トークンを含む API は、401 HTTP error から Google Cloudを返します。レスポンスは、仕様で要求されている JSON 構造ではありません。

SCIM の動作の制限事項

  • 不変の識別子: にマッピングされた SCIM 属性の値は、 google.subject または google.group 内で 不変の識別子として扱われます Google Cloud。これらの値を変更する必要がある場合は、IdP からユーザーまたはグループを完全に削除し、新しい値で再作成する必要があります。

  • 一意で空でない識別子: Google Cloud は、 SCIM テナントの google.subjectgoogle.group にマッピングされた値の一意性を適用します。 google.subject または google.group の値が重複するマッピングされた属性を同期すると、HTTP 409 Conflict エラーで失敗します。null または空に評価されるマッピングされた属性は、HTTP 400 Bad Request エラーで失敗します。

  • 単一のメールアドレスの要件: SCIM の同期を成功させるには、各ユーザーに work タイプのメールアドレスが 1 つだけ必要です。IdP が複数のメールを送信した場合、または指定された単一のメールが work として入力されていない場合、プロビジョニングまたは更新は失敗します。

  • 大文字と小文字を区別しない変換: SCIM クレーム マッピングでは、限定的な Common Expression Language(CEL)変換がサポートされています。 user.userNameuser.emails[0].value の大文字と小文字を区別しない比較では、.lowerAscii() のみがサポートされています。

属性の制限事項

以降のセクションでは、ユーザー、グループ、エンタープライズ ユーザー スキーマ拡張の属性サポートについて説明します。

ユーザー属性

次の表に、ユーザー属性のサポートの詳細を示します。

属性 サブ属性 サポート対象 制限事項
userName 該当なし 該当なし
name formattedfamilyNamegivenNamemiddleNamehonorificPrefixhonorificSuffix なし
displayName 該当なし なし
nickName 該当なし なし
profileUrl 該当なし なし
title 該当なし なし
userType 該当なし なし
preferredLanguage 該当なし なし
locale 該当なし なし
timezone 該当なし なし
active 該当なし なし
password 該当なし いいえ 該当なし
emails displaytypevalueprimary work メールタイプのみがサポートされています。
phoneNumbers displaytypevalueprimary 該当なし
ims displaytypevalue 該当なし
photos displaytypevalue 該当なし
addresses formattedstreetAddresslocalityregionpostalCodecountry なし
groups 該当なし いいえ 該当なし
entitlements displaytypevalue 該当なし
roles typevalue display はサポートされていません。
x509Certificates typevalue display はサポートされていません。

グループ属性

次の表に、グループ属性のサポートの詳細を示します。

属性 サポートされているサブ属性
displayName 該当なし
externalId 該当なし
members valuetype$refdisplay

エンタープライズ ユーザー スキーマ拡張属性

次の表に、エンタープライズ ユーザー スキーマ拡張のサポートの詳細を示します。

属性 サポートされているサブ属性
employeeNumber 該当なし
costCenter なし
organization なし
division なし
department 該当なし
manager value$refdisplayName

次のステップ