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

预定义的用户角色系统

实例

用户类型

每个用户可以是以下类型之一:

  • 普通用户。
  • 外部用户 - 仅作为直接成员时才能访问群组和项目。
  • 内部用户 - 系统创建。
  • 审计员:
    • 无法访问项目或群组设置菜单。
    • 无法访问 管理员 区域。
    • 对其他所有内容只有只读权限。
  • 管理员 - 读写权限。

有关每种用户类型如何使用的详细信息,请参阅权限页面

群组和项目

常规权限

群组和项目可以具有以下可见性级别:

  • 公开 (20) - 实体对所有人可见
  • 内部 (10) - 实体对认证用户可见
  • 私有 (0) - 实体仅对实体的批准成员可见

默认情况下,子群组不能具有更高的可见性级别。 例如,如果您创建一个新的私有群组,它不能包含公开的子群组。

仅当所有子群组和子项目具有相同或更低的可见性级别时,才能更改群组的可见性级别。 例如,仅当所有子群组和项目都是内部或私有时,群组才能设置为内部。

如果您将现有群组迁移到更低的可见性级别,该操作不会以相同方式迁移子群组。 这是一个已知问题

可见性级别可以在 Gitlab::VisibilityLevel 模块中找到。

功能特定权限

此外,以下项目功能可以具有不同的可见性级别:

  • 问题
  • 代码库
    • 合并请求
    • 分支
    • 流水线
  • 分析
  • 需求
  • 安全与合规
  • Wiki
  • 代码片段
  • Pages
  • 运营
  • 指标仪表板

这些功能可以设置为"所有有权限的用户"或"仅项目成员"。 它们仅适用于公开或内部项目,因为私有项目默认只能由项目成员访问。

成员

用户可以是多个群组和项目的成员。提供以下访问级别(在 Gitlab::Access 模块中定义):

  • 无权限 (0)
  • 最小权限 (5)
  • 访客 (10)
  • 规划者 (15)
  • 报告者 (20)
  • 开发者 (30)
  • 维护者 (40)
  • 所有者 (50)

如果用户同时是项目和项目父群组的成员,则应用的访问级别是最高权限。

如果用户是项目的成员,但不是父群组的成员,他们仍然可以查看群组及其实体(如史诗)。

项目成员资格(已考虑群组成员资格)存储在 project_authorizations 表中。

个人命名空间中的项目最高角色为所有者。

访客角色

在 GitLab 中具有访客角色的用户可以查看项目计划、障碍和其他进度指标。 虽然无法修改未创建的数据,但访客可以通过创建和链接项目工作项来为项目做出贡献。 访客还可以查看高级项目信息,例如:

  • 分析。
  • 事件信息。
  • 问题和史诗。
  • 许可证。

有关更多信息,请参阅项目成员权限

机密问题

机密问题只能由至少是报告者的项目成员访问(访客无法访问)。 此外,它们的作者和被分配者也可以访问。

许可证功能

某些功能只有在用户拥有正确的许可证计划时才能访问。

权限依赖

功能策略可能相当复杂,包含多个规则。 通常,一个权限可能基于另一个权限。

设计良好的权限意味着尽可能重用现有权限,并使功能访问具有粒度性。

对于复杂资源,应将其分解为更小的信息片段,并为每个片段授予不同的权限。

这方面的一个很好的例子是_合并请求小部件_和_安全报告_。 根据_流水线_的可见性级别,_安全报告_要么在小部件中可见,要么不可见。 因此,合并请求小部件、_流水线_和_安全报告_具有独立的权限。 此外,_合并请求小部件_和_流水线_的权限是_安全报告_的依赖项。

安全功能的权限依赖

安全功能具有复杂的权限,因为这些功能集成了到合并请求和 CI 流等不同功能中。

以下是一些权限依赖的列表。

活动级别 资源 位置 权限依赖
查看 许可证信息 依赖列表、许可证合规 可以查看代码库
查看 依赖信息 依赖列表、许可证合规 可以查看代码库
查看 漏洞信息 依赖列表 可以查看安全发现
查看 项目的黑/白名单许可证 许可证合规、合并请求 可以查看代码库
查看 安全发现 合并请求、CI 作业页面、流水线安全标签 可以读取项目和 CI 作业
查看 漏洞反馈 合并请求 可以读取安全发现
查看 依赖列表页面 项目 可以访问依赖信息
查看 许可证合规页面 项目 可以访问许可证信息