GitLabセルフマネージドまたはGitLab Dedicated用にSCIMを設定する
- プラン: Premium、Ultimate
- 提供形態: GitLab Self-Managed、GitLab Dedicated
オープン標準であるSCIM(SCIM)を使用すると、次のことを自動的に実行できます:
- ユーザーの作成。
- ユーザーのブロック。
- ユーザーの再追加(SCIMアイデンティティの再アクティブ化)。
内部GitLab SCIM APIはRFC7644プロトコルの一部を実装しています。
GitLab.comユーザーの場合は、GitLab.comグループのSCIM設定を参照してください。
GitLabを設定する
前提条件:
- SAMLシングルサインオンが設定されています。
- 管理者アクセス権が必要です。
GitLab SCIMを設定するには:
- 右上隅で、管理者を選択します。
- 設定 > 一般を選択します。
- SCIMトークンセクションを展開し、SCIMトークンを生成を選択します。
- Identity Providerの設定のために、以下を保存します:
- あなたのSCIMトークンフィールドからトークン。
- SCIM APIエンドポイントのURLフィールドからURL。
Identity Providerを設定する
次のものをIdentity Providerとして設定できます:
Oktaを設定する
Oktaのシングルサインオン設定中に作成されたSAMLアプリケーションは、SCIM用に設定する必要があります。
前提条件:
- Okta Lifecycle Management製品を使用する必要があります。OktaでSCIMを使用するには、この製品層が必要です。
- GitLabはSCIM用に設定されています。
- Okta設定ノートに記載されているとおりに設定された、Okta用のSAMLアプリケーション。
- Okta SAML設定は、設定手順、特にNameIDの設定と一致している必要があります。
OktaをSCIM用に設定するには:
- Oktaにサインインします。
- 右上隅で、管理者を選択します。ボタンは管理者エリアからは見えません。
- Applicationタブで、Browse App Catalogを選択します。
- GitLabアプリケーションを検索して選択します。
- GitLabアプリケーションの概要ページで、Add Integrationを選択します。
- Application Visibilityの下で、両方のチェックボックスを選択します。GitLabアプリケーションはSAML認証をサポートしていないため、アイコンはユーザーに表示されるべきではありません。
- 完了を選択してアプリケーションの追加を終了します。
- Provisioningタブで、Configure API integrationを選択します。
- Enable API integrationを選択します。
- Base URLには、GitLab SCIMの設定ページでSCIM APIエンドポイントのURLからコピーしたURLを貼り付けます。
- API Tokenには、GitLab SCIMの設定ページであなたのSCIMトークンからコピーしたSCIMトークンを貼り付けます。
- 設定を検証するには、Test API Credentialsを選択します。
- Saveを選択します。
- APIインテグレーションの詳細を保存した後、左側に新しい設定タブが表示されます。To Appを選択します。
- 編集を選択します。
- Create UsersとDeactivate Usersの両方で有効チェックボックスを選択します。
- Saveを選択します。
- 割り当てタブでユーザーを割り当てます。割り当てられたユーザーは、GitLabグループで作成および管理されます。
Microsoft Entra ID(旧Azure Active Directory)を設定する
前提条件:
Azure Active Directoryのシングルサインオン設定中に作成されたSAMLアプリケーションは、SCIM用に設定する必要があります。例については、example configurationを参照してください。
Microsoft Entra IDを設定するには、以下を設定します:
- SCIM用のMicrosoft Entra ID。
- 設定。
- 属性マッピングを含むマッピング。
SCIM用にMicrosoft Entra IDを設定する
アプリで、Provisioningタブに移動し、始めましょうを選択します。
Provisioning ModeをAutomaticに設定します。
Admin Credentialsを次の値を使用して完了します:
- GitLabのSCIM APIエンドポイントのURLをTenant URLフィールドに入力します。
- GitLabのあなたのSCIMトークンをSecret Tokenフィールドに入力します。
Test Connectionを選択します。
テストが成功した場合は、設定を保存します。
テストが失敗した場合は、解決するためにトラブルシューティングを参照してください。
Saveを選択します。
保存後、Mappingsと設定セクションが表示されます。
マッピングを設定する
Mappingsセクションで、まずグループをプロビジョニングします:
Provision Microsoft Entra ID Groupsを選択します。
属性マッピングページで、有効切替をオフにします。
GitLabではSCIMグループのプロビジョニングはサポートされていません。グループプロビジョニングを有効にしたままにしても、SCIMユーザープロビジョニングが中断されることはありませんが、Entra ID SCIMプロビジョニングログに混乱を招く可能性のあるエラーが発生します。
Saveを選択します。
次に、ユーザーをプロビジョニングします:
- Provision Microsoft Entra ID Usersを選択します。
- 有効切替が可能に設定されていることを確認します。
- すべてのTarget Object Actionsが有効になっていることを確認します。
- Attribute Mappingsで、設定済みの属性マッピングと一致するようにマッピングを設定します:
- (オプション)オプション。customappsso Attribute列で、
externalIdを検索して削除します。 - 最初の属性を次のように編集します:
objectIdのsource attribute。externalIdのtarget attribute。1のmatching precedence。
- 既存のcustomappsso属性を更新して、設定済みの属性マッピングと一致させます。
- 属性マッピングテーブルにない追加の属性は削除します。削除しなくても問題は発生しませんが、GitLabはこれらの属性を消費しません。
- (オプション)オプション。customappsso Attribute列で、
- マッピングリストの下で、Show advanced optionsチェックボックスを選択します。
- Edit attribute list for customappssoリンクを選択します。
idがプライマリおよび必須フィールドであり、externalIdも必須であることを確認します。- 保存を選択すると、属性マッピング設定ページに戻ります。
- Attribute Mapping設定ページを閉じるには、右上隅にある
Xを選択します。
属性マッピングを設定する
SCIM用にEntra IDを設定する際に、属性マッピングを設定します。例については、example configurationを参照してください。
次の表は、GitLabに必要な属性マッピングを示しています。
| ソース属性 | ターゲット属性 | マッチング優先順位 |
|---|---|---|
objectId | externalId | 1 |
userPrincipalNameまたはmail 1 | emails[type eq "work"].value | |
mailNickname | userName | |
displayNameまたはJoin(" ", [givenName], [surname]) 2 | name.formatted | |
Switch([IsSoftDeleted], , "False", "True", "True", "False") 3 | active |
脚注:
userPrincipalNameがメールアドレスではないか、配信できない場合は、mailをソース属性として使用します。displayNameがFirstname Lastnameの形式と一致しない場合は、Join式を使用します。- これは式マッピングタイプであり、直接マッピングではありません。Mapping typeドロップダウンリストでExpressionを選択します。
各属性マッピングには、次のものがあります:
- target attributeに対応するcustomappsso Attribute。
- source attributeに対応するMicrosoft Entra ID Attribute。
- マッチング優先順位。
各属性について:
- 既存の属性を編集するか、新しい属性を追加します。
- ドロップダウンリストから、必要なソースおよびターゲット属性マッピングを選択します。
- OKを選択します。
- Saveを選択します。
SAMLの設定が推奨されるSAMLの設定と異なる場合は、マッピング属性を選択し、それに応じて変更します。externalIdターゲット属性にマップするソース属性は、SAML NameIDに使用される属性と一致している必要があります。
マッピングが表にない場合は、Microsoft Entra IDのデフォルトを使用します。必須属性のリストについては、内部インスタンスSCIM APIのドキュメントを参照してください。
設定を設定する
設定セクションで:
- (オプション)必要に応じて、Send an email notification when a failure occursチェックボックスを選択します。
- (オプション)必要に応じて、Prevent accidental deletionチェックボックスを選択します。
- 必要に応じて、保存を選択してすべての変更が保存されたことを確認します。
マッピングと設定を設定したら、アプリの概要ページに戻り、Start provisioningを選択して、GitLabでのユーザーの自動SCIMプロビジョニングを開始します。
アクセスを削除する
Identity Providerでユーザーを削除または非アクティブ化すると、GitLabインスタンスでユーザーがブロックされますが、SCIMのアイデンティティはGitLabユーザーにリンクされたままになります。
ユーザーSCIMのアイデンティティを更新するには、内部GitLab SCIM APIを使用します。
アクセスを再アクティブ化する
SCIMによってユーザーが削除または非アクティブ化された後、そのユーザーをSCIMIdentity Providerに追加することで再アクティブ化できます。
Identity Providerが設定されたスケジュールに基づいて同期を実行すると、ユーザーのSCIMアイデンティティが再アクティブ化され、GitLabインスタンスへのアクセスが復元されます。
SCIMを使用したグループ同期
ユーザープロビジョニングに加えて、SCIMを使用してIdentity ProviderとGitLabの間でグループメンバーシップを同期できます。この方法を使用すると、Identity Providerでのグループメンバーシップに基づいて、GitLabグループからユーザーを自動的に追加および削除できます。
前提条件:
- まずSAMLグループリンクを設定する必要があります。
- Identity ProviderのSAMLグループ名は、GitLabで設定されたSAMLグループ名と一致している必要があります。
SCIMグループ同期は、SAMLグループリンクと連携してグループメンバーシップを管理します。Identity ProviderがSCIM APIを介してグループメンバーシップの変更を送信すると、GitLabはそのSCIMグループに関連付けられているSAMLグループリンクを持つすべてのGitLabグループのユーザーグループメンバーシップを更新します。
SCIMは一方向プロトコルです: 変更はIdentity ProviderからGitLabに流れます。GitLabでSAMLグループリンクに変更を加えた場合(追加または削除など)、Identity ProviderはSCIMを介してこれらの変更を検出する手段がありません。
新しいグループリンクの既知の制限
Identity Providerが最初にSCIMグループをプロビジョニングする際(POST /Groupsを介して)、GitLabはSCIMグループIDを、一致するグループ名を持つすべての既存のSAMLグループリンクと関連付けます。ただし、最初のプロビジョニング後に同じグループ名を持つ新しいSAMLグループリンクを追加しても、新しいグループリンクはSCIMグループIDに自動的に関連付けられません。これは、Identity ProviderからのSCIMメンバーシップ更新が、新しく追加されたグループリンクのユーザーに影響を与えないことを意味します。
改善のサポートはイシュー582729で提案されています。
最初のプロビジョニング後にグループリンクを追加する必要がある場合は、SCIMグループプロビジョニング(IdPグループ自体ではなく)を削除してから再作成することで、Identity ProviderでSCIMグループを再プロビジョニングできます。このアクションにより、現在のすべてのSAMLグループリンクがSCIMグループに再関連付けされます。詳細については、SCIMグループプロビジョニングの管理に関するIdentity Providerのドキュメントを参照してください。
GitLabでSAMLグループリンクを削除しても、そのリンクを介してそのグループのメンバーであるユーザーはグループに残ります。ただし、グループリンクが削除されたため、SCIMはそのグループでのメンバーシップを管理しなくなります。必要に応じて、手動でグループからメンバーを削除できます。
Identity Providerでグループ同期を設定する
Identity Providerでのグループ同期の設定に関する詳細な手順については、プロバイダーのドキュメントを参照してください。以下に例を示します:
- Okta Groups API
- Microsoft Entra ID(Azure AD)SCIM Groups - デフォルトでは、
displayNameソース属性は、ユーザーフレンドリーな名前を持つSAMLグループリンクを見つけるために使用されます。 - ただし、SAMLグループリンクが名前としてオブジェクトIDを使用している場合は、ソース属性をobjectIdに更新する必要があります。
Oktaアプリケーションカタログの標準GitLab SCIMアプリケーションは、グループ同期をサポートしていません。あるいは、Oktaとのグループ同期のためにカスタムSCIMインテグレーションを作成できます。詳細については、イシュー582729を参照してください。
トラブルシューティング
当社のSCIMトラブルシューティングガイドを参照してください。