- 群组推送规则
- 限制 Git 访问协议
- 按 IP 地址限制群组访问
- 按域名限制群组访问
- 阻止用户请求访问群组
- 防止项目在群组外派生
- 防止成员被添加到群组中的项目
- 通过 LDAP 管理群组成员身份
- 故障排除
群组访问和权限
配置您的群组以控制群组权限和访问。
群组推送规则
- 移动到“设置/仓库”于 15.4 版本。
群组推送规则允许群组维护者为特定群组中新创建的项目设置推送规则。
在 15.4 及更高版本,为群组配置推送规则:
- 在左侧边栏中,选择推送规则。
- 选择您想要的设置。
- 选择 保存推送规则。
在 15.3 及更早版本,为群组配置推送规则:
- 在左侧边栏中,选择 设置 > 仓库 页面。
- 展开 预定义推送规则 部分。
- 选择您想要的设置。
- 选择 保存推送规则。
该群组的新子组已根据以下任一条件为它们设置推送规则:
- 定义了推送规则的最近父组。
- 如果没有父组定义推送规则,则在实例级别设置推送规则。
限制 Git 访问协议
- 引入于 15.1 版本,功能标志为
group_level_git_protocol_control
。默认禁用。- 功能标志删除于 16.0 版本。
您可以将用于访问群组仓库的允许协议设置为 SSH、HTTPS 或两者皆有。当管理员配置实例设置时,此设置被禁用。
要更改群组允许的 Git 访问协议:
- 在左侧导航栏,选择 搜索或前往 并找到您的群组。
- 选择 设置 > 通用。
- 展开 权限和群组功能 部分。
- 从 启用的 Git 访问协议 中选择允许的协议。
- 选择 保存更改。
按 IP 地址限制群组访问
为确保只有您组织中的人员可以访问特定资源,您可以按 IP 地址限制对群组的访问。此群组级别设置适用于:
- UI,包括子群组、项目和议题。不适用于极狐GitLab Pages。
- 适用于 API。
- 在 15.1 及更高版本的私有化部署实例中,您还可以在群组级别配置全局允许的 IP 地址范围。
管理员可以将 IP 地址的限制访问与全局允许的 IP 地址结合起来。
要通过 IP 地址限制群组访问:
- 在左侧边栏中,选择 搜索或转到,并找到您的群组。
- 在左侧边栏中,选择 设置 > 通用。
- 展开 权限和群组功能 部分。
- 在 按 IP 地址限制群组访问 文本框中,以 CIDR 表示法输入 IPv4 或 IPv6 地址范围列表。此列表:
- 对 IP 地址范围的数量没有限制。
- 大小限制为 1 GB。
- 适用于 SSH 或 HTTP 授权的 IP 地址范围。您不能按授权类型拆分此列表。
- 选择 保存更改。
安全隐患
在配置 IP 地址限制之前,您应该考虑一些安全隐患。
- 管理员和群组所有者可以从任何 IP 地址访问群组设置,而不受 IP 限制。但是:
- 从不允许的 IP 地址访问时,群组所有者可以访问子组,但不能访问属于该群组或子组的项目。
- 从不允许的 IP 地址访问时,管理员可以访问属于该群组的项目。对项目的访问包括从中克隆代码。
- 用户仍然可以看到群组和项目名称以及层次结构。以下内容受到限制:
- 群组,包括所有群组资源。
- 项目,包括所有项目资源。
- 注册 runner 时,不受 IP 限制。当 runner 请求新的作业或更新作业的状态时,它也不受 IP 限制的约束。但是,当正在运行的 CI/CD 作业从受限 IP 地址发送 Git 请求时,IP 限制会阻止代码被克隆。
- 用户可能仍会在其仪表盘上看到来自 IP 受限群组和项目的一些事件,可能包括推送、合并、发布或评论事件。
- SaaS 支持通过 SSH 进行 Git 操作的 IP 访问限制。当
gitlab-sshd
启用 PROXY 协议时,IP 访问限制适用于私有化部署实例。
按域名限制群组访问
- 支持将组成员资格限制为仅包含来自允许的电子邮件域的一个子集的那些群组引入于极狐GitLab 15.1.1。
您可以阻止将电子邮件地址在特定域名中的用户添加到群组及其项目。
按域名限制群组访问:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 设置 > 通用。
- 展开 权限和群组功能 部分。
- 在 通过电子邮件域名限制成员资格 字段中,输入域名。
- 选择 保存修改。
每当您尝试添加新用户时,都会将用户的主要电子邮件与此列表进行比较。 只有具有匹配任何已配置电子邮件域名限制的主要电子邮件的用户,才能添加到群组中。
某些域名不能被限制,比如最受欢迎的公共电子邮件域名,例如:
-
gmail.com
、yahoo.com
、aol.com
、icloud.com
-
hotmail.com
、hotmail.co.uk
、hotmail.fr
-
msn.com
、live.com
、outlook.com
共享群组时,源命名空间和目标命名空间都必须允许成员电子邮件地址的域名。
阻止用户请求访问群组
作为群组所有者,您可以阻止非成员请求访问您的群组。
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 设置 > 通用。
- 展开 权限和群组功能 部分。
- 清除 允许用户请求访问 复选框。
- 选择 保存更改。
防止项目在群组外派生
默认情况下,群组中的项目可以派生。然而,您可以阻止群组中的项目被派生到当前顶级群组之外。
先决条件:
- 仅在顶级群组启用了此设置。
- 所有子群组从顶级群组继承了此设置,且它无法在子群组级别更改。
要组织项目被派生到群组之外:
- 在左侧导航栏,选择 搜索或转到 并找到您的群组。
- 选择 设置 > 通用。
- 展开 权限和群组功能 部分。
- 清除 阻止项目被派生到当前群组外 复选框。
- 选择 保存更改。
现有的派生不会被删除。
防止成员被添加到群组中的项目
作为群组所有者,您可以阻止群组中所有项目的任何新项目成员资格,从而可以更严格地控制项目成员资格。
例如,如果您想锁定一个审计事件的群组,则可以保证在审计期间不能修改项目成员资格。
您仍然可以邀请群组或向群组添加成员,隐式授予成员访问 锁定 群组中的项目的权限。
如果启用群组成员锁定,群组所有者仍然可以:
- 邀请群组或将成员添加到群组,让他们可以访问 锁定 群组中的项目。
- 改变群组成员的角色。
该设置不级联。子组中的项目观察子组配置,忽略父组。
要防止将成员添加到组中的项目:
- 在左侧导航栏,选择 搜索或转到 并找到您的群组。
- 选择 设置 > 通用。
- 展开 权限和群组功能 部分。
- 在 群组成员 部分,选择 阻止成员被添加到群组中的项目。
- 选择 保存更改。
锁定群组的成员资格后:
- 以前拥有权限的所有用户都不能再将成员添加到群组中。
- 向项目添加新用户的 API 请求是不可能的。
通过 LDAP 管理群组成员身份
- 对于群组中同步用户的自定义角色支持引入于极狐GitLab 17.2。
群组同步允许 LDAP 群组被映射到极狐GitLab 群组。这为每个群组的用户管理提供了更多控制。要配置群组同步,编辑 group_base
DN ('OU=Global Groups,OU=GitLab INT,DC=GitLab,DC=org'
)。这个 OU 包含所有与极狐GitLab 群组关联的群组。
可以使用 CN 或过滤器来创建群组链接。要创建这些群组链接,请前往群组的 设置 > LDAP 同步 页面。在配置链接后,可能需要等待一小时才能将用户同步到极狐GitLab 群组。在你配置了链接后:
- 对于极狐GitLab 16.7 及之前版本,群组所有者无法添加成员到群组,也无法从群组移除成员。LDAP 服务器被认为是所有使用 LDAP 认证的用户的单一来源。
- 对于极狐GitLab 16.8 及之后版本,群组所有者可以使用 成员角色 API 添加或删除服务帐户用户到或从群组,即使在群组 LDAP 同步启用时。群组所有者无法添加或删除非服务帐户用户。
当用户属于两个配置为相同的极狐GitLab 群组的 LDAP 组时,极狐GitLab 为他们分配更高的角色。比如:
- 用户是 LDAP 群组
Owner
和Dev
的成员。 - 极狐GitLab 群组配置了这两个 LDAP 群组。
- 当群组同步完成时,用户被赋予更高的 LDAP 群组角色,因为这是两个 LDAP 群组中的更高角色。
关于 LDAP 和群组同步的管理,请参见 主要的 LDAP 文档。
您可以使用临时解决方法来通过 LDAP 群组管理项目访问权限。
通过 CN 创建群组链接
要使用 LDAP 群组 CN 来创建群组链接:
- 选择 LDAP 服务器 作为链接。
-
同步方式 选择
LDAP Group cn
。 - 在 LDAP Group cn 字段中,开始输入组的 CN。在配置的
group_base
中有一个带有匹配 CN 的下拉菜单。从该列表中选择您的 CN。 - 在 LDAP Access 部分,为在该组中同步的用户选择权限级别。
- 选择 添加同步 按钮。
通过过滤器创建群组链接
要通过过滤器创建群组链接:
- 选择 LDAP 服务器 作为链接。
-
同步方法 选择
LDAP用户过滤器
。 - 在 LDAP 用户过滤器 框中输入您的过滤器。。
- 在 LDAP Access 部分,为在该组中同步的用户选择权限级别。
- 选择 添加同步 按钮。
覆盖用户权限
LDAP 用户权限可以由管理员手动覆盖。要覆盖用户的权限:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 在左侧边栏中,选择 管理 > 成员。
- 在您正在编辑的用户行中,选择铅笔 () 图标。
- 在模态中选择棕色的 编辑权限 按钮。
现在您可以从 成员 页面编辑用户的权限。
故障排除
验证访问是否被 IP 限制阻止
如果用户在通常期望访问时看到 404,并且问题仅限于特定群组,请在 auth.log
rails 日志中搜索以下一项或多项:
-
json.message
:'Attempting to access IP restricted group'
-
json.allowed
:false
在查看日志条目时,将 remote.ip
与群组允许的 IP 列表进行比较。
无法更新群组成员的权限
如果群组所有者无法更新群组成员的权限,请检查哪些成员是列出的。群组所有者只能更新直接成员。
如果成员在父群组中具有相同或更高的角色,则将他们直接添加到子群组中仍然被认为是继承成员。
要查看并更新直接成员关系,请过滤群组以显示直接成员。
在启用 IP 限制后,无法使用 SSH 克隆或拉取
如果在添加 IP 地址限制后,您在使用 SSH 克隆或拉取时遇到问题,请检查您的连接是否默认为 IPv6。
当同时启用 IPV6 和 IPV4 时,有些操作系统会优先使用 IPv6,这在 Git 命令反馈上可能并不是很明显。
如果您的链接使用 IPv6,您可以通过将 IPv6 地址添加到等候列表中来解决此问题。