ライセンス承認者ポリシー

ライセンス承認ポリシーでは、マージリクエストをマージする前にいつ承認が必要かを定義する複数のタイプの基準を指定できます。

note
ライセンス承認ポリシーは、保護されたターゲットブランチにのみ適用されます。

次のビデオでは、これらのポリシーの概要を説明します。

ビデオをご覧ください:GitLabライセンス承認者ポリシーの概要

新しいライセンス承認ポリシーを作成するための前提条件

ライセンス承認ポリシーは、要件が満たされていることを検証するために、依存関係スキャン ジョブの出力に依存します。依存関係スキャンが適切に設定されておらず、オープン MR に関連する依存関係スキャン ジョブが実行されていない場合、ポリシーには要件を検証するためのデータがありません。セキュリティポリシーに評価用のデータがない場合、セキュリティポリシーはクローズドに失敗し、マージリクエストに脆弱性が含まれている可能性があると見なされます。

ポリシーを確実に実行するには、対象の開発プロジェクトで依存関係スキャンを有効にする必要があります。これにはいくつかの方法があります:

  • すべてのターゲット開発プロジェクトで実行する依存関係スキャンを強制するグローバルスキャン実行ポリシーを作成します。
  • コンプライアンスパイプラインを使用して、指定されたコンプライアンスフレームワークによって強制されるプロジェクトで強制される依存関係スキャンのジョブを定義します。
  • 開発者と協力して、各プロジェクトの.gitlab-ci.yml ファイルに依存関係スキャンを設定するか、セキュリティ設定パネルを使用して有効にします。

新しいライセンス承認ポリシーを作成します。

ライセンスコンプライアンスを実施するために、ライセンス承認ポリシーを作成します。

ライセンス承認ポリシーを作成するには、次の手順に従います:

  1. セキュリティポリシープロジェクトを開発者グループ、サブグループ、またはプロジェクトにリンクします(オーナーロールが必要です)。
  2. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  3. セキュリティ > ポリシーを選択します。
  4. 新しいスキャン結果ポリシーを作成します。
  5. ポリシー ルールで、[ライセンス スキャン] を選択します。

承認者が必要なライセンスを定義する基準

どのライセンスが「承認」または「拒否」され、承認が必要かを判断するには、以下の種類の基準を使用できます。

  • 明示的に禁止されているライセンスのリストに含まれるライセンスが検出された場合。
  • 受け入れ可能なライセンスとして明示的にリストされているライセンス以外のライセンスが検出された場合。

マージリクエストブランチで検出されたライセンスとデフォルトブランチで検出されたライセンスを比較する基準

次の種類の基準を使用して、デフォルトブランチに存在するライセンスに基づいて承認者が必要かどうかを判断できます:

  • 拒否されたライセンスが、デフォルト ブランチにまだ存在しない依存関係の一部である場合にのみ、承認を必要とするように設定できます。
  • 拒否されたライセンスが、デフォルト ブランチに既に存在するコンポーネントに存在する場合、承認を必要とするように設定できます。

License approval policy

ライセンス承認ポリシーに違反するライセンスが見つかった場合、マージリクエストをブロックし、開発者に削除するよう指示します。ライセンス承認ポリシーの承認者がマージ リクエストを承認しない限り、denied ライセンスが削除されるまでマージ リクエストはマージできません。

Merge request with denied licenses

トラブルシューティング

ライセンスコンプライアンスウィジェットが読み込み状態で動かない

次のシナリオでは、ローディング スピナーが表示されます:

  • パイプラインの実行中。
  • パイプラインが完了したが、バックグラウンドでまだ結果を解析している場合。
  • ライセンス スキャンのジョブは完了したが、パイプラインはまだ実行中の場合。

ライセンス コンプライアンス ウィジェットは、更新された結果を数秒ごとにポーリングします。パイプラインが完了すると、パイプライン完了後の最初のポーリングが結果の構 文解析をトリガします。生成されるレポートのサイズによっては、数秒かかることがあります。

最終的な状態は、パイプラインの実行が正常に完了し、解析され、ライセンスがウィジェットに表示されたときです。