ID プロバイダ(IdP)が System for Cross-domain Identity Management(SCIM)をサポートしている場合は、 Google Cloudでグループをプロビジョニングして管理するように IdP を構成できます。
機能
Workforce Identity 連携の SCIM サポートは、次の機能を提供します。
ID の同期: IdP からユーザーデータの読み取り専用コピーを同期して、 Google Cloudでユーザーのプロパティとメンバーシップの全体像を把握します。
グループのフラット化: SCIM は IdP からグループを処理し、ユーザーの直接的および間接的(ネストされた)メンバーシップをすべてフラット化してGoogle Cloud Group Membership Service(GMS)に同期します。IAM は、これらのフラット化されたグループをポリシー チェックに使用し、IdP トークンでよく見られるサイズ制限を克服します。
Gemini Enterprise との統合: SCIM テナントは、Gemini Enterprise での共有をサポートしています。ユーザーは、グループのオブジェクト ID(UUID)ではなくグループ名を使用して、NotebookLM ノートブックをグループと共有できます。詳細については、ノートブックをグループと共有するをご覧ください。
考慮事項
Workforce Identity 連携の SCIM サポートを使用する場合は、次の点に注意してください。
- SCIM テナントを構成する前に、Workforce Identity プールとプロバイダを設定する必要があります。
- 各 Workforce Identity プールで 1 つの SCIM テナントのみがサポートされます。同じ Workforce Identity プールで新しい SCIM テナントを構成するには、まず既存のテナントを削除する必要があります。SCIM テナントを削除する方法には、次の 2 通りがあります。
- 削除(復元可能)(デフォルト): 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 のアクセス権が取り消されない可能性があります。 - SCIM を使用してグループをマッピングするには、
--scim-usage=enabled-for-groupsを設定します。SCIM を使用してグループをマッピングすると、Workforce Identity プール プロバイダで定義されているグループ マッピングは無視されます。SCIM で管理されているグループを参照するとき、マッピングされた属性はgoogle.groupsではなくgoogle.groupです。google.groupsは、トークンでマッピングされたグループのみを参照します。 - SCIM を使用する場合、
--attribute-mappingでマッピングされたトークンベースの属性は、引き続き認証とプリンシパル ID で使用できます。 - Microsoft Entra ID の構成では、Workforce Identity プール プロバイダを作成するときに
--extended-attributesフラグを使用しないでください。
OIDC プロバイダと SAML プロバイダを SCIM 構成にマッピングする
Workforce Identity プール プロバイダ構成(--attribute-mapping)の属性マッピングと SCIM テナント(--claim-mapping)の要求マッピングの間には整合性が必要です。google.subject(ユーザーの場合)の入力に使用される基盤となる IdP 属性は、トークン要求または SCIM 属性から読み取られるかどうかにかかわらず、同じである必要があります。
これらのマッピングに一貫性がない場合、ユーザーはログインできる可能性がありますが、SCIM プロビジョニングされたグループのメンバーとして認識されません。たとえば、プロバイダが google.subject に assertion.email を使用している場合、SCIM テナントも google.subject に同等の SCIM 属性(user.emails[0].value など)を使用する必要があります。
次の表に、一般的な IdP トークン クレームを SCIM 属性にマッピングする際の参照例を示します。
| Google の属性 | Workforce Identity プール プロバイダのマッピング(トークン) | SCIM テナントのマッピング(SCIM) |
|---|---|---|
google.subject |
assertion.oid |
user.externalId |
google.subject |
assertion.email |
user.emails[0].value |
google.subject |
assertion.email.lowerAscii() |
user.emails[0].value.lowerAscii() |
google.subject |
assertion.preferred_username |
user.userName |
google.subject |
assertion.sub |
互換性がない |
google.group |
該当なし(SCIM を使用してマッピング) | group.externalId |
サポートされているエンドポイントとサポートされていないエンドポイント
次の標準 SCIM プロトコル エンドポイントがサポートされています。
/Users: ユーザー リソースを管理します。サポートされているオペレーション:Create、Get、Update、Delete、Patch、Put。/Groups: グループ リソースを管理します。サポートされているオペレーション:Create、Get、Update、Delete、Patch。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です。API は、startIndexに指定した値に関係なく、最大 100 件の結果を返します。itemsPerPage: 1 回のレスポンスで返されるリソースの最大数は 100 です。totalResults: API は、一致するリソースの実際の合計数を返しません。レスポンスのtotalResultsフィールドは、そのレスポンスで返されるアイテムの数と常に等しくなります(最大 100)。
SCIM の動作に関する制限事項
不変の識別子:
google.subjectまたはgoogle.groupにマッピングされた SCIM 属性の値は、 Google Cloud内で不変の識別子として扱われます。これらの値を変更する必要がある場合は、IdP からユーザーまたはグループを完全に削除してから、新しい値で再作成する必要があります。単一のメール要件: SCIM 同期を成功させるには、各ユーザーに
workタイプのメールアドレスが 1 つだけ必要です。IdP が複数のメールを送信した場合や、指定された単一のメールがworkとして入力されていない場合、プロビジョニングまたは更新は失敗します。大文字と小文字を区別しない変換: SCIM クレーム マッピングでは、限定的な Common Expression Language(CEL)変換がサポートされています。
user.userNameとuser.emails[0].valueの大文字と小文字を区別しない比較では、.lowerAscii()のみがサポートされています。
属性の制限事項
以降のセクションでは、ユーザー、グループ、エンタープライズ ユーザー スキーマ拡張機能の属性サポートについて説明します。
ユーザー属性
次の表に、ユーザー属性のサポートの詳細を示します。
| 属性 | サブ属性 | サポート対象 | 制限事項 |
|---|---|---|---|
userName |
なし | ○ | なし |
name |
formatted、familyName、givenName、middleName、honorificPrefix、honorificSuffix |
○ | 該当なし |
displayName |
該当なし | ○ | 該当なし |
nickName |
該当なし | ○ | 該当なし |
profileUrl |
該当なし | ○ | 該当なし |
title |
該当なし | ○ | 該当なし |
userType |
該当なし | ○ | 該当なし |
preferredLanguage |
該当なし | ○ | 該当なし |
locale |
該当なし | ○ | 該当なし |
timezone |
該当なし | ○ | 該当なし |
active |
該当なし | ○ | 該当なし |
password |
該当なし | いいえ | なし |
emails |
display、type、value、primary |
○ | サポートされているメールタイプは work のみです。 |
phoneNumbers |
display、type、value、primary |
○ | なし |
ims |
display、type、value |
○ | なし |
photos |
display、type、value |
○ | なし |
addresses |
formatted、streetAddress、locality、region、postalCode、country |
○ | 該当なし |
groups |
該当なし | いいえ | なし |
entitlements |
display、type、value |
○ | なし |
roles |
type、value |
○ | display はサポートされていません。 |
x509Certificates |
type、value |
○ | display はサポートされていません。 |
グループ属性
次の表に、グループ属性のサポートの詳細を示します。
| 属性 | サポートされているサブ属性 |
|---|---|
displayName |
なし |
externalId |
なし |
members |
value、type、$ref、display |
エンタープライズ ユーザー スキーマの拡張属性
次の表に、エンタープライズ ユーザー スキーマ拡張機能のサポートの詳細を示します。
| 属性 | サポートされているサブ属性 |
|---|---|
employeeNumber |
なし |
costCenter |
なし |
organization |
なし |
division |
なし |
department |
なし |
manager |
value、$ref、displayName |