コンプライアンスセンター

GitLab 16.3のコンプライアンスレポートから名称変更

グループの標準遵守、違反、コンプライアンス・フレームワークのレポートと管理をご覧ください。

標準遵守ダッシュボード

  • GitLab 16.2 で GraphQL API をcompliance_adherence_reportというフラグで導入。デフォルトでは無効になっています。
  • GitLab 16.3 でadherence_report_uiというフラグで標準遵守ダッシュボードを導入。デフォルトでは無効。

フラグ: セルフマネジメントのGitLabでは、デフォルトではこの機能は利用できません。プロジェクトごと、またはインスタンス全体で利用できるようにするには、管理者がcompliance_adherence_reportadherence_report_uiという機能フラグを有効にします。GitLab.comでは、この機能は利用できません。この機能はまだ本番環境では使用できません。

標準遵守ダッシュボードは、GitLab標準に準拠しているプロジェクトの遵守状況を一覧表示します。

標準遵守ダッシュボードを見る

前提条件:

  • グループの管理者またはオーナーロールを持っている必要があります。

グループの基準遵守ダッシュボードを表示するには:

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 左サイドバーで、「セキュリティ」>「コンプライアンス・センター」を選択します。

GitLab 標準

GitLab標準は3つのルールで構成されています:

  • 作成者を承認者にしないこと。
  • コミッターが承認者にならないようにします。
  • 少なくとも2つの承認者。

作成者が承認者にならないようにします。

GitLab 標準に準拠するには、ユーザーが自分のマージリクエストを承認できないようにする必要があります。詳しくは、Prevent approval by author をご覧ください。

セルフマネージド GitLab では、インスタンスレベルで作成者による承認を防ぐ設定を更新しても、インスタンス上のすべてのプロジェクトのアドヒアランスステータスは自動的に更新されません。これらのプロジェクトのステータスを更新するには、グループレベルかプロジェクトレベルの設定を更新する必要があります。

コミッターを承認者にしない

GitLab 標準に準拠するためには、ユーザーがコミットを追加したマージリクエストを承認できないようにする必要があります。詳しくは、コミットを追加したユーザーによる承認者を防ぐ をご覧ください。

セルフマネージド GitLab では、コミットを追加したユーザーによる承認を防ぐためのインスタンスレベルの設定が更新されても、インスタンス上のすべてのプロジェクトのアドヒアランスステータスは自動的に更新されません。これらのプロジェクトのステータスを更新するには、グループレベルまたはプロジェクトレベルの設定を更新する必要があります。

少なくとも 2 つの承認者

GitLab 標準に準拠するために、マージリクエストをマージするには少なくとも2人のユーザーの承認が必要です。詳しくはマージリクエストの承認ルールをご覧ください。

コンプライアンス違反レポート

コンプライアンス違反レポートで、グループ内の全プロジェクトのマージリクエストアクティビティをハイレベルで見ることができます。

コンプライアンス違反レポートで行を選択すると、ドロワーが表示されます:

  • プロジェクトにコンプライアンス フレームワークが割り当てられている場合は、プロジェクト名とコンプライアンス フレームワーク ラベル
  • 違反を引き起こしたマージリクエストへのリンク。
  • [source] into [target]の形式でのマージリクエストのブランチパス。
  • マージリクエストに変更をコミットしたユーザーのリスト。
  • マージリクエストにコメントしたユーザーのリスト。
  • マージリクエストを承認したユーザーのリストです。
  • マージリクエストをマージしたユーザーです。

グループのコンプライアンス違反レポートの表示

GitLab 16.0 で導入されたターゲットブランチ検索。

前提条件:

  • グループの管理者またはオーナーロールを持っている必要があります。

コンプライアンス違反のレポーターを表示するには

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 左サイドバーで、「セキュリティ」>「コンプライアンス・センター」を選択します。

コンプライアンス レポートを並べ替えることができます:

  • 重大度レベル。
  • 違反の種類
  • マージリクエストタイトル。

コンプライアンス違反レポーターをフィルタリングできます:

  • プロジェクト
  • マージの日付範囲。
  • ターゲットブランチ。

コンプライアンス違反の詳細を表示するには、行を選択します。

重大度レベル

各コンプライアンス違反には、以下の重大度のいずれかがあります。

アイコン重大度
{深刻度クリティカル, 18, gl-fill-red-800}.クリティカル
{深刻度高、18、gl-fill-red-600}。高い
厳しさ中, 18, gl-fill-オレンジ-400} {厳しさ中, 18, gl-fill-オレンジ-400}。中規模
{厳しさ低、18、gl-fill-orange-300}。
{厳しさ情報、18、gl-fill-blue-400}。情報

違反の種類

GitLab 14.10から、利用可能なコンプライアンス違反は以下の通りです。

