GitLab Self-ManagedまたはGitLab DedicatedのSCIMを設定
- プラン: Premium、Ultimate
- 提供形態: GitLab Self-Managed、GitLab Dedicated
オープン標準のSystem for Cross-domain Identity Management(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として設定できます:
他のIdentity ProviderもGitLabで動作する可能性がありますが、テストされておらず、サポートされていません。サポートについては、プロバイダーにお問い合わせください。GitLabサポートは、関連するログエントリをレビューすることで支援できます。
Oktaを設定する
Oktaのシングルサインオン設定時に作成されたSAMLアプリケーションは、SCIM用に設定する必要があります。
前提要件:
- Oktaライフサイクル管理製品を使用する必要があります。この製品層は、OktaでSCIMを使用するために必要です。
- GitLabが設定されました SCIM用。
- OktaのSAMLアプリケーションは、Oktaセットアップノートに記載されているように設定されています。
- Okta SAML設定は、特にNameID設定において、設定手順と一致している必要があります。
SCIM用にOktaを設定するには:
- 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を選択します。
- 保存を選択します。
- APIインテグレーションの詳細を保存すると、左側に新しい設定タブが表示されます。To Appを選択します。
- 編集を選択します。
- Create UsersとDeactivate Usersの両方に対してEnableのチェックボックスをオンにします。
- 保存を選択します。
- Assignmentsタブでユーザーを割り当てます。割り当てられたユーザーは、GitLabグループで作成および管理されます。
Microsoft Entra ID(旧称Azure Active Directory)を設定する
前提要件:
Azure Active Directoryのシングルサインオン設定時に作成されたSAMLアプリケーションは、SCIM用に設定する必要があります。例については、設定例を参照してください。
次の手順で詳しく説明されているように、SCIMプロビジョニングを正確に設定する必要があります。設定を誤ると、ユーザーのプロビジョニングとサインインで問題が発生し、解決に多大な労力を要します。いずれかの手順で問題や質問がある場合は、GitLabサポートにお問い合わせください。
Microsoft Entra IDを設定するには、以下を設定します:
- SCIM用のMicrosoft Entra ID。
- 設定。
- 属性マッピングを含む、マッピング。
Microsoft Entra IDをSCIM用に設定する
アプリで、Provisioningタブに移動し、Get startedを選択します。
Provisioning ModeをAutomaticに設定します。
以下の値を使用して、Admin Credentialsに入力します:
- Tenant URLフィールドには、SCIM APIエンドポイントのURL。
- Secret Tokenフィールドには、GitLabのあなたのSCIMトークン。
Test Connectionを選択します。
テストが成功した場合は、設定を保存します。
テストが失敗した場合は、トラブルシューティングを参照して、この問題を解決してください。
保存を選択します。
保存後、MappingsセクションとSettingsセクションが表示されます。
マッピングを構成する
Mappingsセクションで、最初にグループをプロビジョンします:
Provision Microsoft Entra ID Groupsを選択します。
[Attribute Mapping]ページで、有効切替をオフにします。
SCIMグループプロビジョニングはGitLabではサポートされていません。グループプロビジョニングを有効のままにしても、SCIMユーザープロビジョニングは中断されませんが、Entra ID SCIMプロビジョニングログにエラーが発生し、混乱や誤解を招く可能性があります。
Provision Microsoft Entra ID Groupsが無効になっている場合でも、マッピングセクションにはEnabled: Yesと表示される場合があります。この動作は、無視しても問題ない表示上のバグです。
保存を選択します。
次に、ユーザーをプロビジョンします:
- Provision Microsoft Entra ID Usersを選択します。
- Enabledの切り替えがYesに設定されていることを確認します。
- すべての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設定ページに戻ります。
- Attribute Mapping設定ページを閉じるには、右上隅にある
Xを選択します。
属性マッピングを構成する
MicrosoftがAzure Active DirectoryからEntra IDの命名体系に移行する際に、ユーザーUIに矛盾が見られる場合があります。問題がある場合は、このドキュメントの古いバージョンを表示するか、GitLabサポートにお問い合わせください。
SCIM用にEntra IDを構成する際に、属性マッピングを構成します。例については、設定例を参照してください。
次の表に、GitLabに必要な属性マッピングを示します。
| ソース属性 | ターゲット属性 | 照合優先順位 |
|---|---|---|
objectId | externalId | 1 |
userPrincipalNameまたはmail1 | 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を選択します。
各属性マッピングには、以下があります:
- customappsso Attribute。target attributeに対応。
- Microsoft Entra ID Attribute。source attributeに対応。
- 照合優先順位。
各属性について:
- 既存の属性を編集するか、新しい属性を追加します。
- ドロップダウンリストから、必要なソースとターゲットの属性マッピングを選択します。
- OKを選択します。
- 保存を選択します。
推奨されるSAML設定とSAML設定が異なる場合は、マッピング属性を選択して、それに応じて変更します。externalIdターゲット属性にマップするソース属性は、SAMLNameIDに使用される属性と一致する必要があります。
マッピングが表にリストされていない場合は、Microsoft Entra IDデフォルトを使用します。必要な属性のリストについては、内部インスタンスSCIM APIのドキュメントを参照してください。
設定を構成する
設定セクション:
- オプション。必要に応じて、Send an email notification when a failure occursチェックボックスをオンにします。
- オプション。必要に応じて、Prevent accidental deletionチェックボックスをオンにします。
- 必要に応じて、保存を選択して、すべての変更が保存されていることを確認します。
マッピングと設定を構成したら、アプリの概要ページに戻り、Start provisioningを選択して、GitLabでのユーザーの自動SCIMプロビジョニングを開始します。
一度同期されると、idとexternalIdにマップされたフィールドを変更すると、エラーが発生する可能性があります。これらには、プロビジョニングエラー、重複ユーザーが含まれ、既存のユーザーがGitLabグループにアクセスできなくなる可能性があります。
アクセス権を削除する
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グループ名と一致する必要があります。
Identity Providerでグループ同期を構成する
Identity Providerでグループ同期を構成する詳細な手順については、プロバイダーのドキュメントを参照してください。以下に例を示します:
複数のSAMLグループリンクが同じGitLabグループにマップされている場合、ユーザーには、すべてのマッピンググループリンクで最も高いロールが割り当てられます。IdPグループから削除されたユーザーは、リンクされている別のSAMLグループに属している場合、GitLabグループに留まります。
トラブルシューティング
SCIMガイドのトラブルシューティングを参照してください。