预定义的用户角色系统
实例
用户类型
每个用户可以是以下类型之一:
- 普通用户。
- 外部用户 - 仅作为直接成员时才能访问群组和项目。
- 内部用户 - 系统创建。
- 审计员:
- 无法访问项目或群组设置菜单。
- 无法访问 管理员 区域。
- 对其他所有内容只有只读权限。
- 管理员 - 读写权限。
有关每种用户类型如何使用的详细信息,请参阅权限页面。
群组和项目
常规权限
群组和项目可以具有以下可见性级别:
- 公开 (
20) - 实体对所有人可见 - 内部 (
10) - 实体对认证用户可见 - 私有 (
0) - 实体仅对实体的批准成员可见
默认情况下,子群组不能具有更高的可见性级别。 例如,如果您创建一个新的私有群组,它不能包含公开的子群组。
仅当所有子群组和子项目具有相同或更低的可见性级别时,才能更改群组的可见性级别。 例如,仅当所有子群组和项目都是内部或私有时,群组才能设置为内部。
如果您将现有群组迁移到更低的可见性级别,该操作不会以相同方式迁移子群组。 这是一个已知问题。
可见性级别可以在 Gitlab::VisibilityLevel 模块中找到。
功能特定权限
此外,以下项目功能可以具有不同的可见性级别:
- 问题
- 代码库
- 合并请求
- 分支
- 流水线
- 分析
- 需求
- 安全与合规
- Wiki
- 代码片段
- Pages
- 运营
- 指标仪表板
这些功能可以设置为"所有有权限的用户"或"仅项目成员"。 它们仅适用于公开或内部项目,因为私有项目默认只能由项目成员访问。
成员
用户可以是多个群组和项目的成员。提供以下访问级别(在
Gitlab::Access
模块中定义):
- 无权限 (
0) - 最小权限 (
5) - 访客 (
10) - 规划者 (
15) - 报告者 (
20) - 开发者 (
30) - 维护者 (
40) - 所有者 (
50)
如果用户同时是项目和项目父群组的成员,则应用的访问级别是最高权限。
如果用户是项目的成员,但不是父群组的成员,他们仍然可以查看群组及其实体(如史诗)。
项目成员资格(已考虑群组成员资格)存储在 project_authorizations 表中。
个人命名空间中的项目最高角色为所有者。
访客角色
在 GitLab 中具有访客角色的用户可以查看项目计划、障碍和其他进度指标。 虽然无法修改未创建的数据,但访客可以通过创建和链接项目工作项来为项目做出贡献。 访客还可以查看高级项目信息,例如:
- 分析。
- 事件信息。
- 问题和史诗。
- 许可证。
有关更多信息,请参阅项目成员权限。
机密问题
机密问题只能由至少是报告者的项目成员访问(访客无法访问)。 此外,它们的作者和被分配者也可以访问。
许可证功能
某些功能只有在用户拥有正确的许可证计划时才能访问。
权限依赖
功能策略可能相当复杂,包含多个规则。 通常,一个权限可能基于另一个权限。
设计良好的权限意味着尽可能重用现有权限,并使功能访问具有粒度性。
对于复杂资源,应将其分解为更小的信息片段,并为每个片段授予不同的权限。
这方面的一个很好的例子是_合并请求小部件_和_安全报告_。 根据_流水线_的可见性级别,_安全报告_要么在小部件中可见,要么不可见。 因此,合并请求小部件、_流水线_和_安全报告_具有独立的权限。 此外,_合并请求小部件_和_流水线_的权限是_安全报告_的依赖项。
安全功能的权限依赖
安全功能具有复杂的权限,因为这些功能集成了到合并请求和 CI 流等不同功能中。
以下是一些权限依赖的列表。
| 活动级别 | 资源 | 位置 | 权限依赖 |
|---|---|---|---|
| 查看 | 许可证信息 | 依赖列表、许可证合规 | 可以查看代码库 |
| 查看 | 依赖信息 | 依赖列表、许可证合规 | 可以查看代码库 |
| 查看 | 漏洞信息 | 依赖列表 | 可以查看安全发现 |
| 查看 | 项目的黑/白名单许可证 | 许可证合规、合并请求 | 可以查看代码库 |
| 查看 | 安全发现 | 合并请求、CI 作业页面、流水线安全标签 | 可以读取项目和 CI 作业 |
| 查看 | 漏洞反馈 | 合并请求 | 可以读取安全发现 |
| 查看 | 依赖列表页面 | 项目 | 可以访问依赖信息 |
| 查看 | 许可证合规页面 | 项目 | 可以访问许可证信息 |