違反内容重大度カテゴリ説明
作成者がマージリクエストを承認しました。高い職務の分離マージリクエストの作成者が自分のマージリクエストを承認しました。詳細については、作成者による承認を防ぐをご覧ください。
マージリクエストを承認したコミッター高い職務の分離マージリクエストのコミッターは自分が貢献したマージリクエストを承認しました。詳細については、コミットを追加したユーザーによる承認者を防ぐを参照してください。
承認者が2人以下高い職務の分離マージリクエストが 2 つ未満の承認者でマージされました。詳細については、マージリクエストの承認ルールを参照してください。

以下は、エピック 5237 で追跡される利用できないコンプライアンス違反です。

違反内容重大度カテゴリ説明
パイプラインの失敗中規模パイプラインの結果マージリクエストのパイプラインが失敗し、マージされました。
パイプラインは警告付きで通過しました。情報パイプラインの結果マージリクエストパイプラインは警告付きで通過し、マージされました。
コードカバレッジが10%以上減少高いコードカバレッジマージリクエストのコード・カバレッジ・レポートでは、カバレッジが 10% 以上減少しています。
コード・カバレッジが5%から10%低下中規模コードカバレッジマージリクエストのコードカバレッジレポートでは、カバレッジが5%から10%低下しています。
コード・カバレッジが1%から5%減少コードカバレッジマージリクエストのコードカバレッジレポートでは、カバレッジが1%から5%低下しています。
コード・カバレッジが1%未満減少情報コードカバレッジマージリクエストのコードカバレッジレポートによると、カバレッジの減少は1%未満です。
職務の分離

GitLabはマージリクエストを作成するユーザーと承認するユーザーの間の職務分離ポリシーをサポートしています。私たちの職務分離の基準は以下の通りです:

CoC レポート

  • GitLab 13.3 で導入されました
  • GitLab15.3で導入された電子メールを使ったChain of Custodyレポートの送信には、async_chain_of_custody_report というフラグが必要です。デフォルトでは無効になっています。
  • GitLab 15.5で一般的に利用可能。機能フラグasync_chain_of_custody_report を削除しました。
  • Chain of Custodyレポートがすべてのコミットを含む(マージコミットだけでなく)GitLab 15.9で導入された all_commits_compliance_report というフラグ。デフォルトでは無効。
  • GitLab 15.9で一般的に利用可能。機能フラグall_commits_compliance_report を削除しました。

Chain of Custody レポートは、グループ配下のプロジェクトに対するすべてのコミットを 1 ヶ月分追跡します。

すべてのコミットのレポートを作成するには、GitLab:

  1. グループの下にある全てのプロジェクトを取得します。
  2. 各プロジェクトについて、直近一ヶ月のコミットを取得します。各プロジェクトのコミット数の上限は 1024 です。一ヶ月のウィンドウに 1024 を超えるコミットがある場合は切り捨てられます。
  3. CSV ファイルにコミットを書き込みます。レポートは添付ファイルとしてEメールで送信されるため、ファイルは15MBで切り捨てられます(GitLab 15.5以降)。

レポートには以下が含まれます:

  • コミットSHA
  • 作成者をコミットします。
  • コミッター
  • コミット日
  • グループ
  • プロジェクト

コミットに関連するマージコミットがある場合は、以下も含まれます:

  • マージコミット SHA。
  • マージリクエスト ID。
  • マージリクエストをマージしたユーザー。
  • マージ日。
  • パイプラインID。
  • マージリクエスト承認者。

CoC レポートの作成

Chain of Custodyレポートを作成します:

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 左サイドバーで、「セキュリティ」>「コンプライアンス・センター」を選択します。
  3. List of all merge commits]を選択します。

GitLab のバージョンによって、Chain of Custody レポートはメールで送信されるか、ダウンロード可能です。

コミット別のChain of Custodyレポートを作成

  • GitLab 13.6で導入されました
  • GitLab 15.10でマージコミットだけでなく、全てのコミットを含めることをサポート。

指定されたコミット SHA に対して、コミット固有の Chain of Custody レポートを生成することができます。このレポートは、指定されたコミット SHA の詳細のみを提供します。

コミット固有のChain of Custodyレポートを生成するには、以下の手順に従います:

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 左サイドバーで、「セキュリティ」>「コンプライアンス・センター」を選択します。
  3. コンプライアンス レポートの上部で、[すべてのコミットの一覧] の右側にある下向き矢印({chevron-lg-down}) を選択します。
  4. コミットSHAを入力し、コミットカストディレポートのエクスポートを選択します。

GitLab のバージョンによって、Chain of Custody レポートはメールで送信されるか、ダウンロード可能です。

また、直接リンクを使用することもできます:https://gitlab.com/groups/<group-name>/-/security/merge_commit_reports.csv?commit_sha={optional_commit_sha}commit_sha クエリパラメータにオプションの値を渡します。

コンプライアンス・フレームワーク・レポート

