GitLab.comグループ用のSCIMの設定

オープンスタンダードの System for Cross-domain Identity Management(SCIM) を使って自動的に設定することができます:

  • ユーザーの作成。
  • ユーザーの削除(SCIM ID の無効化)。

GitLab SAML SSO SCIM はユーザーの更新をサポートしていません。

SCIMがGitLabグループで有効になっている場合、そのグループのメンバーシップはGitLabとIDプロバイダ間で同期されます。

内部GitLabグループSCIM APIは RFC7644プロトコルの一部を実装しています。アイデンティティプロバイダは内部GitLabグループSCIM APIを使ってSCIMアプリを開発することができます。

GitLab の設定

前提条件:

GitLab SAML SSO SCIM を設定するには:

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 設定]、[SAML SSO] の順に選択します。
  3. Generate a SCIM token(SCIMトークンの生成)」を選択します。
  4. IDプロバイダの設定については、保存します:
    • トークンを保存します。
    • SCIM API エンドポイント URLフィールドからの URL。

ID プロバイダの設定

以下のいずれかを ID プロバイダとして設定できます:

note
他のプロバイダーはGitLabと連携できますが、テストされておらず、サポートされていません。サポートについてはプロバイダにお問い合わせください。GitLabサポートは関連するログエントリをレビューすることでサポートすることができます。

Azure Active Directoryの設定

前提条件:

Azure Active Directory用のシングルサインオンのセットアップ中に作成した SAML アプリケーションを SCIM 用にセットアップする必要があります。例については、設定例を参照してください。

Azure Active Directory を SCIM 用に設定するには:

  1. アプリでProvisioningタブを開き、Get started を選択します。
  2. Provisioning Modeを Automaticに設定します。
  3. 以下の値を使用して、管理者資格情報を入力します:
    • テナント URLフィールドには、GitLab のSCIM API エンドポイント URLを使用します。
    • GitLabであなたのSCIMトークンをSecret Tokenフィールドに入力してください。
  4. Test Connection を選択します。テストが成功したら、設定を保存してから続行するか、トラブルシューティング情報をご覧ください。
  5. Save を選択します。

保存後、[Settings]と [Mappings] セクションが表示されます。

  1. 必要に応じて、[設定] で通知メールを設定し、[障害発生時にメール通知を送信する] チェックボックスを選択します。
  2. マッピング]では、以下をお勧めします:
    1. Provision Azure Active Directory Users] を有効にしておき、[Provision Azure Active Directory Users] リンクを選択して属性マッピングを設定します。
    2. マッピングリストの下にある[詳細オプションを表示]チェックボックスを選択します。
    3. customappssoリンクの属性リストを編集を選択します。
    4. id がプライマリで必須フィールドであることを確認し、externalId も必須フィールドであることを確認します。
    5. Save を選択します。
  3. Provisioning]タブに戻り、必要に応じて未保存の変更を保存します。
  4. 属性マッピングの編集]を選択します。
  5. マッピング] を選択します:
    1. Provision Azure Active Directory Groups]を選択します。
    2. Attribute Mapping ページで、Enabledトグルをオフにします。オンにしたままでも SCIM ユーザーのプロビジョニングは壊れませんが、Azure Active Directory でエラーが発生し、混乱したり誤解を招いたりする可能性があります。
    3. Save を選択します。
  6. Provisioning]タブに戻り、必要に応じて未保存の変更を保存します。
  7. 属性マッピングの編集]を選択します。
  8. Provisioning Status]トグルをオンにします。Provisioning画面の下部に同期の詳細とエラーが表示され、監査イベントへのリンクも表示されます。
caution
同期後、id およびexternalId にマップされたフィールドを変更すると、さまざまなエラーが発生することがあります。これには、プロビジョニングエラー、重複ユーザー、既存ユーザーがGitLabグループにアクセスできなくなるなどがあります。

属性マッピングの設定

Azure Active Directory for SCIM の設定中に、属性マッピングを設定します。設定例を参照してください。

次の表は、GitLab で動作することが知られている属性マッピングです。

ソース属性ターゲット属性マッチングの優先順位
objectIdexternalId1
userPrincipalNameemails[type eq "work"].value 
mailNicknameuserName 

各属性マッピングには

  • Azure Active Directory 属性(ソース属性)。
  • customappsso 属性(ターゲット属性)。
  • 一致する優先順位。

