控制访问和可见性

极狐GitLab 使具有管理员访问权限的用户能够对分支、项目、片段、群组等实施特定控制。

先决条件:

  • 您必须是管理员。

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

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

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

项目创建的实例级保护定义了哪些角色可以在实例上将项目添加到群组。要更改哪些角色有权创建项目:

先决条件:

  • 您必须是管理员。
  1. 在左侧导航栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制 部分。
  4. 对于 默认项目创建保护,选择所需角色:
    • 没有人。
    • 维护者。
    • 开发者和维护者。
  5. 选择 保存更改
note 如果您选择了 管理员管理模式被关闭,那么管理员必须输入管理模式才能创建新项目。

将项目删除的权限设置为仅管理员

  • 用户界面变更于 15.1 版本。

先决条件:

  • 您必须是管理员或者具有项目的 所有者 角色。

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

  1. 在左侧导航栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制 部分。
  4. 滚动到:
    • (15.1 及更高版本)允许删除项目,然后选择 管理员
    • (15.0 及更早版本)默认项目删除保护 并选择 只有管理员可以删除项目
  5. 选择 保存更改

要禁用限制:

  • 选择 所有者和管理员
  • 选择 保存更改

删除保护

  • 引入于 14.2 版本。
  • 默认延迟项目删除重命名为删除保护于 15.1 版本。
  • 为个人命名空间中的项目启用于 15.1 版本。
  • 为个人命名空间中的项目禁用于 15.3 版本。
  • 移除立即删除的选项于 15.11 版本,功能标志为 always_perform_delayed_deletion。默认禁用。
  • 在私有化部署版上默认启用延迟删除,并移除立即删除的选项于 16.0 版本。

防止意外删除群组和项目的实例级保护。

保留期限

变更于 15.1 版本。

组和项目将在规定的保留期内保持可恢复。默认情况下为 7 天,但可以更改。 将保留期设置为 0 意味着群组和项目会立即被删除并且无法恢复。

在 15.1 及更高版本中,保留期必须在 190 之间。如果在 15.1 更新之前保留期为 0,那么它将自动更改为 1,同时在下次更改任何应用程序设置时禁用删除保护。

延迟项目删除

  • 用户接口在极狐GitLab 15.1 发生变更。
  • 默认启用延迟删除,在极狐GitLab 16.0 中移除了立即删除的选项。

先决条件:

  • 您必须是管理员。
  • 在您为项目启用该功能前,您必须为群组启用延迟项目删除。删除保护不能仅对项目启用。
  • 当禁用时,极狐GitLab 15.1 及更高版本强制执行此延迟删除设置,并且您无法覆盖它。

如要配置延迟项目删除:

::Tabs

:::TabTitle 极狐GitLab 16.0 及以后版本

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

:::TabTitle GitLab 15.11 及之前版本

  1. 在左侧导航栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制 部分。
  4. 滚动至:
    • 在开启了 always_perform_delayed_deletion 功能标志的 极狐GitLab 15.11:删除保护,并将保留期设置为 190 之间的值。
    • 在极狐GitLab 15.1 ~ 15.10:删除保护 并选择 保留已删除的群组和项目,然后设置保留期限。
    • 在极狐GitLab 15.0 及更早版本:默认延迟项目保护,并选择为新创建的群组默认启用延迟项目删除,然后然后设置保留期限。
  5. 选择 保存更改

::EndTabs

延迟群组删除

  • 用户接口在极狐GitLab 15.1 发生变更。
  • 在极狐GitLab 16.0 中变为专业版和旗舰版的默认行为。

Groups remain restorable if the retention period is 1 or more days.

如果保留周期是 1 或者更多甜,那么群组还是能够恢复的。

在极狐GitLab 16.0 及以后版本,保留删除 选项已被移除,而延迟群组删除是默认的。