GitLab 15.10 で導入されました

コンプライアンスフレームワークレポートでは、グループ内のプロジェクトに適用されているコンプライアンスフレームワークを確認することができます。レポートの各行に表示されます:

  • プロジェクト名
  • プロジェクトパス
  • プロジェクトにコンプライアンス・フレームワーク・ラベルが割り当てられている場合。

グループのデフォルトのフレームワークには、デフォルトのバッジがあります。

グループのコンプライアンス フレームワーク レポートの表示

前提条件:

  • グループの管理者またはオーナーロールを持っている必要があります。

コンプライアンス フレームワーク レポートを表示するには

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 左サイドバーで、「セキュリティ」>「コンプライアンス・センター」を選択します。
  3. ページで、「Frameworks」タブを選択します。

グループ内のプロジェクトへのコンプライアンス フレームワークの適用

  • GitLab 15.11 で導入されたバルクアクションを使ってコンプライアンスフレームワークを追加します。
  • GitLab 16.0で導入された、バルクアクションを使わないコンプライアンスフレームワークの追加。

グループ内のプロジェクトにコンプライアンスフレームワークを適用することができます。

前提条件:

  • グループのオーナーロールを持っている必要があります。

グループ内の1つのプロジェクトにコンプライアンス・フレームワークを適用すること:

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 左サイドバーで、「セキュリティ」>「コンプライアンス・センター」を選択します。
  3. ページで、「Frameworks」タブを選択します。
  4. コンプライアンスフレームワークを追加するプロジェクトの横にある{plus}を選択します。フレームワークを追加します。
  5. 既存のコンプライアンス フレームワークを選択するか、新しいフレームワークを作成します。

グループ内の複数のプロジェクトにコンプライアンス フレームワークを適用するには

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 左サイドバーで、「セキュリティ」>「コンプライアンス・センター」を選択します。
  3. ページで、「Frameworks」タブを選択します。
  4. 複数のプロジェクトを選択します。
  5. Choose one bulk actionドロップダウンリストから、Apply framework to selected projectsを選択します。
  6. 適用するフレームワークを選択します。
  7. 適用を選択します。

グループ内のプロジェクトからコンプライアンス フレームワークを削除します。

  • GitLab 15.11 で導入されたバルクアクションを使用してコンプライアンスフレームワークを削除します。
  • GitLab 16.0で導入されたバルクアクションを使わずにコンプライアンスフレームワークを削除する方法。

グループ内のプロジェクトからコンプライアンスフレームワークを削除することができます。

前提条件:

  • グループのオーナーロールを持っている必要があります。

グループ内の 1 つのプロジェクトからコンプライアンス フレームワークを削除するには

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 左サイドバーで、「セキュリティ」>「コンプライアンス・センター」を選択します。
  3. ページで、「Frameworks」タブを選択します。
  4. プロジェクトから削除するコンプライアンスフレームワークの横で、フレームワークラベルの{閉じる}を選択します。

グループ内の複数のプロジェクトからコンプライアンス フレームワークを削除するには

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 左サイドバーで、「セキュリティ」>「コンプライアンス・センター」を選択します。
  3. ページで、「Frameworks」タブを選択します。
  4. 複数のプロジェクトを選択します。
  5. 一括アクションを 1 つ選択ドロップダウン リストから、選択したプロジェクトからフレームワークを削除を選択します。
  6. 削除 を選択します。

グループ内のプロジェクトのコンプライアンス フレームワークのレポートをエクスポートします。

GitLab 16.0 で導入されました

グループ内のプロジェクトに適用されているコンプライアンスフレームワークのレポートをエクスポート。レポーター

  • フレームワーク レポートでフィルタを使用しないでください。
  • メールの添付ファイルが大きすぎるため、15 MBで切り捨てられます。

前提条件:

  • グループの管理者またはオーナーロールを持っている必要があります。

グループ内のプロジェクトのコンプライアンス フレームワークのレポートをエクスポートするには、以下の手順に従います:

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 左サイドバーで、「セキュリティ」>「コンプライアンス・センター」を選択します。
  3. ページで、「Frameworks」タブを選択します。
  4. Frameworksタブで、右上のExport as CSVアクションを選択します。

レポートが作成され、添付ファイルとしてEメールの受信トレイに配信されます。

コンプライアンス・フレームワーク・レポートのフィルタリング

GitLab 15.11 で導入

コンプライアンス・フレームワークのリストをフィルターするには

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 左サイドバーで、「セキュリティ」>「コンプライアンス・センター」を選択します。
  3. ページで、「Frameworks」タブを選択します。
  4. 検索フィールドで
    1. 絞り込みたい属性を選択します。
    2. オペレーションを選択します。
    3. オプションのリストから選択するか、検索用のテキストを入力します。
  5. 検索({search}) を選択します。

複数の属性でフィルタリングするには、このプロセスを繰り返します。