各属性に対して

  1. 編集する属性を選択します。
  2. 必要な設定を選択します。
  3. Okを選択します。

SAML 設定が推奨 SAML 設定と異なる場合は、マッピング属性を選択し、それに従って変更します。特に、objectId source 属性をexternalId target 属性にマッピングする必要があります。

マッピングが表に記載されていない場合は、Azure Active Directory のデフォルトを使用します。必要な属性のリストについては、内部グループ SCIM APIドキュメントを参照してください。

Okta の設定

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

前提条件:

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

  1. Oktaにサインインします。
  2. 右上の「Admin」を選択します。このボタンは管理者エリアからは表示されません。
  3. Application]タブで[Browse App Catalog]を選択します。
  4. GitLabを検索し、GitLabアプリケーションを見つけて選択します。
  5. GitLabアプリケーションの概要ページで、Addを選択します。
  6. Application Visibilityで両方のチェックボックスを選択します。現在、GitLabアプリケーションはSAML認証に対応していないため、アイコンはユーザーに表示されません。
  7. Doneを選択してアプリケーションの追加を完了します。
  8. Provisioningタブで、Configure API integration を選択します。
  9. API インテグレーションを有効にする]を選択します。
    • Base URL には、GitLab SCIM 設定ページのSCIM API エンドポイント URLからコピーした URL を貼り付けます。
    • API Token には、GitLab SCIM 設定ページのYour SCIM tokenからコピーした SCIM トークンを貼り付けます。
  10. 設定を確認するには、Test API Credentials を選択します。
  11. Save を選択します。
  12. APIインテグレーションの詳細を保存すると、左側に新しい設定タブが表示されます。アプリへ」を選択します。
  13. 編集]を選択します。
  14. ユーザーの作成]と[ユーザーの停止]の両方の[有効]チェックボックスを選択します。
  15. Save を選択します。
  16. Assignmentsタブでユーザーを割り当てます。割り当てられたユーザーはGitLabグループで作成・管理されます。

ユーザーアクセス

GitLab 14.0から導入されたSAML SSOまたはSCIMプロビジョニングによって作成されたGitLabユーザーは、以下のように表示されます。 エンタープライズバッジで表示されます。

同期プロセス中、すべての新規ユーザー:

次の図は、SCIM アプリにユーザーを追加したときに起こることを説明しています:

graph TD 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:\nThe 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れます。既に存在するtest_user1 場合 test_user1、GitLabはサフィックスをインクリメントして未使用のユーザー名を探します。4回試しても未使用のユーザー名が見つからない場合は、ランダムな文字列がユーザー名に付加されます。

それ以降、新規ユーザーも既存ユーザーもグループにアクセスできるようになります:

  • ID プロバイダのダッシュボードから。
  • リンクに直接アクセスする方法。

ロール情報については、グループ SAMLページを参照してください。

SCIM for GitLab グループで作成されたユーザーのパスワード

GitLabはすべてのユーザーアカウントにパスワードを要求します。SCIM for GitLabグループを通して作成されたユーザーのパスワードをGitLabが生成する方法の詳細については、統合認証を通して作成されたユーザーの生成パスワードをご覧ください。

グループSAMLが設定されていて、既存のGitLab.comアカウントがある場合、ユーザーはSCIMとSAMLアイデンティティをリンクすることができます。同期がアクティブになると、既存のユーザーに対してプロビジョニングエラーが発生する可能性があります。

SCIM と SAML アイデンティティをリンクするには、以下の手順に従います:

  1. GitLab.com ユーザーアカウントのプライマリメールアドレスを、アイデンティティプロバイダのユーザープロファイルのメールアドレスと一致するように更新します。
  2. SAML アイデンティティをリンクします。

アクセスを削除

アクセス権を削除するために、ID プロバイダ上でユーザーを削除または無効化します:

  • トップレベルのグループ。
  • すべてのサブグループとプロジェクト。

アイデンティティ・プロバイダが設定されたスケジュールに基づいて同期を実行した後、ユーザーのメンバーシップは取り消され、ユーザーはアクセスできなくなります。

SCIM を有効にしても、SAML ID を持っていない既存のユーザは自動的に削除されません。

note
デプロビジョニングは GitLab ユーザーアカウントを削除しません。
graph TD 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]