控制访问和可见性
- Tier: Free, Premium, Ultimate
- Offering: GitLab Self-Managed, GitLab Dedicated
GitLab 实例的管理员可以对分支、项目、代码片段、组等实施特定的控制。 例如,您可以定义:
- 哪些角色可以创建或删除项目。
- 已删除项目和组的保留期。
- 组、项目和代码片段的可见性。
- SSH 密钥允许的类型和长度。
- Git 设置,例如接受的协议(SSH 或 HTTPS)和克隆 URL。
- 允许或阻止推送镜像和拉取镜像。
- 允许或阻止邀请加入组和项目。
前提条件:
- 您必须是管理员。
要访问可见性和访问控制选项:
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 通用。
- 展开 可见性和访问控制。
定义哪些角色可以创建项目
您可以为实例添加项目创建保护。这些保护定义了哪些角色可以在实例上向组添加项目。要更改拥有创建项目权限的角色:
前提条件:
- 您必须是管理员。
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 通用。
- 展开 可见性和访问控制。
- 对于 创建项目所需的默认最低角色,选择所需角色:
- 无。
- 管理员。
- 所有者。
- 维护者。
- 开发者。
- 选择 保存更改。
如果您选择 管理员 并且启用了管理员模式,则管理员必须进入管理员模式才能创建新项目。
将项目删除限制为仅管理员
- Tier: Premium, Ultimate
- Offering: GitLab Self-Managed, GitLab Dedicated
前提条件:
- 您必须是管理员,或者在项目中拥有所有者角色。
要将项目删除限制为仅管理员:
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 通用。
- 展开 可见性和访问控制。
- 滚动到 允许删除项目,然后选择 管理员。
- 选择 保存更改。
要禁用此限制:
- 选择 所有者和管理员。
- 选择 保存更改。
删除保护
这些保护有助于防止实例上的组和项目被意外删除。
保留期
组和项目在您定义的保留期内保持可恢复状态。默认情况下,
这是 7 天,但您可以更改它。如果您将保留期设置为 0 天,GitLab
会立即删除已删除的组和项目。您无法恢复它们。
保留期必须在 1 到 90 天之间。
延迟项目删除
前提条件:
- 您必须是管理员。
- 您必须先为组启用延迟项目删除,然后才能为项目启用它。 删除保护不适用于仅项目的情况。
- 禁用时,GitLab 会强制执行此延迟删除设置,您无法覆盖它。
要配置延迟项目删除:
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 通用。
- 展开 可见性和访问控制。
- 滚动到 删除保护 并将保留期设置为
1到90天之间的值。 - 选择 保存更改。
延迟组删除
如果保留期为 1 天或更长,组将保持可恢复状态。
在 GitLab 16.0 及更高版本中,保留已删除选项被移除,延迟组删除成为默认设置。
覆盖默认设置并立即删除
要覆盖延迟并立即删除标记为待移除的项目:
配置项目可见性默认值
要设置新项目的默认可见性级别:
前提条件:
- 您必须是管理员。
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 通用。
- 展开 可见性和访问控制。
- 选择所需的默认项目可见性:
- 私有 - 明确授予每个用户项目访问权限。如果此项目是组的一部分,则授予组成员访问权限。
- 内部 - 任何经过身份验证的用户(外部用户除外)都可以访问该项目。
- 公开 - 任何用户都可以无需任何身份验证即可访问该项目。
- 选择 保存更改。
配置代码片段可见性默认值
要设置新代码片段的默认可见性级别:
前提条件:
- 您必须是管理员。
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 通用。
- 展开 可见性和访问控制。
- 对于 默认代码片段可见性,选择您所需的可见性级别:
- 私有。
- 内部。此设置在 GitLab.com 上对新项目、组和代码片段已禁用。 使用 内部 可见性设置的现有代码片段将保留此设置。要了解更多 关于此更改的信息,请参阅 issue 12388。
- 公开。
- 选择 保存更改。
配置组可见性默认值
要设置新组的默认可见性级别:
前提条件:
- 您必须是管理员。
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 通用。
- 展开 可见性和访问控制。
- 对于 默认组可见性,选择您所需的可见性级别:
- 私有 - 只有成员可以查看该组及其项目。
- 内部 - 任何经过身份验证的用户(外部用户除外)都可以查看该组以及任何内部项目。
- 公开 - 无需身份验证即可查看该组以及任何公开项目。
- 选择 保存更改。
有关组可见性的更多详细信息,请参阅 组可见性。
限制可见性级别
限制可见性级别时,请考虑这些限制如何与 继承其可见性的子组和项目的权限交互 与您正在更改的项目。
此设置不适用于在个人命名空间下创建的项目。 有一个功能请求将此 功能扩展到企业用户。
要限制组、项目、代码片段和选定页面的可见性级别:
前提条件:
- 您必须是管理员。
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 通用。
- 展开 可见性和访问控制。
- 对于 限制的可见性级别,选择要限制的所需可见性级别。
- 如果您限制 公开 级别:
- 只有管理员可以创建公开组、项目和代码片段。
- 用户配置文件仅对通过 Web 界面进行身份验证的用户可见。
- 用户属性通过 GraphQL API 不可见。
- 如果您限制 内部 级别:
- 只有管理员可以创建内部组、项目和代码片段。
- 如果您限制 私有 级别:
- 只有管理员可以创建私有组、项目和代码片段。
- 如果您限制 公开 级别:
- 选择 保存更改。
您不能限制设置为新项目或组默认值的可见性级别。 相反,您不能将限制的可见性级别设置为新项目或组的默认值。
配置启用的 Git 访问协议
使用 GitLab 访问限制,您可以选择用户可用于 与 GitLab 通信的协议。禁用访问协议不会阻止对 服务器本身的端口访问。用于协议的端口,SSH 或 HTTP(S),仍然可以访问。 GitLab 限制在应用程序级别应用。
GitLab 仅允许对您选择的协议执行 Git 操作:
- 如果您同时启用 SSH 和 HTTP(S),用户可以选择任一协议。
- 如果您仅启用一个协议,项目页面将仅显示允许协议的 URL,没有更改它的选项。
要为实例上的所有项目指定启用的 Git 访问协议:
前提条件:
- 您必须是管理员。
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 通用。
- 展开 可见性和访问控制。
- 对于 启用的 Git 访问协议,选择您所需的协议:
- SSH 和 HTTP(S)。
- 仅 SSH。
- 仅 HTTP(S)。
- 选择 保存更改。
GitLab 允许 HTTP(S) 协议 用于使用 GitLab CI/CD 作业令牌执行的 Git 克隆或获取请求。 即使您选择 仅 SSH,也会发生这种情况,因为 GitLab Runner 和 CI/CD 作业需要此设置。
自定义 HTTP(S) 的 Git 克隆 URL
- Offering: GitLab Self-Managed
您可以自定义 HTTP(S) 的项目 Git 克隆 URL,这会影响显示给 用户的项目页面上的克隆面板。例如,如果:
- 您的 GitLab 实例位于
https://example.com,那么项目克隆 URL 类似于https://example.com/foo/bar.git。 - 您希望克隆 URL 看起来像
https://git.example.com/gitlab/foo/bar.git, 您可以将此设置设置为https://git.example.com/gitlab/。
要在 gitlab.rb 中为 HTTP(S) 指定自定义 Git 克隆 URL,请为
gitlab_rails['gitlab_ssh_host'] 设置一个新值。要从 GitLab UI 指定新值:
前提条件:
- 您必须是管理员。
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 通用。
- 展开 可见性和访问控制。
- 为 HTTP(S) 的自定义 Git 克隆 URL 输入根 URL。
- 选择 保存更改。
配置 RSA、DSA、ECDSA、ED25519、ECDSA_SK、ED25519_SK SSH 密钥的默认值
这些选项指定 SSH 密钥的允许类型和长度。
要为每种密钥类型指定限制:
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 通用。
- 展开 可见性和访问控制。
- 转到 RSA SSH 密钥。
- 对于每种密钥类型,您可以完全允许或阻止其使用,或者仅允许以下长度:
- 至少 1024 位。
- 至少 2048 位。
- 至少 3072 位。
- 至少 4096 位。
- 至少 1024 位。
- 选择 保存更改。
启用项目镜像
GitLab 默认启用项目镜像。如果您禁用它,则 拉取镜像 和 推送镜像 不再 在每个存储库中工作。它们只能由管理员用户在每个项目的基础上重新启用。
要允许实例上的项目维护者按项目配置镜像:
前提条件:
- 您必须是管理员。
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 存储库。
- 展开 存储库镜像。
- 选择 允许项目维护者配置存储库镜像。
- 选择 保存更改。
配置全局允许的 IP 地址范围
管理员可以将 IP 地址范围与 每个组的 IP 限制结合使用。 全局允许的 IP 地址使 GitLab 安装的某些方面能够正常工作,即使当 组设置了自己的 IP 地址限制时也是如此。
例如,如果 GitLab Pages 守护程序在 10.0.0.0/24 范围上运行,则全局允许该范围。
即使组的 IP 地址限制不包括
10.0.0.0/24 范围,GitLab Pages 仍然可以从流水线获取工件。
要将 IP 地址范围添加到组的允许列表:
前提条件:
- 您必须是管理员。
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 通用。
- 展开 可见性和访问控制。
- 在 全局允许的 IP 范围 中,提供 IP 地址范围列表。此列表:
- 对 IP 地址范围的数量没有限制。
- 适用于 SSH 或 HTTP 授权的 IP 地址范围。您不能按 授权类型拆分此列表。
- 选择 保存更改。
阻止邀请加入组和项目
管理员可以阻止非管理员邀请用户加入实例上的所有组或项目。 当您配置此设置时,只有管理员可以邀请用户加入实例上的组或项目。
管理员还可以阻止用户邀请加入特定组。
前提条件:
- 您必须是管理员。
要阻止邀请加入实例:
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 通用。
- 展开 可见性和访问控制。
- 选中 阻止组成员邀请 复选框。
- 选择 保存更改。