gitlab不同的角色权限划分
1. Guest(访客)
- 项目级别权限:
- 查看项目、代码、议题(Issues)和合并请求(Merge Requests)。
- 发表评论(但不能直接修改代码或合并请求)。
- 无法访问仓库的代码修改或 CI/CD 相关功能。
- 群组级别权限:
- 查看群组和子群组的基本信息。
适用场景:仅需查看项目进展的外部协作者或观察员。
2. Reporter(报告者)
- 包含 Guest 的所有权限,并额外支持:
- 查看项目代码、仓库、Wiki 和 CI/CD 流水线。
- 创建和管理议题(Issues)、标记(Labels)。
- 查看项目统计和分析(如代码片段、里程碑)。
- 无法推送代码或操作合并请求(MR)。
适用场景:测试人员、产品经理等需要跟踪问题但无需修改代码的角色。
3. Developer(开发者)
- 包含 Reporter 的所有权限,并额外支持:
- 代码管理:创建分支、推送代码、创建合并请求(MR)。
- CI/CD:触发流水线、管理流水线变量(需配置)。
- 项目管理:创建/编辑 Wiki、管理议题看板。
- 数据库:访问项目级别的数据库(如 GitLab 的 Database功能)。
- 合并请求:批准 MR(需项目设置允许)。
注意:默认无法推送到受保护分支(需 Maintainer 授权)。
适用场景:开发团队成员,需要提交代码和协作。
4. Maintainer(维护者)
- 包含 Developer 的所有权限,并额外支持:
- 仓库管理:推送/删除分支、管理受保护分支和标签。
- CI/CD:编辑流水线配置(
.gitlab-ci.yml)、管理环境变量。 - 项目设置:修改项目名称/描述、配置 Webhooks、集成服务。
- 合并请求:合并 MR(即使未批准)。
- 部署:管理环境(如生产环境)、执行手动部署。
- 删除项目(需确认)。
适用场景:技术负责人或 DevOps 工程师,负责项目维护和发布。
5. Owner(所有者)
- 仅存在于群组级别(项目级别的最高角色是 Maintainer)。
- 包含 Maintainer 的所有权限,并额外支持:
- 群组管理:删除群组、转移项目、管理群组成员权限。
- 财务/订阅:管理群组的许可证(如升级付费计划)。
- 安全:配置 SAML/SSO、LDAP 集成(企业版)。
- 子群组和项目:可对所有子资源进行完全控制。
适用场景:群组管理员或企业架构师,负责整体资源管理。
群组与项目说明
- 项目与群组权限:角色在项目内和群组内是独立的。例如,一个用户在群组是 Developer,但在某个子项目可以是 Maintainer。
- 自定义权限:企业版支持更细粒度的权限控制(如“仅允许 Developer 访问特定环境”)。
- 受保护分支:即使 Developer 角色也可能无法推送代码到主分支,需 Maintainer 显式保护分支并授权。
权限对比表(关键操作)
| 操作 | Guest | Reporter | Developer | Maintainer | Owner (群组) |
|---|---|---|---|---|---|
| 查看代码 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 创建议题 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 推送代码 | ✗ | ✗ | ✓ | ✓ | ✓ |
| 合并 MR | ✗ | ✗ | ✗ (需授权) | ✓ | ✓ |
| 删除项目 | ✗ | ✗ | ✗ | ✓ | ✓ |
| 管理群组成员 | ✗ | ✗ | ✗ | ✗ | ✓ |
根据团队协作需求合理分配角色,可参考 GitLab 官方文档:权限文档。