群组访问和权限

配置您的群组以控制群组权限和访问。

群组推送规则

  • 引入于 12.8 版本。
  • 功能标志移除于 13.4 版本。
  • 移动到“设置/仓库”于 15.4 版本。

群组推送规则允许群组维护者为特定群组中新创建的项目设置推送规则

在 15.4 及更高版本,为群组配置推送规则:

  1. 在左侧边栏,选择推送规则。
  2. 选择您想要的设置。
  3. 选择 保存推送规则

在 15.3 及更早版本,为群组配置推送规则:

  1. 在左侧边栏,选择 设置 > 仓库 页面。
  2. 展开 预定义推送规则 部分。
  3. 选择您想要的设置。
  4. 选择 保存推送规则

该群组的新子组已根据以下任一条件为它们设置推送规则:

  • 定义了推送规则的最近父组。
  • 如果没有父组定义推送规则,则在实例级别设置推送规则。

限制 Git 访问协议

引入于 15.1 版本,功能标志为 group_level_git_protocol_control。默认禁用。

您可以将用于访问群组仓库的允许协议设置为 SSH、HTTPS 或两者皆有。当管理员配置实例设置时,此设置被禁用。

要更改群组允许的 Git 访问协议:

  1. 进入群组的 设置 > 通用 页面。
  2. 展开 权限和群组功能 部分。
  3. 启用的 Git 访问协议 中选择允许的协议。
  4. 选择 保存更改

按 IP 地址限制群组访问

为确保只有您组织中的人员可以访问特定资源,您可以按 IP 地址限制对群组的访问。此群组级别设置适用于:

  • UI,包括子组、项目和议题。
  • 在 12.3 及更高版本中,适用于 API。

安全隐患

在配置 IP 地址限制之前,您应该考虑一些安全隐患。

  • 管理员和群组所有者可以从任何 IP 地址访问群组设置,而不受 IP 限制。但是:
    • 从不允许的 IP 地址访问时,群组所有者无法访问属于该群组的项目。
    • 从不允许的 IP 地址访问时,管理员可以访问属于该群组的项目。对项目的访问包括从中克隆代码。
    • 用户仍然可以看到群组和项目名称以及层次结构。以下内容受到限制:
      • 群组,包括所有群组资源。
      • 项目,包括所有项目资源。
  • 注册 runner 时,不受 IP 限制。当 runner 请求新的作业或更新作业的状态时,它也不受 IP 限制的约束。但是,当正在运行的 CI/CD 作业从受限 IP 地址发送 Git 请求时,IP 限制会阻止代码被克隆。
  • 用户可能仍会在其仪表盘上看到来自 IP 受限群组和项目的一些事件,可能包括推送、合并、发布或评论事件。
  • 仅 SaaS 支持通过 SSH 进行 Git 操作的 IP 访问限制。应用于私有化部署实例的 IP 访问限制完全阻止 SSH。

通过 IP 地址限制群组访问

要通过 IP 地址限制群组访问:

  1. 在顶部栏上,选择 主菜单 > 群组 并找到您的群组。
  2. 在左侧边栏中,选择 设置 > 通用
  3. 展开 权限和群组功能 部分。
  4. 通过 IP 地址限制访问 字段中,以 CIDR 表示法输入 IPv4 或 IPv6 地址范围。
  5. 选择 保存修改

在 15.1 及更高版本的私有化部署安装实例中,您还可以在群组级别,配置全局允许的 IP 地址范围

按域名限制群组访问

您可以阻止将电子邮件地址在特定域名中的用户添加到群组及其项目。

按域名限制群组访问:

  1. 在顶部栏上,选择 主菜单 > 群组 并找到您的群组。
  2. 在左侧边栏中,选择 设置 > 通用
  3. 展开 权限和群组功能 部分。
  4. 通过电子邮件域名限制成员资格 字段中,输入域名。
  5. 选择 保存修改

每当您尝试添加新用户时,都会将用户的主要电子邮件与此列表进行比较。 只有具有匹配任何已配置电子邮件域名限制的主要电子邮件的用户,才能添加到群组中。

某些域名不能被限制,比如最受欢迎的公共电子邮件域名,例如:

  • gmail.comyahoo.comaol.comicloud.com
  • hotmail.comhotmail.co.ukhotmail.fr
  • msn.comlive.comoutlook.com

共享群组时,源命名空间和目标命名空间都必须允许成员电子邮件地址的域名。

note通过电子邮件限制成员 列表中删除域名,不会从该群组下的组和项目中删除具有此电子邮件域名的用户。此外,如果您与另一个群组共享一个群组或项目,则目标群组可以将更多不在源群组列表中的电子邮件域名添加到其列表中。因此,此功能并不能确保当前成员始终符合 通过电子邮件限制成员 列表。

防止群组层次结构外的群组共享

您可以配置顶级群组,使其子组和项目无法邀请顶级群组层次结构之外的其他群组。 此选项仅适用于顶级群组。

例如,在以下群组和项目层次结构中:

  • 动物 > 狗 > 狗的项目
  • 动物 > 猫
  • 植物 > 树木

如果您阻止在 动物 群组的层次结构之外进行群组共享:

  • 可以邀请群组
  • 不能邀请群组树木
  • 狗的项目可以邀请群组
  • 狗的项目无法邀请群组树木

