今回はGitLabで利用できるロールを簡単に整理します。
背景
GitLabユーザーをProject/Groupに追加するとき、ユーザーに対して何らかのRoleを付与します。Roleは、あらかじめ用意されたDefault Roleと、ユーザーが作成したCustomr Roleがあります。Custom RoleはUltimateプランでのみ利用できます。
Default Roleは以下の5種類です。簡単に言えば Guest
が最も権限が弱く、 Owner
が最も強い権限を持ちます。
Guest
Reporter
Developer
Maintainer
Owner
Roleは主にProject / Group / CI/CD設定という3つのリソースに対して割り当て、権限を付与します。Default roleが各リソースにどんな権限を付与するかは、以降で簡単に紹介します。
Projectメンバーの権限
Project内のユーザーに振り当てられるRoleは、Project上の操作権限をコントロールします。Owner
roleは全ての権限を付与しますが、Owner
roleは以下の場合にのみ付与されます。
- Administratorの場合
- Group/Projectの
Owner
の場合
また、Personal namespaceのOwner
は、GitLab 14.9より以前のバージョンの場合、該当のNamespaceではMaintainer
と表示されますが、実際はOwner
roleを持つユーザーと同じ権限を有します。
各Default roleにどんな権限が付与されるかですが、基本的に Guest
/ Reporter
はView権限のみが付与され、Developer
はProject管理関連の機能以外 (policy/ruleなど) はCreate権限も付与されています。Owner
は各種リソースのDelete権限も含め、すべての権限を所持します。
いくつかのリソースに対する権限を載せておきます。
リソース | 操作 | Guest | Reporter | Developer | Maintainer | Owner |
---|---|---|---|---|---|---|
Merge request | View | ○ | ○ | ○ | ○ | ○ |
Approve | ○ | ○ | ○ | |||
Assign | ○ | ○ | ○ | |||
Create | ○ | ○ | ○ | |||
Delete | ○ | |||||
Project | Download | ○ | ○ | ○ | ○ | ○ |
Export | ○ | ○ | ||||
Rename | ○ | ○ | ||||
Archive | ○ | |||||
Delete | ○ | |||||
Container Registry | Pull image | ○ | ○ | ○ | ○ | ○ |
Push image | ○ | ○ | ○ | |||
Remove image | ○ | ○ | ○ |
全ての権限は以下のページに記載されています。
Groupメンバーの権限
Group内のユーザーに振り当てられるRoleは、Groupに対する操作権限をコントロールします。そのGroupの最後のOwner
でない限り、全てのユーザーは自身をGroupから削除することができます。
また、Subgroupにユーザーを追加すると、親Groupから権限レベルを受け継ぎます。また、いずれかの親Groupに属していれば、その配下のNested groupにアクセスできます。
いくつかのリソースに対する権限を載せておきます。
リソース | 操作 | Guest | Reporter | Developer | Maintainer | Owner |
---|---|---|---|---|---|---|
Group epic | View | ○ | ○ | ○ | ○ | ○ |
Create | ○ | ○ | ○ | ○ | ||
Edit | ○ | ○ | ○ | ○ | ||
Delete | ○ | |||||
Group | View | ○ | ○ | ○ | ○ | ○ |
Delete | ○ | |||||
Migrate | ○ | |||||
Subgroup | Create | ○ | ○ |
GitLab CI/CD権限
GitLab CI/CDの権限は、そのパイプラインを実行したユーザーの権限が反映されます。またCI/CDの権限は、いくつかのRoleについては以下の設定から修正できます。
- Public pipelineに設定した場合、
Guest
Projectメンバーに一部機能へのアクセス許可を与えます。 - Pipeline visibilityを
Everyone with Access
に設定した場合、Project外のメンバーにも一部CI/CDの View権限を付与します。
いくつかのリソースに対する権限を載せておきます。
リソース | 操作 | Guest | Reporter | Developer | Maintainer | Owner |
---|---|---|---|---|---|---|
Environment | View | ○ | ○ | ○ | ○ | ○ |
Create | ○ | ○ | ○ | |||
Stop | ○ | ○ | ○ | |||
Job | View | ○ | ○ | ○ | ○ | ○ |
Retry | ○ | ○ | ○ | |||
Cancel | ○ | ○ | ○ |
その他
Premium/Ultimateプランでは、以下の機能も利用できます。
Custom role
: 利用者が使用したい権限を組み合わせてカスタマイズしたroleを作成・適用できます。Ultimateプランでのみ利用可能です。Users with Minimal access
: SAML SSOを使用する場合、Owner
はユーザーにMinimal Access
というRoleを付与できます。このRoleはユーザーにGroupのList権限を付与しますが、リソースやProjectなどの詳細は確認できません。