カスタムロール
- プラン: Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
カスタムロールを使用すると、組織に必要な特定のカスタム権限のみを持つロールを作成できます。各カスタムロールは、既存のデフォルトロールに基づいています。たとえば、ゲストロールに基づいてカスタムロールを作成し、プロジェクトリポジトリ内のコードを参照する権限を含めることもできます。
カスタムロールには、次の2種類があります:
- カスタムメンバーロール:
- グループまたはプロジェクトのメンバーに割り当てることができます。
- サブグループまたはプロジェクトで同じ権限を取得します。詳細については、メンバーシップの種類を参照してください。
- シートを使用し、請求対象ユーザーになります。
read_code権限のみを持つカスタムゲストメンバーロールは、シートを使用しません。
- カスタム管理者ロール:
- インスタンス上の任意のユーザーに割り当てることができます。
- 特定の管理者アクションを実行する権限を取得します。
カスタムロール機能のデモについては、[Demo] Ultimate Guest can view code on private repositories via custom role(デモ: Ultimate Guestがカスタムロールを使用してプライベートリポジトリのコードを表示)をご覧ください。
カスタムメンバーロールを作成する
カスタムメンバーロールを作成するには、デフォルトのGitLabロールを選択し、追加の権限を付与します。基本ロールは、カスタムロールで使用可能な最小限の権限を定義します。監査担当者を基本ロールとして使用することはできません。
カスタム権限を使用すると、通常はメンテナーまたはオーナーロールに限定されているアクションを許可できます。たとえば、CI/CD変数を管理する権限を持つカスタムロールを使用すると、他のメンテナーまたはオーナーによって追加されたCI/CD変数の管理も可能になります。
カスタムメンバーロールは、次のスコープ内のグループおよびプロジェクトで使用できます:
- GitLab.comでは、カスタムロールが作成されたトップレベルグループの配下。
- GitLab Self-ManagedおよびGitLab Dedicatedでは、インスタンス全体。
前提要件:
- GitLab.comの場合、グループのオーナーロールが必要です。
- GitLab Self-ManagedおよびGitLab Dedicatedの場合、インスタンスへの管理者アクセス権が必要です。
- カスタムロールが10個未満である必要があります。
カスタムメンバーロールを作成するには:
- 左側のサイドバーで、次を実行します:
- GitLab.comの場合は、検索または移動先を選択して、グループを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- GitLab Self-ManagedおよびGitLab Dedicatedの場合は、下部にある管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅で自分のアバターを選択し、管理者を選択します。
- 設定 > ロールと権限を選択します。
- 新しいロールを選択します。
- GitLab Self-ManagedおよびGitLab Dedicatedインスタンスのみ。メンバーロールを選択します。
- カスタムロールの名前と説明を入力します。
- 基本のロールドロップダウンリストから、デフォルトロールを選択します。
- カスタムロールの任意の権限を選択します。
- ロールを作成するを選択します。
カスタムロールの作成には、APIを使用することもできます。
カスタム管理者ロールを作成する
- 提供形態: GitLab Self-Managed、GitLab Dedicated
カスタム管理者ロールを作成するには、通常は管理者に限定されているアクションを許可する権限を追加します。各カスタム管理者ロールは、1つ以上の権限を持つことができます。
前提要件:
- インスタンスへの管理者アクセス権が必要です。
- カスタムロールが10個未満である必要があります。
カスタム管理者ロールを作成するには:
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅で自分のアバターを選択し、管理者を選択します。
- 設定 > ロールと権限を選択します。
- 新しいロールを選択します。
- 管理者ロールを選択します。
- カスタムロールの名前と説明を入力します。
- カスタムロールの任意の権限を選択します。
- ロールを作成するを選択します。
カスタムロールの作成には、APIを使用することもできます。
カスタムロールを編集する
カスタムロールの名前、説明、および権限は編集できますが、基本ロールを編集することはできません。基本ロールを変更する必要がある場合は、新しいカスタムロールを作成する必要があります。
前提要件:
- GitLab.comの場合、グループのオーナーロールが必要です。
- GitLab Self-ManagedおよびGitLab Dedicatedの場合、インスタンスへの管理者アクセス権が必要です。
カスタムロールを編集するには:
- 左側のサイドバーで、次を実行します:
- GitLab.comの場合は、検索または移動先を選択して、グループを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- GitLab Self-ManagedおよびGitLab Dedicatedの場合は、下部にある管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅で自分のアバターを選択し、管理者を選択します。
- 設定 > ロールと権限を選択します。
- カスタムロールの横にある縦方向の省略記号( ) > ロールを編集を選択します。
- ロールを変更します。
- ロールを保存を選択します。
APIを使用して、カスタムメンバーロールまたはカスタム管理者ロールを編集することもできます。
カスタムロールの詳細を表示する
ロールと権限ページには、利用可能なすべてのデフォルトロールとカスタムロールに関する基本情報が一覧表示されます。これには、名前、説明、各カスタムロールに割り当て済みのユーザー数などの情報が含まれます。各カスタムロールには、Custom member roleまたはCustom admin roleバッジが含まれています。
また、ロールID、基本ロール、特定の権限など、カスタムロールに関する詳細情報を表示することもできます。
前提要件:
- GitLab.comの場合、グループのオーナーロールが必要です。
- GitLab Self-ManagedおよびGitLab Dedicatedの場合、インスタンスへの管理者アクセス権が必要です。
カスタムロールの詳細を表示するには:
- 左側のサイドバーで、次を実行します:
- GitLab.comの場合は、検索または移動先を選択して、グループを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- GitLab Self-ManagedおよびGitLab Dedicatedの場合は、下部にある管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅で自分のアバターを選択し、管理者を選択します。
- 設定 > ロールと権限を選択します。
- カスタムロールの横にある縦方向の省略記号( ) > 詳細を表示を選択します。
カスタムロールを削除する
ユーザーにまだ割り当てられているカスタムロールは削除できません。ユーザーにカスタムロールを割り当てるを参照してください。
前提要件:
- GitLab.comの場合、グループのオーナーロールが必要です。
- GitLab Self-ManagedおよびGitLab Dedicatedの場合、インスタンスへの管理者アクセス権が必要です。
カスタムロールを削除するには:
- 左側のサイドバーで、次を実行します:
- GitLab.comの場合は、検索または移動先を選択して、グループを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- GitLab Self-ManagedおよびGitLab Dedicatedの場合は、下部にある管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅で自分のアバターを選択し、管理者を選択します。
- 設定 > ロールと権限を選択します。
- カスタムロールの横にある縦方向の省略記号( ) > ロールを削除を選択します。
- 確認ダイアログで、ロールを削除を選択します。
APIを使用して、カスタムメンバーロールまたはカスタム管理者ロールを削除することもできます。
カスタムメンバーロールを割り当てる
グループおよびプロジェクトのメンバーのロールを割り当てたり、変更したりすることができます。この操作は、既存のユーザーに対して、またはユーザーをグループ 、プロジェクト 、またはインスタンスに追加するときに行うことができます。
前提要件:
- グループの場合、グループのオーナーロールが必要です。
- プロジェクトの場合、プロジェクトのメンテナーロール以上が必要です。
既存のユーザーにカスタムメンバーロールを割り当てるには:
- 左側のサイドバーで、検索または移動先を選択して、グループまたはプロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- 管理 > メンバーを選択します。
- ロール列で、既存のメンバーのロールを選択します。ロールの詳細ドロワーが開きます。
- ロールドロップダウンリストから、メンバーに割り当てるロールを選択します。
- ロールを更新するを選択して、ロールを割り当てます。
APIを使用して、カスタムロールの割り当てや既存の割り当ての変更を行うこともできます。
カスタム管理者ロールを割り当てる
- 提供形態: GitLab Self-Managed、GitLab Dedicated
インスタンス内のユーザーに管理者ロールを割り当てたり、変更したりすることができます。この操作は、既存のユーザーに対して、またはユーザーをインスタンスに追加するときに行うことができます。
前提要件:
- GitLabインスタンスの管理者である必要があります。
既存のユーザーにカスタム管理者ロールを割り当てるには:
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅で自分のアバターを選択し、管理者を選択します。
- 概要 > ユーザーを選択します。
- 対象ユーザーの編集を選択します。
- アクセスセクションで、アクセスレベルを標準または監査担当者に設定します。
- 管理者エリアドロップダウンリストから、カスタム管理者ロールを選択します。
APIを使用して、カスタムロールの割り当てや既存の割り当ての変更を行うこともできます。
招待されたグループにカスタムロールを割り当てる
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
グループをグループに招待すると、グループ内のすべてのユーザーにカスタムロールを割り当てることができます。
割り当てられたロールは、元のグループでのユーザーロールおよび権限と比較されます。通常、ユーザーには最小のアクセスレベルを持つロールが割り当てられます。ただし、ユーザーが元のグループでカスタムロールを持っている場合は、次のようになります:
- 基本ロールのみがアクセスレベルの比較に使用されます。カスタム権限は比較されません。
- 両方のカスタムロールが同じ基本ロールを持っている場合、ユーザーは元のグループのカスタムロールを保持します。
次の表は、グループに招待されたユーザーが利用できる最大のロールの例を示しています:
| シナリオ | ゲストロールを持つユーザー | ゲストロールを持つユーザー + read_code | ゲストロールを持つユーザー + read_vulnerability | デベロッパーロールを持つユーザー | デベロッパーロールを持つユーザー + admin_vulnerability |
|---|---|---|---|---|---|
| Invited with Guest role(ゲストロールで招待) | ゲスト | ゲスト | ゲスト | ゲスト | ゲスト |
Invited with Guest role + read_code(ゲストロール + で招待) | ゲスト | ゲスト + read_code | ゲスト + read_vulnerability | ゲスト + read_code | ゲスト + read_code |
Invited with Guest role + read_vulnerability(ゲストロール + で招待) | ゲスト | ゲスト + read_code | ゲスト + read_vulnerability | ゲスト + read_vulnerability | ゲスト + read_vulnerability |
| Invited with Developer role(デベロッパーロールで招待) | ゲスト | ゲスト + read_code | ゲスト + read_vulnerability | デベロッパー | デベロッパー |
Invited with Developer role + admin_vulnerability(デベロッパーロール + で招待) | ゲスト | ゲスト + read_code | ゲスト + read_vulnerability | デベロッパー | デベロッパー + admin_vulnerability |
グループを別のグループに招待する場合にのみ、カスタムロールを割り当てることができます。イシュー468329では、グループをプロジェクトに招待するときにカスタムロールを割り当てることを提案しています。
サポートされているオブジェクト
以下に、各オブジェクトに対するカスタムロールと権限のサポート状況を示します:
| オブジェクト | バージョン | イシュー |
|---|---|---|
| ユーザー | 15.9 | リリース済み |
| グループ | 17.7 | 部分的にサポートされています。プロジェクトでのグループ割り当てのさらなるサポートは、イシュー468329で提案されています |
| トークン | サポートされていません | イシュー434354 |
ユーザーをカスタムロールに同期する
SAMLやLDAPなどのツールを使用してグループメンバーシップを管理する場合は、ユーザーをカスタムロールに自動的に同期できます。詳細については、以下を参照してください:
LDAPグループを管理者ロールに同期する
カスタム管理者ロールをLDAPグループにリンクできます。このリンクにより、グループ内のすべてのユーザーにカスタム管理者ロールが割り当てられます。
ユーザーが、割り当て済みのカスタム管理者ロールが異なる複数のLDAPグループに属している場合、GitLabは、先に作成されたLDAPリンクに関連するロールを割り当てます。たとえば、ユーザーがLDAPグループownerおよびdevのメンバーであるとします。ownerグループがdevグループより先にカスタム管理者ロールにリンクされていたとすると、ユーザーにはownerグループに関連するロールが割り当てられます。
LDAPおよびグループ同期の管理の詳細については、LDAP同期を参照してください。
カスタム管理者ロールを持つLDAPユーザーが、同期を設定した後にLDAPグループから削除された場合、カスタムロールは次回の同期まで削除されません。
カスタム管理者ロールをLDAP CNとリンクする
前提要件:
- LDAPサーバーとインスタンスを統合している必要があります。
カスタム管理者ロールをLDAP CNとリンクするには:
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅で自分のアバターを選択し、管理者を選択します。
- 設定 > ロールと権限を選択します。
- LDAP同期タブで、LDAP Server(LDAPサーバー)を選択します。
- 同期方法フィールドで、
Group cnを選択します。 - グループcnフィールドに、グループのCNの先頭何文字かを入力します。設定済みの
group_baseの範囲内で一致するCNが、ドロップダウンリストに表示されます。 - ドロップダウンリストからCNを選択します。
- カスタム管理者ロールフィールドで、カスタム管理者ロールを選択します。
- 追加を選択します。
GitLabが、一致するLDAPユーザーへのロールのリンクを開始します。このプロセスが完了するまでに1時間以上かかる場合があります。
カスタム管理者ロールをLDAPフィルターとリンクする
前提要件:
- LDAPサーバーとインスタンスを統合している必要があります。
カスタム管理者ロールをLDAPフィルターとリンクするには:
- 左側のサイドバーの下部で、管理者を選択します。新しいナビゲーションをオンにしている場合は、右上隅で自分のアバターを選択し、管理者を選択します。
- 設定 > ロールと権限を選択します。
- LDAP同期タブで、LDAP Server(LDAPサーバー)を選択します。
- 同期方法フィールドで、
User filterを選択します。 - ユーザーフィルターボックスに、フィルターを入力します。詳細については、LDAPユーザーフィルターを設定するを参照してください。
- カスタム管理者ロールフィールドで、カスタム管理者ロールを選択します。
- 追加を選択します。
GitLabが、一致するLDAPユーザーへのロールのリンクを開始します。このプロセスが完了するまでに1時間以上かかる場合があります。
新しい権限をコントリビュートする
権限が存在しない場合、以下を実行できます:
- 個々のカスタムロールと権限のリクエストについて、イシュー391760で議論します。
- 権限提案イシューテンプレートを使用して、権限をリクエストするイシューを作成します。
- GitLabにコントリビュートして、権限を追加します。