あらかじめ定義されたユーザーロールシステム

インスタンス

ユーザータイプ

各ユーザーは以下のタイプのいずれかになります:

  • レギュラー。
  • 社外 - 直接メンバーである場合のみ、グループやプロジェクトにアクセスできます。
  • 内部ユーザー- システムが作成。
  • 監査
    • プロジェクトやグループの設定メニューにアクセスできません。
    • 管理エリアにアクセスできません。
    • その他は読み取り専用です。
  • 管理者- 読み書きアクセス権。

各ユーザータイプの使用方法の詳細については、権限のページを参照してください。

グループとプロジェクト

一般権限

グループとプロジェクトは、以下の可視性レベルを持つことができます:

  • public (20) - エンティティは誰でも見ることができます。
  • 内部 (10) - 認証されたユーザーにのみ公開されます。
  • 非公開 (0) - エンティティの承認者のみが閲覧可能。

デフォルトでは、サブグループにそれ以上の可視レベルを持たせることはできません。例えば、非公開グループを新規作成した場合、そのグループに公開サブグループを含めることはできません。

グループの可視性レベルは、すべてのサブグループおよびサブプロジェクトの可視性レベルが同じかそれ以下の場合にのみ変更できます。たとえば、グループを内部に設定できるのは、すべてのサブグループとプロジェクトが内部または非公開の場合のみです。

caution
既存のグループを低い可視性レベルにマイグレーションしても、そのアクションではサブグループは同じようにマイグレーションされません。これは既知のイシューです。

可視性レベルは、Gitlab::VisibilityLevel モジュールで確認できます。

機能固有の権限

さらに、以下のプロジェクト機能は、異なる可視性レベルを持つことができます:

  • イシュー
  • リポジトリ
    • マージリクエスト
    • フォーク
    • パイプライン
  • 分析
  • 要件
  • セキュリティとコンプライアンス
  • Wiki
  • スニペット
  • Pages
  • オペレーション
  • メトリクス・ダッシュボード

これらの機能は、「誰でもアクセス可能」または「プロジェクトメンバーのみアクセス可能」に設定できます。非公開プロジェクトはデフォルトでプロジェクトメンバーしかアクセスできないため、公開プロジェクトや内部プロジェクトでのみ意味があります。

メンバー

ユーザーは複数のグループやプロジェクトのメンバーになることができます。以下のアクセスレベルが利用できます(Gitlab::Access モジュールで定義):

  • アクセス不可 (0)
  • 最低限のアクセス(5)
  • ゲスト (10)
  • レポーター (20)
  • 開発者 (30)
  • メンテナー (40)
  • オーナー (50)

ユーザーがプロジェクトとプロジェクトの親グループの両方のメンバーである場合、最も高い権限がプロジェクトに適用されるアクセスレベルとなります。

ユーザーがプロジェクトのメンバーであり、親グループのメンバーではない場合でも、グループとそのエンティティ(エピックなど)を表示することができます。

プロジェクト・メンバーシップ(グループ・メンバーシップがすでに考慮されている)は、project_authorizations テーブルに保存されます。

note
GitLab 14.9以降では、個人ネームスペース内のプロジェクトの最大ロールはOwnerです。GitLab 14.8以前の既知のイシューのため、個人ネームスペース内のプロジェクトの最大ロールはメンテナーです。

機密の課題

機密イシューには、レポーター以上のプロジェクトメンバーのみがアクセスできます(ゲストはアクセスできません)。また、作成者と担当者もアクセスできます。

ライセンス機能

一部の機能は、ユーザーが正しいライセンスプランを持っている場合にのみアクセスできます。

権限の依存関係

フィーチャー・ポリシーは非常に複雑で、複数のルールで構成されることがあります。多くの場合、ある権限が別の権限に基づいていることがあります。

良い権限を設計するということは、既存の権限を可能な限り再利用し、機能へのアクセスを細かくするということです。

複雑なリソースの場合、情報の小さな断片に分割し、それぞれの断片に異なる権限を与えるべきです。

この場合の好例は、マージリクエストウィジェットと セキュリティレポート_です。_パイプラインの_表示レベルに応じて、_セキュリティ レポートは_ウィジェットに表示されたりされなかったりします。つまり、_マージリクエストウィジェットパイプライン、および_セキュリティレポート_には、それぞれ別の権限があります。さらに、マージリクエストウィジェットと _パイプラインの_権限は、_セキュリティ_レポートの依存関係にあります。

セキュリティ機能の権限依存関係

セキュア機能はマージリクエストやCIフローのような異なる機能にインテグレーションされているため、複雑な権限を持ちます。

以下は権限の依存関係のリストです。

アクティビティレベルリソース所在地権限依存
閲覧ライセンス情報依存関係リスト、ライセンスコンプライアンスリポジトリの閲覧
閲覧依存情報依存関係リスト、ライセンスコンプライアンスリポジトリの閲覧
閲覧脆弱性情報依存関係リストセキュリティ所見の閲覧
閲覧プロジェクトのブラックリスト/ホワイトリストライセンスライセンスコンプライアンス、マージリクエストリポジトリの閲覧
閲覧セキュリティマージリクエスト、CIジョブページ、パイプラインセキュリティタブプロジェクトと CI ジョブを読むことができます。
閲覧脆弱性フィードバックマージリクエストセキュリティ調査結果を読むことができます。
閲覧依存関係一覧ページプロジェクト依存関係情報にアクセス可能
閲覧ライセンスコンプライアンスのページプロジェクトライセンス情報へのアクセスが可能