GitLab.comグループのSCIMを設定
- プラン: Premium、Ultimate
- 提供形態: GitLab.com
オープン標準のSystem for Cross-domain Identity Management (SCIM) を使用して、以下を自動化できます:
- ユーザーを作成します。
- ユーザーを削除します (SCIMアイデンティティ管理を無効化)。
- ユーザーを再度追加します (SCIMアイデンティティ管理を再度有効化)。
GitLab SAML SSO SCIMは、ユーザーの更新をサポートしていません。
GitLabグループに対してSCIMが有効になっている場合、そのグループのグループメンバーシップは、GitLabとIdentity Providerの間で同期されます。
内部GitLabグループSCIM APIは、RFC7644プロトコルの一部を実装しています。Identity Providerは、内部GitLabグループSCIM APIを使用して、SCIMアプリを開発できます。
GitLabセルフマネージドでSCIMをセットアップするには、GitLabセルフマネージドのSCIMを設定を参照してください。
GitLabを設定する
前提要件:
- グループシングルサインオンが設定されている必要があります。
GitLab SAML SSO SCIMを設定するには:
- 左側のサイドバーで、検索または移動先を選択して、グループを見つけます。
- 設定 > SAML SSOを選択します。
- SCIMトークンを生成を選択します。
- Identity Providerの設定のために、以下を保存します:
- あなたのSCIMトークンフィールドのトークン。
- SCIM APIエンドポイントのURLフィールドのURL。
Identity Providerを設定
Identity Providerとして、次のいずれかを設定できます:
他のプロバイダーもGitLabで動作する可能性がありますが、テストされておらず、サポートされていません。サポートについては、プロバイダーにお問い合わせください。GitLabのサポートは、関連するログエントリを確認することで支援できます。
Microsoft Entra ID(旧Azure Active Directory)を設定する
前提要件:
- GitLabが設定されました。
- グループシングルサインオンが設定されています。
Azure Active Directoryのシングルサインオンの設定時に作成されたSAMLアプリケーションは、SCIM用にセットアップする必要があります。例については、設定例を参照してください。
次の手順で詳しく説明されているように、SCIMプロビジョニングを正確に設定する必要があります。設定を誤ると、ユーザーのプロビジョニングとサインインで問題が発生し、解決に多くの労力がかかります。いずれかの手順で問題や質問がある場合は、GitLabサポートにお問い合わせください。
SCIMのMicrosoft Entra IDを設定するには:
- アプリで、Provisioning(プロビジョニング) タブに移動し、始めましょうを選択します。
- Provisioning Mode(プロビジョニングモード)をAutomatic(自動)に設定します。
- 次の値を使用して、Admin Credentials(管理者認証情報)を完了します:
- SCIM APIエンドポイントのURLをTenant URL(テナントURL)フィールドに入力します。
- あなたのSCIMトークンをSecret Token(シークレットトークン)フィールドに入力します。
- Test Connection(接続のテスト)を選択します。テストが成功した場合は、続行する前に設定を保存するか、トラブルシューティングの情報を参照してください。
- 保存を選択します。
保存後、Mappings(マッピング)と設定セクションが表示されます。
マッピングを設定する
Mappings(マッピング)セクションで、最初にグループをプロビジョニングします:
Provision Microsoft Entra ID Groups(Microsoft Entra IDグループのプロビジョニング)を選択します。
属性のマッピングページで、有効切替をオフにします。SCIMグループのプロビジョニングはGitLabではサポートされていません。グループのプロビジョニングを有効のままにしてもSCIMユーザーのプロビジョニングが中断されることはありませんが、Entra ID SCIMプロビジョニングログに混乱を招く可能性のあるエラーが発生します。
Provision Microsoft Entra ID Groups(Microsoft Entra IDグループのプロビジョニング)が無効になっている場合でも、マッピングセクションに「有効: はい」と表示されることがあります。これは表示上のバグであり、無視しても問題ありません。
保存を選択します。
次に、ユーザーをプロビジョニングします:
- Provision Microsoft Entra ID Users(Microsoft Entra IDユーザーのプロビジョニング)を選択します。
- 有効切替が可能に設定されていることを確認します。
- すべてのTarget Object Actions(ターゲットオブジェクトアクション)が有効になっていることを確認します。
- Attribute Mappings(属性のマッピング)で、構成済みの属性のマッピングと一致するようにマッピングを設定します:
- オプション。customappsso Attribute(customappsso属性)列で、
externalIdを見つけて削除します。 - 最初属性を編集して、以下を設定します:
objectIdのsource attribute(ソース属性)externalIdのtarget attribute(ターゲット属性)1のmatching precedence(一致の優先順位)
- 既存のcustomappsso属性を更新して、構成済みの属性のマッピングと一致させます。
- 次の表にない追加の属性を削除します。削除しなくても問題は発生しませんが、GitLabは属性を使用しません。
- オプション。customappsso Attribute(customappsso属性)列で、
- マッピングリストで、Show advanced options(詳細オプションを表示)チェックボックスを選択します。
- Edit attribute list for customappsso(customappssoの属性リストを編集)リンクを選択します。
idがプライマリ必須フィールドであり、externalIdも必須であることを確認してください。- 保存を選択すると、属性のマッピング設定ページに戻ります。
- Attribute Mapping(属性のマッピング)設定ページを閉じるには、右上隅の
Xを選択します。
設定を構成する
設定セクション:
- オプション。必要に応じて、Send an email notification when a failure occurs(エラー発生時にメール通知を送信する)チェックボックスを選択します。
- オプション。必要に応じて、Prevent accidental deletion(誤った削除を防ぐ)チェックボックスを選択します。
- 必要に応じて、保存を選択して、すべての変更が保存されていることを確認します。
マッピングと設定を設定したら、アプリの概要ページに戻り、Start provisioning(プロビジョニングを開始)を選択して、GitLabでのユーザーの自動SCIMプロビジョニングを開始します。
同期されると、idおよびexternalIdにマップされたフィールドを変更すると、エラーが発生する可能性があります。これには、プロビジョニングエラー、重複するユーザーが含まれ、既存のユーザーがGitLabグループにアクセスできなくなる可能性があります。
属性のマッピングを設定する
MicrosoftがAzure Active DirectoryからEntra IDの命名スキームに移行する間、ユーザーインターフェースに矛盾が見られる場合があります。問題が発生した場合は、このドキュメントの古いバージョンを表示するか、GitLabサポートにお問い合わせください。
SCIMのEntra IDを設定すると、属性のマッピングを設定します。例については、設定例を参照してください。
次の表に、GitLabに必要な属性のマッピングを示します。
| ソース属性 | ターゲット属性 | 一致の優先順位 |
|---|---|---|
objectId | externalId | 1 |
userPrincipalNameまたはmail 1 | emails[type eq "work"].value | |
mailNickname | userName | |
displayName OR 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(customappsso属性)。これは、target attribute(ターゲット属性)に対応します。
- Microsoft Entra ID Attribute(Microsoft Entra ID属性)。これは、source attribute(ソース属性)に対応します。
- 一致の優先順位。
各属性について:
- 既存の属性を編集するか、新しい属性を追加します。
- ドロップダウンリストから、必要なソースとターゲットの属性のマッピングを選択します。
- OKを選択します。
- 保存を選択します。
SAMLの設定が推奨されるSAML設定と異なる場合は、マッピング属性を選択し、それに応じて変更します。externalIdターゲット属性にマップするソース属性は、SAML NameIDに使用される属性と一致する必要があります。
マッピングが表にリストされていない場合は、Microsoft Entra IDデフォルトを使用します。必要な属性のリストについては、内部グループSCIM APIドキュメントを参照してください。
Oktaを設定する
Oktaのシングルサインオンの設定時に作成されたSAMLアプリケーションは、SCIM用にセットアップする必要があります。
前提要件:
- Okta ライフサイクル管理製品を使用する必要があります。この製品層は、OktaでSCIMを使用するために必要です。
- GitLabが設定されました。
- OktaのSAMLアプリケーションは、Okta設定ノートで説明されているようにセットアップします。
- Okta SAMLの設定が構成手順と正確に一致していること、特にNameIDの設定。
SCIM用にOktaを設定するには:
- Oktaにサインインします。
- 右上隅で管理者を選択します。ボタンは管理者エリアからは見えません。
- Application(アプリケーション)タブで、Browse App Catalog(アプリカタログの参照)を選択します。
- GitLabを検索し、GitLabアプリケーションを見つけて選択します。
- GitLabアプリケーションの概要ページで、追加を選択します。
- Application Visibility(アプリケーションの表示レベル)で、両方のチェックボックスを選択します。現在、GitLabアプリケーションはSAML認証をサポートしていないため、アイコンはユーザーに表示されません。
- 完了を選択して、アプリケーションの追加を完了します。
- Provisioning(プロビジョニング)タブで、Configure API integration(APIインテグレーションの設定)を選択します。
- Enable API integration(APIインテグレーションを有効にする)を選択します。
- Base URL(ベースURL)には、GitLab SCIM設定ページのSCIM APIエンドポイントのURLからコピーしたURLを貼り付けます。
- API Token(APIトークン)には、GitLab SCIM設定ページのあなたのSCIMトークンからコピーしたSCIMトークンを貼り付けます。
- 設定を確認するには、Test API Credentials(API認証情報のテスト)を選択します。
- 保存を選択します。
- APIインテグレーションの詳細を保存すると、左側に新しい設定タブが表示されます。To App(アプリへ)を選択します。
- 編集を選択します。
- Create Users(ユーザーの作成)とDeactivate Users(ユーザーの無効化)の両方に対して、有効チェックボックスを選択します。
- 保存を選択します。
- Assignments(課題)タブでユーザーを割り当てます。割り当てられたユーザーは、GitLabグループで作成および管理されます。
ユーザーアクセス
同期プロセス中、すべての新しいユーザーは:
- GitLabアカウントを受け取ります。
- 招待メールで自分のグループに歓迎されます。確認済みのドメインでメール確認を回避することができます。
次の図は、SCIMアプリにユーザーを追加したときに発生することを示しています:
%%{init: { "fontFamily": "GitLab Sans" }}%%
graph TD
accTitle: Adding users to your SCIM application
accDescr: How GitLab determines whether or not to associate a SCIM identity with a user.
A[Add User to SCIM app] -->|IdP sends user info to GitLab| B(GitLab: Does the email exist?)
B -->|No| C[GitLab creates user with SCIM identity]
B -->|Yes| D(GitLab: Is the user part of the group?)
D -->|No| E(GitLab: Is SSO enforcement enabled?)
E -->|No| G
E -->|Yes| F[GitLab sends message back:
The member's email address is not linked to a SAML account]
D -->|Yes| G[Associate SCIM identity to user]
プロビジョニング中:
- GitLabユーザーアカウントが存在するかどうかを確認する際、プライマリメールとセカンダリメールの両方が考慮されます。
- ユーザーの作成時に、重複するユーザー名にはサフィックス
1を追加することで処理されます。たとえば、test_userが既に存在する場合は、test_user1が使用されます。test_user1が既に存在する場合、GitLabはサフィックスを増やして、未使用のユーザー名を見つけます。4回試行しても未使用のユーザー名が見つからない場合は、ランダムな文字列がユーザー名に追加されます。
その後のアクセスでは、新規および既存のユーザーは次のいずれかの方法でグループにアクセスできます:
- Identity Providerのダッシュボード経由。
- リンクに直接アクセス。
ロール情報については、グループSAMLページを参照してください。
GitLabグループのSCIMを介して作成されたユーザーのパスワード
GitLabでは、すべてのユーザーアカウントにパスワードが必要です。SCIMプロビジョニングを使用して作成されたユーザーの場合、GitLabはランダムなパスワードを自動的に生成し、ユーザーは最初のサインイン時にパスワードを設定する必要はありません。GitLabグループのSCIMで作成されたユーザーに対してGitLabがパスワードを生成する方法の詳細については、統合認証で生成されたユーザーのパスワードを参照してください。
SCIMとSAMLのアイデンティティをリンクする
グループSAMLが設定されており、既存のGitLab.comアカウントがある場合、ユーザーはSCIMとSAMLのアイデンティティをリンクできます。ユーザーは、同期がアクティブな場合に既存のユーザーに対してプロビジョニングエラーが発生する可能性があるため、同期をオンにする前にこれを行う必要があります。
SCIMとSAMLのアイデンティティをリンクするには:
- Identity Providerのユーザープロファイルメールアドレスと一致するように、GitLab.comユーザーアカウントのプライマリメールアドレスを更新します。
- SAMLアイデンティティをリンクする。
アクセス権を削除する
Identity Providerでユーザーを削除または非アクティブ化して、以下へのアクセス権を削除します:
- トップレベルグループ。
- すべてのサブグループとプロジェクト。
Identity Providerが設定されたスケジュールに基づいて同期を実行すると、ユーザーのグループメンバーシップが失効され、アクセス権が失われます。
SCIMを有効にしても、SAMLアイデンティティを持たない既存のユーザーは自動的に削除されません。
デプロビジョニングは、GitLabユーザーアカウントを削除しません。
%%{init: { "fontFamily": "GitLab Sans" }}%%
graph TD
accTitle: Deprovisioning users
accDescr: How removing users from your SCIM app removes them from GitLab groups.
A[Remove User from SCIM app] -->|IdP sends request to GitLab| B(GitLab: Is the user part of the group?)
B -->|No| C[Nothing to do]
B -->|Yes| D[GitLab removes user from GitLab group]
アクセス権を再度有効にする
SCIMを通じてユーザーが削除または非アクティブ化された後、SCIMIdentity Providerにユーザーを追加することで、そのユーザーを再度有効にできます。
Identity Providerが構成されたスケジュールに基づいて同期を実行すると、ユーザーのSCIM IDが再度アクティブ化され、グループメンバーシップが復元されます。