TECHSTEP

ITインフラ関連の記事を公開してます。

GitLab roleを整理する

今回はGitLabで利用できるロールを簡単に整理します。

docs.gitlab.com

背景

GitLabユーザーをProject/Groupに追加するとき、ユーザーに対して何らかのRoleを付与します。Roleは、あらかじめ用意されたDefault Roleと、ユーザーが作成したCustomr Roleがあります。Custom RoleはUltimateプランでのみ利用できます。

docs.gitlab.com

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

全ての権限は以下のページに記載されています。

docs.gitlab.com

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

docs.gitlab.com

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

docs.gitlab.com

その他

Premium/Ultimateプランでは、以下の機能も利用できます。

  • Custom role : 利用者が使用したい権限を組み合わせてカスタマイズしたroleを作成・適用できます。Ultimateプランでのみ利用可能です。
  • Users with Minimal access : SAML SSOを使用する場合、Owner はユーザーに Minimal Access というRoleを付与できます。このRoleはユーザーにGroupのList権限を付与しますが、リソースやProjectなどの詳細は確認できません。

docs.gitlab.com

docs.gitlab.com

about.gitlab.com