要防止在群组的层次结构之外共享:

  1. 在顶部栏上,选择 主菜单 > 群组 并找到您的群组。
  2. 在左侧边栏中,选择 设置 > 通用
  3. 展开 权限和群组功能 部分。
  4. 选择 禁止成员发送邀请到 <group_name> 及其子群组
  5. 选择 保存更改

防止与群组共享项目

防止群组中的项目与与另一个群组共享项目,以实现对项目访问的更严格控制。

要防止与其他组共享项目:

  1. 在顶部栏上,选择 主菜单 > 群组 并找到您的群组。
  2. 在左侧边栏中,选择 设置 > 通用
  3. 展开 权限和群组功能 部分。
  4. 选择 禁止与其他群组共享 <group_name> 中的项目
  5. 选择 保存更改

此设置适用于所有子组,除非被群组所有者覆盖。启用该设置后,已添加到项目的群组将失去访问权限。

阻止用户请求访问群组

作为群组所有者,您可以阻止非成员请求访问您的群组。

  1. 在顶部栏上,选择 主菜单 > 群组,并找到您的群组。
  2. 选择 您的群组
  3. 找到群组并选择它。
  4. 从左侧菜单中,选择 设置 > 通用
  5. 展开 权限和群组功能 部分。
  6. 清除 允许用户请求访问 复选框。
  7. 选择 保存更改

防止项目在群组外派生

默认情况下,群组中的项目可以派生。或者在专业版或更高级别,您可以防止群组中的项目在当前顶级群组之外派生。

此设置将从 SAML 设置页面中删除,并迁移到群组设置页面。在过渡期间,这两种设置都会被考虑在内。如果其中之一设置为 true,则该群组不允许外部派生。

防止项目在群组外派生:

  1. 在顶部栏上,选择 主菜单 > 群组 并找到您的群组。
  2. 在左侧边栏中,选择 设置 > 通用
  3. 勾选 阻止项目派生到当前群组以外
  4. 选择 保存更改

现有的派生不会被删除。

防止成员被添加到群组中的项目

作为群组所有者,您可以阻止群组中所有项目的任何新项目成员资格,从而可以更严格地控制项目成员资格。

例如,如果您想锁定一个审计事件的群组,则可以保证在审计期间不能修改项目成员资格。

您仍然可以邀请群组或向群组添加成员,隐式授予成员访问 锁定 群组中的项目的权限。

该设置不级联。子组中的项目观察子组配置,忽略父组。

要防止将成员添加到组中的项目:

  1. 在顶部栏上,选择 主菜单 > 群组 并找到您的群组。
  2. 在左侧边栏中,选择 设置 > 通用
  3. 成员资格 下,选择 用户不能被添加到此群组中的项目
  4. 选择 保存更改

以前拥有权限的所有用户都不能再将成员添加到群组中。向项目添加新用户的 API 请求是不可能的。

通过 LDAP 管理群组成员身份

群组同步允许将 LDAP 组映射到群组,提供了对每个群组的用户管理的更多控制。要配置群组同步,请编辑 group_base DN ('OU=Global Groups,OU=GitLab INT,DC=GitLab,DC=org')。此 OU 包含将与群组关联的所有 LDAP 组。

可以使用 CN 或过滤器创建群组链接。要创建这些群组链接,请转至群组的 设置 > LDAP 同步 页面。配置链接后,用户可能需要一个多小时才能与群组同步。

note添加 LDAP 同步时,如果 LDAP 用户是群组成员并且他们不是 LDAP 组的一部分,则他们将从群组中删除。

通过 CN 创建群组链接

要通过 CN 创建群组链接:

  1. 选择 LDAP 服务器 作为链接。
  2. 同步方式 选择 LDAP Group cn
  3. LDAP Group cn 字段中,开始输入组的 CN。在配置的 group_base 中有一个带有匹配 CN 的下拉菜单。从该列表中选择您的 CN。
  4. LDAP Access 部分,为在该组中同步的用户选择权限级别。
  5. 选择 添加同步 按钮。

通过过滤器创建群组链接

要通过过滤器创建群组链接:

  1. 选择 LDAP 服务器 作为链接。
  2. 同步方法 选择 LDAP用户过滤器
  3. LDAP 用户过滤器 框中输入您的过滤器。。
  4. LDAP Access 部分,为在该组中同步的用户选择权限级别。
  5. 选择 添加同步 按钮。

覆盖用户权限

LDAP 用户权限可以由管理员手动覆盖。要覆盖用户的权限:

  1. 在顶部栏上,选择 主菜单 > 群组 并找到您的群组。
  2. 在左侧栏,选择 群组信息 > 成员
  3. 在您正在编辑的用户行中,选择铅笔 () 图标。
  4. 在模态中选择棕色的 编辑权限 按钮。

现在您可以从 成员 页面编辑用户的权限。

故障排除

验证访问是否被 IP 限制阻止

如果用户在通常期望访问时看到 404,并且问题仅限于特定群组,请在 auth.log rails 日志中搜索以下一项或多项:

  • json.message: 'Attempting to access IP restricted group'
  • json.allowed: false

在查看日志条目时,将 remote.ip 与群组允许的 IP 列表进行比较。