Help us learn about your current experience with the documentation. Take the survey.

控制访问和可见性

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab Self-Managed, GitLab Dedicated

GitLab 实例的管理员可以对分支、项目、代码片段、组等实施特定的控制。 例如,您可以定义:

  • 哪些角色可以创建或删除项目。
  • 已删除项目和组的保留期。
  • 组、项目和代码片段的可见性。
  • SSH 密钥允许的类型和长度。
  • Git 设置,例如接受的协议(SSH 或 HTTPS)和克隆 URL。
  • 允许或阻止推送镜像和拉取镜像。
  • 允许或阻止邀请加入组和项目。

前提条件:

  • 您必须是管理员。

要访问可见性和访问控制选项:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制

定义哪些角色可以创建项目

您可以为实例添加项目创建保护。这些保护定义了哪些角色可以在实例上向组添加项目。要更改拥有创建项目权限的角色:

前提条件:

  • 您必须是管理员。
  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制
  4. 对于 创建项目所需的默认最低角色,选择所需角色:
    • 无。
    • 管理员。
    • 所有者。
    • 维护者。
    • 开发者。
  5. 选择 保存更改

如果您选择 管理员 并且启用了管理员模式,则管理员必须进入管理员模式才能创建新项目。

将项目删除限制为仅管理员

  • Tier: Premium, Ultimate
  • Offering: GitLab Self-Managed, GitLab Dedicated

前提条件:

  • 您必须是管理员,或者在项目中拥有所有者角色。

要将项目删除限制为仅管理员:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制
  4. 滚动到 允许删除项目,然后选择 管理员
  5. 选择 保存更改

要禁用此限制:

  1. 选择 所有者和管理员
  2. 选择 保存更改

删除保护

这些保护有助于防止实例上的组和项目被意外删除。

保留期

组和项目在您定义的保留期内保持可恢复状态。默认情况下, 这是 7 天,但您可以更改它。如果您将保留期设置为 0 天,GitLab 会立即删除已删除的组和项目。您无法恢复它们。

保留期必须在 190 天之间。

延迟项目删除

前提条件:

  • 您必须是管理员。
  • 您必须先为组启用延迟项目删除,然后才能为项目启用它。 删除保护不适用于仅项目的情况。
  • 禁用时,GitLab 会强制执行此延迟删除设置,您无法覆盖它。

要配置延迟项目删除:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制
  4. 滚动到 删除保护 并将保留期设置为 190 天之间的值。
  5. 选择 保存更改

延迟组删除

如果保留期为 1 天或更长,组将保持可恢复状态。

在 GitLab 16.0 及更高版本中,保留已删除选项被移除,延迟组删除成为默认设置。

覆盖默认设置并立即删除

要覆盖延迟并立即删除标记为待移除的项目:

  1. 恢复项目
  2. 按照管理项目页面中的说明删除项目。

配置项目可见性默认值

要设置新项目的默认可见性级别

前提条件:

  • 您必须是管理员。
  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制
  4. 选择所需的默认项目可见性:
    • 私有 - 明确授予每个用户项目访问权限。如果此项目是组的一部分,则授予组成员访问权限。
    • 内部 - 任何经过身份验证的用户(外部用户除外)都可以访问该项目。
    • 公开 - 任何用户都可以无需任何身份验证即可访问该项目。
  5. 选择 保存更改

配置代码片段可见性默认值

要设置新代码片段的默认可见性级别:

前提条件:

  • 您必须是管理员。
  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制
  4. 对于 默认代码片段可见性,选择您所需的可见性级别:
    • 私有
    • 内部。此设置在 GitLab.com 上对新项目、组和代码片段已禁用。 使用 内部 可见性设置的现有代码片段将保留此设置。要了解更多 关于此更改的信息,请参阅 issue 12388
    • 公开
  5. 选择 保存更改

配置组可见性默认值

要设置新组的默认可见性级别:

前提条件:

  • 您必须是管理员。
  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制
  4. 对于 默认组可见性,选择您所需的可见性级别:
    • 私有 - 只有成员可以查看该组及其项目。
    • 内部 - 任何经过身份验证的用户(外部用户除外)都可以查看该组以及任何内部项目。
    • 公开 - 无需身份验证即可查看该组以及任何公开项目。
  5. 选择 保存更改

有关组可见性的更多详细信息,请参阅 组可见性

限制可见性级别

限制可见性级别时,请考虑这些限制如何与 继承其可见性的子组和项目的权限交互 与您正在更改的项目。

