- SAML グループ同期の設定
- SAML グループ・リンクの設定
- Microsoft Azure Active Directoryインテグレーション
- グローバル SAML グループメンバーシップのロック
- メンバーの自動削除
SAML グループ同期
GitLab 15.1でセルフマネージドインスタンスに導入されました。
groups
SAML レスポンスの groups
リストに不一致がある場合、削除が行われます。groups
変更を行う前に、SAMLレスポンスに groups
属性がgroups
含まれていて groups
、AttributeValue
の値がGitLabのSAMLグループ名と一致するか、GitLabからすべてのグループが削除されてGroup Syncが無効になっていることをgroups
確認して groups
ください。Azure を使った Group Sync のデモについては、Demo:SAML Group Syncをご覧ください。
SAML グループ同期の設定
自己管理GitLabインスタンスにSAMLグループ同期を設定するには:
- SAML OmniAuth Provider を設定します。
-
SAML ID プロバイダが、
groups_attribute
設定の値と同じ名前の属性文を送信することを確認します。以下の属性文の例を参照してください:gitlab_rails['omniauth_providers'] = [ { name: "saml", label: "Provider name", # optional label for login button, defaults to "Saml", groups_attribute: 'Groups', args: { assertion_consumer_service_url: "https://gitlab.example.com/users/auth/saml/callback", idp_cert_fingerprint: "43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8", idp_sso_target_url: "https://login.example.com/idp", issuer: "https://gitlab.example.com", name_identifier_format: "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" } } ]
GitLab.com インスタンスに SAML グループ同期を設定するには:
- GitLab.com グループの SAML SSO を参照してください。
- SAML ID プロバイダが
Groups
またはgroups
という名前の属性ステートメントを送信することを確認します。
Groups
またはgroups
の値は、グループ名または ID のいずれかです。たとえば、Azure AD は、名前の代わりに Azure Group Object ID を送信します。SAML Group Links を設定する場合は、ID 値を使用します。<saml:AttributeStatement>
<saml:Attribute Name="Groups">
<saml:AttributeValue xsi:type="xs:string">Developers</saml:AttributeValue>
<saml:AttributeValue xsi:type="xs:string">Product Managers</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
http://schemas.microsoft.com/ws/2008/06/identity/claims/groups
などの他の属性名は、グループのソースとして受け入れられません。SAML ID プロバイダの設定で必要な属性名を設定する方法の詳細については、グループ SAML および SCIM の設定例を参照してください。
SAML グループ・リンクの設定
SAML が有効になっている場合、メンテナーまたはオーナーのロールを持つユーザーには、グループの設定 > SAML Group Links に新しいメニュー項目が表示されます。SAMLアイデンティティ・プロバイダのグループ名をGitLabロールにマッピングするために、1つ以上のSAML Group Linksを設定することができます。これはトップレベルグループでもサブグループでも可能です。
SAML グループをリンクするには、以下の手順に従います:
-
SAML グループ名]に、該当する
saml:AttributeValue
の値を入力します。ここで入力する値は、SAML 応答で送信される値と完全に一致する必要があります。IdP によっては、これはフレンドリーなグループ名ではなく、グループ ID またはオブジェクト ID(Azure AD)になる場合があります。 - Access Level でロールを選択します。
- Save を選択します。
- 必要に応じてグループリンクを追加します。
ユーザーが同じGitLabグループにマッピングされた複数のSAMLグループのメンバーである場合、ユーザーはグループから最も高いロールを取得します。例えば、あるグループがゲストとしてリンクされ、別のグループがメンテナーとしてリンクされている場合、両方のグループのユーザーはメンテナーのロールを得ます。
付与されるユーザー
- グループ同期でより高いロールを付与されたユーザーは、グループの直接のメンバーとして表示されます。
- グループ同期を持つ下位または同じロールは、グループのメンバシップを継承していると表示されます。
SAML グループ・メンバシップは、ユーザがサインインするたびに評価されます。
API を使用します。
GitLab 15.3 で導入されました。
GitLab API を使って SAML グループリンクを一覧、追加、削除することができます。
Microsoft Azure Active Directoryインテグレーション
GitLab 16.3 で導入されました。
Azure AD は、グループクレームで最大 150 グループを送信します。ユーザーが 150 を超えるグループのメンバーである場合、Azure AD は SAML 応答にグループ超過請求属性を送信します。その場合、Microsoft Graph API を使用してグループメンバーシップを取得する必要があります。
Microsoft Azure AD をインテグレーションするには、以下を実行します:
- GitLabがMicrosoft Graph APIと通信できるようにAzure ADを設定します。
- GitLab を設定します。
GitLabの設定をAzure ADのフィールドへ
GitLabの設定|Azureのフィールド|| =====================================|テナントID|ディレクトリ(テナント)ID|クライアントID|アプリケーション(クライアント)ID|クライアントシークレット|値(証明書とシークレットのページ) |
Azure AD の設定
- Azure Portalで、Azure Active Directory > App registrations > All applicationsと進み、GitLab SAMLアプリケーションを選択します。
- Essentialsの下に、Application (client) IDと Directory (tenant) IDの値が表示されます。GitLabの設定に必要なので、これらの値をコピーしてください。
- 左側のナビゲーションで、[Certificates & secrets]を選択します。
-
クライアントシークレット]タブで、[新しいクライアントシークレット]を選択します。
- 説明テキストボックスに、説明を追加します。
- Expiresドロップダウンリストで、認証情報の有効期限を設定します。シークレットの有効期限が切れると、認証情報が更新されるまでGitLabインテグレーションは動作しなくなります。
- 認証情報を生成するには、Add を選択します。
- クレデンシャルの値をコピーします。この値は一度だけ表示され、GitLabの設定に必要です。
- 左のナビゲーションで、API権限を選択します。
- Microsoft Graph] > [アプリケーション権限] を選択します。
- GroupMember.Read.Allと User.Read.Allのチェックボックスを選択します。
- Add permissionsを選択して保存します。
-
に対して管理者の同意を付与する] を選択
<application_name>
し、確認ダイアログで [はい]を選択 **<application_name>
します<application_name>
。 ** 両方の権限の [ステータス] 列が緑色のチェックに変わり、 [許可] になって<application_name>
いる<application_name>
はず<application_name>
です。
GitLab の設定
GitLab.comグループの設定を行います:
- 左側のサイドバーで、「検索」を選択するか、または「アクセス」してトップレベルグループを検索します。
- 設定]、[SAML SSO] の順に選択します。
- グループのSAML SSO を設定します。
- Microsoft Azure インテグレーションセクションで、[このグループの Microsoft Azure インテグレーションを有効にする] チェックボックスを選択します。このセクションは、グループに SAML SSO が設定され、有効になっている場合にのみ表示されます。
- Azure Portal で Azure Active Directory を設定する際に取得したテナント ID、クライアント ID、クライアントシークレットを入力します。
- オプション。Azure AD for US Government または Azure AD China を使用している場合は、適切なLogin API エンドポイントとGraph API エンドポイントを入力します。デフォルト値は、ほとんどの組織で使用できます。
- 変更を保存を選択します。
セルフマネージドを設定するには
- インスタンスに SAML SSO を設定します。
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 設定] > [全般]を選択します。
- Microsoft Azureインテグレーション]セクションで、[このグループのMicrosoft Azureインテグレーションを有効にする]チェックボックスを選択します。
- Azure Portal で Azure Active Directory を設定する際に取得したテナント ID、クライアント ID、クライアントシークレットを入力します。
- オプション。Azure AD for US Government または Azure AD China を使用している場合は、適切なLogin API エンドポイントとGraph API エンドポイントを入力します。デフォルト値は、ほとんどの組織で使用できます。
- 変更を保存を選択します。
この設定により、ユーザーがSAMLでサインインし、Azureがレスポンスでグループ超過クレームを送信した場合、GitLabはMicrosoft Graph APIを呼び出し、ユーザーのグループメンバーシップを取得するグループ同期ジョブを開始します。その後、SAML Group Linksに従ってGitLabグループのメンバーシップが更新されます。
グローバル SAML グループメンバーシップのロック
GitLab 15.10 で導入されました。
GitLab管理者は、グローバルSAMLグループメンバーシップロックを使用して、SAMLグループリンクでメンバーシップが同期されているサブグループにグループメンバーが新しいメンバーを招待できないようにすることができます。
グローバルグループメンバーシップロックは、SAML Group Links の同期が設定されているトップレベルグループのサブグループにのみ適用されます。SAML Group Links 同期が設定されているトップレベル・グループのメンバシップを変更することはできま せん。
グローバル・グループ・メンバーシップ・ロックが有効になっている場合:
- アクセスレベルを含め、グループのメンバーシップを管理できるのは管理者のみです。
- ユーザーはできません:
- プロジェクトを他のグループと共有すること。
- グループで作成したプロジェクトにメンバーを招待。
グローバルグループメンバーシップのロックを有効にします:
- 自己管理する GitLab インスタンスにSAML を設定します。
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 左サイドバーで、設定 > 一般を選択します。
- 表示とアクセス制御」セクションを展開します。
- メンバーシップを SAML 同期でロックする] チェックボックスが選択されていることを確認します。
メンバーの自動削除
グループ同期後、マッピングされた SAML グループのメンバーでないユーザーはグループから削除されます。GitLab.comでは、トップレベルグループのユーザーは削除される代わりにデフォルトのメンバーシップロールが割り当てられます。
例えば、以下の図では
- Alex Garcia が GitLab にサインインし、GitLab グループ C から外されました。
- Sidney Jones は SAML グループ C に属していますが、まだサインインしていないため GitLab グループ C には追加されていません。
多くの SAML グループに属しているユーザーは、自動的に GitLab グループから削除されます。
Azure AD を SAML で使用する場合、組織内のユーザーが 150 を超えるグループのメンバーであり、SAML グループ同期を使用すると、そのユーザーはグループメンバーシップを失う可能性があります。詳細については、Microsoft Group overages を参照してください。
GitLabには、150を超えるグループにユーザーを持つ組織でSAMLグループ同期を可能にするMicrosoft Azure Active Directoryインテグレーションがあります。このインテグレーションは、Microsoft Graph APIを使用してすべてのユーザーメンバーシップを取得し、150グループに制限されません。
そうでない場合は、グループのクレームを変更して代わりにGroups assigned to the application
オプションを使用することで、このイシューを回避できます。