正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

GitLabセルフマネージドまたはGitLab Dedicated用にSCIMを設定する

  • プラン: Premium、Ultimate
  • 提供形態: GitLab Self-Managed、GitLab Dedicated

オープン標準であるSCIM(SCIM)を使用すると、次のことを自動的に実行できます:

  • ユーザーの作成。
  • ユーザーのブロック。
  • ユーザーの再追加(SCIMアイデンティティの再アクティブ化)。

内部GitLab SCIM APIRFC7644プロトコルの一部を実装しています。

GitLab.comユーザーの場合は、GitLab.comグループのSCIM設定を参照してください。

GitLabを設定する

前提条件:

GitLab SCIMを設定するには:

  1. 右上隅で、管理者を選択します。
  2. 設定 > 一般を選択します。
  3. SCIMトークンセクションを展開し、SCIMトークンを生成を選択します。
  4. Identity Providerの設定のために、以下を保存します:
    • あなたのSCIMトークンフィールドからトークン。
    • SCIM APIエンドポイントのURLフィールドからURL。

Identity Providerを設定する

次のものをIdentity Providerとして設定できます:

Oktaを設定する

Oktaのシングルサインオン設定中に作成されたSAMLアプリケーションは、SCIM用に設定する必要があります。

前提条件:

OktaをSCIM用に設定するには:

  1. Oktaにサインインします。
  2. 右上隅で、管理者を選択します。ボタンは管理者エリアからは見えません。
  3. Applicationタブで、Browse App Catalogを選択します。
  4. GitLabアプリケーションを検索して選択します。
  5. GitLabアプリケーションの概要ページで、Add Integrationを選択します。
  6. Application Visibilityの下で、両方のチェックボックスを選択します。GitLabアプリケーションはSAML認証をサポートしていないため、アイコンはユーザーに表示されるべきではありません。
  7. 完了を選択してアプリケーションの追加を終了します。
  8. Provisioningタブで、Configure API integrationを選択します。
  9. Enable API integrationを選択します。
    • Base URLには、GitLab SCIMの設定ページでSCIM APIエンドポイントのURLからコピーしたURLを貼り付けます。
    • API Tokenには、GitLab SCIMの設定ページであなたのSCIMトークンからコピーしたSCIMトークンを貼り付けます。
  10. 設定を検証するには、Test API Credentialsを選択します。
  11. Saveを選択します。
  12. APIインテグレーションの詳細を保存した後、左側に新しい設定タブが表示されます。To Appを選択します。
  13. 編集を選択します。
  14. Create UsersDeactivate Usersの両方で有効チェックボックスを選択します。
  15. Saveを選択します。
  16. 割り当てタブでユーザーを割り当てます。割り当てられたユーザーは、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を設定する

  1. アプリで、Provisioningタブに移動し、始めましょうを選択します。

  2. Provisioning ModeAutomaticに設定します。

  3. Admin Credentialsを次の値を使用して完了します:

    • GitLabのSCIM APIエンドポイントのURLTenant URLフィールドに入力します。
    • GitLabのあなたのSCIMトークンSecret Tokenフィールドに入力します。
  4. Test Connectionを選択します。

    テストが成功した場合は、設定を保存します。

    テストが失敗した場合は、解決するためにトラブルシューティングを参照してください。

  5. Saveを選択します。

保存後、Mappings設定セクションが表示されます。

マッピングを設定する

Mappingsセクションで、まずグループをプロビジョニングします:

  1. Provision Microsoft Entra ID Groupsを選択します。

  2. 属性マッピングページで、有効切替をオフにします。

    GitLabではSCIMグループのプロビジョニングはサポートされていません。グループプロビジョニングを有効にしたままにしても、SCIMユーザープロビジョニングが中断されることはありませんが、Entra ID SCIMプロビジョニングログに混乱を招く可能性のあるエラーが発生します。

  3. Saveを選択します。

次に、ユーザーをプロビジョニングします:

  1. Provision Microsoft Entra ID Usersを選択します。
  2. 有効切替が可能に設定されていることを確認します。
  3. すべてのTarget Object Actionsが有効になっていることを確認します。
  4. Attribute Mappingsで、設定済みの属性マッピングと一致するようにマッピングを設定します:
    1. (オプション)オプション。customappsso Attribute列で、externalIdを検索して削除します。
    2. 最初の属性を次のように編集します:
      • objectIdsource attribute
      • externalIdtarget attribute
      • 1matching precedence
    3. 既存のcustomappsso属性を更新して、設定済みの属性マッピングと一致させます。
    4. 属性マッピングテーブルにない追加の属性は削除します。削除しなくても問題は発生しませんが、GitLabはこれらの属性を消費しません。
  5. マッピングリストの下で、Show advanced optionsチェックボックスを選択します。
  6. Edit attribute list for customappssoリンクを選択します。
  7. idがプライマリおよび必須フィールドであり、externalIdも必須であることを確認します。
  8. 保存を選択すると、属性マッピング設定ページに戻ります。
  9. Attribute Mapping設定ページを閉じるには、右上隅にあるXを選択します。
属性マッピングを設定する

SCIM用にEntra IDを設定する際に、属性マッピングを設定します。例については、example configurationを参照してください。

次の表は、GitLabに必要な属性マッピングを示しています。

ソース属性ターゲット属性マッチング優先順位
objectIdexternalId1
userPrincipalNameまたはmail 1emails[type eq "work"].value
mailNicknameuserName
displayNameまたはJoin(" ", [givenName], [surname]) 2name.formatted
Switch([IsSoftDeleted], , "False", "True", "True", "False") 3active

脚注:

  1. userPrincipalNameがメールアドレスではないか、配信できない場合は、mailをソース属性として使用します。
  2. displayNameFirstname Lastnameの形式と一致しない場合は、Join式を使用します。
  3. これは式マッピングタイプであり、直接マッピングではありません。Mapping typeドロップダウンリストでExpressionを選択します。

各属性マッピングには、次のものがあります:

  • target attributeに対応するcustomappsso Attribute
  • source attributeに対応するMicrosoft Entra ID Attribute
  • マッチング優先順位。

各属性について:

  1. 既存の属性を編集するか、新しい属性を追加します。
  2. ドロップダウンリストから、必要なソースおよびターゲット属性マッピングを選択します。
  3. OKを選択します。
  4. Saveを選択します。

SAMLの設定が推奨されるSAMLの設定と異なる場合は、マッピング属性を選択し、それに応じて変更します。externalIdターゲット属性にマップするソース属性は、SAML NameIDに使用される属性と一致している必要があります。

マッピングが表にない場合は、Microsoft Entra IDのデフォルトを使用します。必須属性のリストについては、内部インスタンスSCIM APIのドキュメントを参照してください。

設定を設定する

設定セクションで:

  1. (オプション)必要に応じて、Send an email notification when a failure occursチェックボックスを選択します。
  2. (オプション)必要に応じて、Prevent accidental deletionチェックボックスを選択します。
  3. 必要に応じて、保存を選択してすべての変更が保存されたことを確認します。

マッピングと設定を設定したら、アプリの概要ページに戻り、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トラブルシューティングガイドを参照してください。