此设置不适用于在个人命名空间下创建的项目。 有一个功能请求将此 功能扩展到企业用户

要限制组、项目、代码片段和选定页面的可见性级别:

前提条件:

  • 您必须是管理员。
  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制
  4. 对于 限制的可见性级别,选择要限制的所需可见性级别。
    • 如果您限制 公开 级别:
      • 只有管理员可以创建公开组、项目和代码片段。
      • 用户配置文件仅对通过 Web 界面进行身份验证的用户可见。
      • 用户属性通过 GraphQL API 不可见。
    • 如果您限制 内部 级别:
      • 只有管理员可以创建内部组、项目和代码片段。
    • 如果您限制 私有 级别:
      • 只有管理员可以创建私有组、项目和代码片段。
  5. 选择 保存更改

您不能限制设置为新项目或组默认值的可见性级别。 相反,您不能将限制的可见性级别设置为新项目或组的默认值。

配置启用的 Git 访问协议

使用 GitLab 访问限制,您可以选择用户可用于 与 GitLab 通信的协议。禁用访问协议不会阻止对 服务器本身的端口访问。用于协议的端口,SSH 或 HTTP(S),仍然可以访问。 GitLab 限制在应用程序级别应用。

GitLab 仅允许对您选择的协议执行 Git 操作:

  • 如果您同时启用 SSH 和 HTTP(S),用户可以选择任一协议。
  • 如果您仅启用一个协议,项目页面将仅显示允许协议的 URL,没有更改它的选项。

要为实例上的所有项目指定启用的 Git 访问协议:

前提条件:

  • 您必须是管理员。
  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制
  4. 对于 启用的 Git 访问协议,选择您所需的协议:
    • SSH 和 HTTP(S)。
    • 仅 SSH。
    • 仅 HTTP(S)。
  5. 选择 保存更改

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 指定新值:

前提条件:

  • 您必须是管理员。
  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制
  4. HTTP(S) 的自定义 Git 克隆 URL 输入根 URL。
  5. 选择 保存更改

配置 RSA、DSA、ECDSA、ED25519、ECDSA_SK、ED25519_SK SSH 密钥的默认值

这些选项指定 SSH 密钥的允许类型和长度

要为每种密钥类型指定限制:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制
  4. 转到 RSA SSH 密钥
  5. 对于每种密钥类型,您可以完全允许或阻止其使用,或者仅允许以下长度:
    • 至少 1024 位。
    • 至少 2048 位。
    • 至少 3072 位。
    • 至少 4096 位。
    • 至少 1024 位。
  6. 选择 保存更改

启用项目镜像

GitLab 默认启用项目镜像。如果您禁用它,则 拉取镜像推送镜像 不再 在每个存储库中工作。它们只能由管理员用户在每个项目的基础上重新启用。

要允许实例上的项目维护者按项目配置镜像:

前提条件:

  • 您必须是管理员。
  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 存储库
  3. 展开 存储库镜像
  4. 选择 允许项目维护者配置存储库镜像
  5. 选择 保存更改

配置全局允许的 IP 地址范围

管理员可以将 IP 地址范围与 每个组的 IP 限制结合使用。 全局允许的 IP 地址使 GitLab 安装的某些方面能够正常工作,即使当 组设置了自己的 IP 地址限制时也是如此。

例如,如果 GitLab Pages 守护程序在 10.0.0.0/24 范围上运行,则全局允许该范围。 即使组的 IP 地址限制不包括 10.0.0.0/24 范围,GitLab Pages 仍然可以从流水线获取工件。

要将 IP 地址范围添加到组的允许列表:

前提条件:

  • 您必须是管理员。
  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制
  4. 全局允许的 IP 范围 中,提供 IP 地址范围列表。此列表:
    • 对 IP 地址范围的数量没有限制。
    • 适用于 SSH 或 HTTP 授权的 IP 地址范围。您不能按 授权类型拆分此列表。
  5. 选择 保存更改

阻止邀请加入组和项目

管理员可以阻止非管理员邀请用户加入实例上的所有组或项目。 当您配置此设置时,只有管理员可以邀请用户加入实例上的组或项目。

诸如共享迁移之类的功能仍然可以允许访问这些组和项目。

管理员还可以阻止用户邀请加入特定组

前提条件:

  • 您必须是管理员。

要阻止邀请加入实例:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制
  4. 选中 阻止组成员邀请 复选框。
  5. 选择 保存更改