如要在极狐GitLab 15 中启用延迟群组删除:

  1. 仅极狐GitLab 15.11:开启 always_perform_delayed_deletion 功能标志。
  2. 在左侧导航栏底部,选择 管理员
  3. 选择 设置 > 通用
  4. 展开 可见性和访问控制 部分。
  5. 删除项目 中,选择 保留删除
  6. 选择 保存更改

覆盖默认值并立即删除

或者,可以立即删除标记为删除的项目:

  1. 恢复项目
  2. 删除在管理项目页面中描述的项目。

配置项目可见性默认值

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

先决条件:

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

配置片段可见性默认值

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

先决条件:

  • 您必须是管理员。
  1. 在左侧导航栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制 部分。
  4. 选择所需的默认片段可见性。
  5. 选择 保存更改

有关片段可见性的更多详细信息,请阅读项目可见性

配置群组可见性默认值

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

先决条件:

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

限制可见性级别

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

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

先决条件:

  • 您必须是管理员。
  1. 在左侧导航栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制 部分。
  4. 限制可见性级别 部分中,选择要限制的所需可见性级别。

    • 如果您限制 公开 级别:
      • 只有管理员才能创建公开群组、项目和代码片段。
      • 用户配置文件仅对通过 Web 界面的经过身份验证的用户可见。
      • 通过 GraphQL API 的用户属性:
        • 在 15.1 及更高版本中不可见。
        • 从 13.1 到 15.0 版本,仅对经过身份验证的用户可见。
    • 如果您限制 内部 级别:
      • 只有管理员才能创建内部群组、项目和代码片段。
    • 如果您限制 私有 级别:
      • 只有管理员才能创建私有群组、项目和代码片段。
  5. 选择 保存更改
note 您不能够限制为新建项目或群组设置的默认可见性级别。也就是说,您不能够将新建项目或群组的默认行为设为受限的可见性。

配置启用的 Git 访问控制协议

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

极狐GitLab 允许 Git 操作仅限于您选择的协议:

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

要为您实例上的所有项目指定 Git 访问控制协议:

先决条件:

  • 您必须是管理员。
  1. 在左侧导航栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 可见性和访问控制 部分。
  4. 开启 Git 访问协议 中,选择您想要的协议:
    • 同时开启 SSH 和 HTTP(S)
    • 仅开启 SSH
    • 仅开启 HTTP(S)
  5. 选择 保存变更
caution 极狐GitLab 允许为 Git 克隆或使用极狐GitLab CI/CD 作业令牌执行的 fetch 请求运行 HTTP(S) 协议。即使您选择了 仅SSH 此行为也会发生,因为极狐GitLab Runner 和 CI/CD 要求此项设置。

为 HTTP(S) 自定义 Git 克隆 URL

您可以为 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 输入 root URL。
  5. 选择 保存更改

配置 RSA, DSA, ECDSA, ED25519, ECDSA_SK, ED25519_SK SSH keys

这些选项为 SSH key 指定允许的类型和长度

如要为每一种 key 类型指定限制:

  1. 在左侧导航栏底部,选择 管理员
  2. 选择 设置 > 设置
  3. 展开 Visibility and access controls 部分。
  4. 转到 RSA SSH keys 部分。
  5. 对于每种 key 类型,您可以允许或禁止使用,或者只允许长度为:
    • 至少 1024 位。
    • 至少 2048 位。
    • 至少 3072 位。
    • 至少 4096 位。
  6. 选择 保存更改

启用项目镜像

极狐GitLab 默认启用项目镜像。如果您禁用了此功能,则每个仓库中的拉取镜像推送镜像将不会工作。它们只能由管理员在每个项目上单独重新启用。

如要在您的实例上允许项目维护者为每个项目配置镜像:

先决条件:

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

Configure globally-allowed IP address ranges配置全局允许的 IP 地址范围

  • 自极狐GitLab 15.1 引入,并使用名为 group_ip_restrictions_allow_global 的功能标志。默认禁用。
  • 在极狐GitLab 15.4 中 GA。功能标志 group_ip_restrictions_allow_global 已被移除。

管理员可以将 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. 选择 保存更改