SAML 群组同步
私有化部署实例中此功能引入于极狐GitLab 15.1。
groups
列表不匹配,则会进行移除。
在进行更改之前,您需要确保 SAML 响应包含 groups
属性并且 AttributeValue
的值与极狐GitLab 中的 SAML 群组名称匹配,或者您确保从极狐GitLab 中移除所有群组以禁用群组同步。配置 SAML 群组同步
要为私有化部署的极狐GitLab 实例配置 SAML 群组同步:
- 配置 SAML OmniAuth Provider。
-
确保您的 SAML 身份提供商发送与
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" } } ]
要为 JihuLab.com 实例配置 SAML 群组同步:
- 请参阅 JihuLab.com 群组的 SAML SSO。
- 确保您的 SAML 身份提供商发送名为
Groups
或groups
的属性语句。
<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 群组链接
启用 SAML 后,具有维护者或所有者角色的用户会在群组的 设置 > SAML 群组链接 中看到一个新菜单项。您可以配置一个或多个 SAML 群组链接 以将 SAML 身份提供商群组名称映射到极狐GitLab 角色中。可以对顶级群组或任何子群组执行此操作。
要链接 SAML 群组:
- 在 SAML 群组名称 中,输入相关
saml:AttributeValue
的值。此处输入的值必须与 SAML 响应中发送的值完全匹配。对于某些 IdP,这可能是群组 ID 或对象 ID (Azure AD),而不是群组名称。 - 在 访问级别 中选择角色。
- 选择 保存。
- 如果需要,请重复添加其他群组链接。
如果用户是映射到同一极狐GitLab 群组的多个 SAML 群组的成员,则该用户将获得群组中的最高角色。例如,如果在一个群组链接为访客角色,另一个群组链接为维护者角色,则同时属于这两个群组的用户将获得维护者角色。
授予角色的用户:
每次用户登录时都会评估 SAML 群组成员资格。
使用 API
引入于极狐GitLab 15.3。
您可以使用极狐GitLab API 列举、添加和删除 SAML 群组链接。
Microsoft Azure Active Directory 集成
引入于极狐GitLab 16.3。
要集成 Microsoft Azure AD,您需要:
- 配置 Azure AD 以使极狐GitLab 能够与 Microsoft Graph API 进行通信。
- 配置极狐GitLab。
极狐GitLab 设置为 Azure AD 字段
极狐GitLab 设置 | Azure 字段 |
租户 ID | Directory (tenant) ID |
客户端 ID | Application (client) ID |
客户端 Secret | Value (on Certificates & secrets page) |
配置 Azure AD
- 在 Azure 门户 中,转到 Azure Active Directory > App registrations > All applications,然后选择您的极狐GitLab SAML 应用程序。
- 在 Essentials 下,显示 Application (client) ID 和 Directory (tenant) ID 值。复制这些值,因为您需要它们来进行极狐GitLab 配置。
- 在左侧导航中,选择 Certificates & secrets。
- 在 Client secrets 选项卡上,选择 New client secret。
- 在 Description 文本框中,添加描述。
- 在 Expires 下拉列表中,设置凭证的过期日期。如果 secret 过期,极狐GitLab 集成在凭证更新之前都不再起作用。
- 要生成凭据,请选择 *Add。
- 复制凭证的 Value。该值仅显示一次,您需要它来进行极狐GitLab 配置。
- 在左侧导航中,选择 API permissions。
- 选择 Microsoft Graph > Application permissions。
- 选择复选框 GroupMember.Read.All 和 User.Read.All。
- 选择 Add permissions 进行保存。
- 选择 Grant admin consent for
<application_name>
,然后在确认对话框中选择 Yes。两个权限的 Status 列应更改为带有 Granted for<application_name>
的绿色复选标记。
配置极狐GitLab
为 JihuLab.com 群组配置:
- 在左侧边栏中,选择 搜索或转到 并找到您的顶级群组。
- 选择 设置 > SAML SSO。
- 配置群组的SAML SSO。
- 在 Microsoft Azure 集成 部分中,选中 为此群组启用 Microsoft Azure 集成 复选框。 仅当为群组配置并启用 SAML SSO 时,此部分才可见。
- 输入之前在 Azure 门户中配置 Azure Active Directory 时获取的 租户 ID、客户端 ID 和 客户端 secret。
- 可选。如果使用 Azure AD China,请输入相应的 登录 API 端点 和 Graph API 端点。默认值适用于大多数组织。
- 选择 保存更改。
为私有化部署配置:
- 配置实例的 SAML SSO。
- 在左侧边栏中,选择 搜索或转到。
- 选择 管理中心。
- 选择 设置 > 通用。
- 在 Microsoft Azure 集成 部分中,选中 为此群组启用 Microsoft Azure 集成 复选框。
- 输入之前在 Azure 门户中配置 Azure Active Directory 时获取的 租户 ID、客户端 ID 和 客户端 secret。
- 可选。如果使用 Azure AD China,请输入相应的 登录 API 端点 和 Graph API 端点。默认值适用于大多数组织。
- 选择 保存更改。
使用此配置,如果用户使用 SAML 登录并且 Azure 在响应中发送群组超额声明,极狐GitLab 会启动群组同步作业来调用 Microsoft Graph API 并检索用户的群组成员身份。 然后,极狐GitLab 群组成员身份将根据 SAML 群组链接进行更新。
全局 SAML 群组成员身份锁定
引入于极狐GitLab 15.10。
极狐GitLab 管理员可以使用全局 SAML 群组成员资格锁定功能来防止群组成员邀请新成员加入其成员资格与 SAML 群组链接同步的子群组。
全局群组成员身份锁定仅适用于配置了 SAML 群组链接同步的顶级群组的子群组。任何用户都不能修改为 SAML 群组链接同步配置的顶级群组的成员身份。
启用全局群组成员身份锁定时:
- 只有管理员可以管理任何群组的成员身份,包括访问级别。
- 用户不能:
- 与其他群组共享项目。
- 邀请成员加入在群组中创建的项目。
要启用全局群组成员身份锁定:
- 为您的私有化部署极狐GitLab 实例配置 SAML。
- 在左侧边栏中,选择 搜索或转到。
- 选择 管理中心。
- 在左侧边栏中,选择 设置 > 通用。
- 展开 可见性和访问控制 部分。
- 确保选中 将成员身份锁定到 SAML 同步 复选框。
自动成员移除
群组同步后,不是映射的 SAML 群组成员的用户将从该群组中移除。 在 JihuLab.com 上,顶级群组中的用户不会被移除,而是会被分配默认成员角色。
例如,在下图中:
- Alex Garcia 登录极狐GitLab 并从极狐GitLab 群组 C 中移除,因为他们不属于 SAML 群组 C。
- Sidney Jones 属于 SAML 群组 C,但未添加到极狐GitLab 群组 C 中,因为他们尚未登录。
属于多个 SAML 群组的用户自动从极狐GitLab 群组中移除
将 Azure AD 与 SAML 结合使用时,如果组织中的用户是 150 多个群组的成员,并且您使用 SAML 群组同步,则该用户可能会失去其群组成员身份。 有关更多信息,请参阅 Microsoft 群组超额的相关内容。
极狐GitLab 具有 Microsoft Azure Active Directory 集成 功能,可为拥有 150 多个群组成员身份的用户的组织启用 SAML 群组同步。此集成使用 Microsoft Graph API 来获取所有用户成员资格,且不限于 150 个群组。
否则,您可以通过更改群组声明以使用 Groups assigned to the application
选项来解决这个问题。