ライセンス承認ポリシー
- プラン: Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
ライセンス承認ポリシーを使用して、マージリクエストの承認を得る時期を決定する基準を指定します。
ライセンス承認ポリシーは、保護されたターゲットブランチにのみ適用されます。
次の動画では、これらのポリシーの概要を説明します。
新しいライセンス承認ポリシーを作成するための前提条件
ライセンス承認ポリシーは、要件が満たされていることを確認するために、依存関係スキャンジョブの出力に依存します。依存関係スキャンが適切に設定されていない場合、したがって、オープンマージリクエストに関連する依存関係スキャンジョブが実行されない場合、ポリシーには要件を確認するためのデータがありません。セキュリティポリシーに評価用のデータがない場合、デフォルトではクローズに失敗し、マージリクエストに脆弱性が含まれている可能性があると想定します。fallback_behaviorプロパティを使用してデフォルトの動作をオプトアウトし、ポリシーがオープンに失敗するように設定できます。オープンに失敗するポリシーは、無効で強制不可能なすべてのルールがブロック解除されています。
ポリシーの適用を確実にするには、ターゲットブランチの開発プロジェクトで依存関係スキャンを有効にする必要があります。これを実現するには、いくつかの異なる方法があります:
- すべてのターゲットブランチの開発プロジェクトで依存関係スキャンが実行されるように強制するスキャン実行ポリシーを作成します。
- 開発チームと協力して、各プロジェクトの
.gitlab-ci.ymlファイルで依存関係スキャンを設定するか、セキュリティ設定を使用して有効にします。
ライセンス承認ポリシーでは、GitLabがサポートするパッケージからのライセンス情報が必要です。
新しいライセンス承認ポリシーを作成
ライセンスコンプライアンスを強制するために、ライセンス承認ポリシーを作成します。
ライセンス承認ポリシーを作成するには、次の手順に従います:
- セキュリティポリシープロジェクトをリンクを開発グループ、サブグループ、またはプロジェクト(オーナーロールが必要です)にリンクします。
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- セキュリティ > ポリシーを選択します。
- 新しいマージリクエスト承認ポリシーを作成します。
- ポリシー規則で、License scanning(ライセンススキャン)を選択します。
承認が必要なライセンスを定義する基準
次の種類の基準を使用して、「承認済み」または「拒否済み」であり、承認が必要なライセンスを判断できます。
- 明示的に禁止されているライセンスのリストにあるライセンスが検出された場合。
- 許容できるものとして明示的にリストされているライセンスを除き、ライセンスが検出された場合。
デフォルトブランチのライセンスとマージリクエストブランチで検出されたライセンスを比較する基準
次の種類の基準を使用して、デフォルトブランチに存在するライセンスに基づいて承認が必要かどうかを判断できます:
- 拒否されたライセンスは、拒否されたライセンスがデフォルトブランチにまだ存在しない依存の一部である場合にのみ、承認を要求するように設定できます。
- 拒否されたライセンスは、拒否されたライセンスがデフォルトブランチにすでに存在するコンポーネントに存在する場合、承認を要求するように設定できます。
ライセンス承認ポリシーに違反するライセンスが見つかった場合、マージリクエストをブロックし、デベロッパーに削除するように指示します。deniedライセンスが削除されるまで、マージリクエストはマージできません。ただし、ライセンス承認ポリシーの対象となる承認者がマージリクエストを承認する場合は除きます。
トラブルシューティング
ライセンスコンプライアンスウィジェットがロード状態のままになる
読み込みスピナーは、次のシナリオで表示されます:
- パイプラインの進行中。
- パイプラインが完了しても、バックグラウンドで結果を解析中の場合。
- ライセンススキャンジョブが完了しても、パイプラインがまだ実行されている場合。
ライセンスコンプライアンスウィジェットは、更新された結果を数秒ごとにトリガーします。パイプラインが完了すると、パイプライン完了後の最初の呼び出しで結果の解析中がトリガーされます。これは、生成されたレポートのサイズに応じて数秒かかる場合があります。
最終状態は、パイプラインの実行が正常に完了し、解析中され、ウィジェットにライセンスが表示されるときです。
unknownライセンスが原因でライセンス承認ポリシーがマージリクエストをブロックする
ライセンス承認ポリシーは、特定のシナリオでunknownライセンスが原因でマージリクエストをブロックする場合があります。これは、次のいずれかの状況で発生する可能性があります:
- 依存関係スキャンジョブが特定のコンポーネントのライセンスを識別できません。
- 新しいまたは一般的なライセンスが使用されていますが、スキャンツールで認識されていません。
- コンポーネントのメタデータにライセンス情報がないか、不完全です。
この問題を解決するには、次の手順に従います:
- パイプラインページのライセンスタブを確認して、どのコンポーネントに
unknownライセンスがあるかを特定するか、GitLabセキュリティポリシーボットによって生成されたout-of-policyライセンスを確認します。 - これらのコンポーネントを手動で調査して、実際のライセンスを特定します。
- ライセンスを特定できない場合、または許容できない場合は、影響を受けるコンポーネントの削除または交換を検討してください。
unknownライセンスを使用して一時的にマージを許可する必要がある場合:
- ライセンス承認ポリシーを編集します。
- 許可されたライセンスのリストに
unknownを追加します。 - 問題に対処したら、適切なライセンスコンプライアンスを維持するために、許可されたライセンスリストから
unknownを削除することを忘れないでください。
ライセンスコンプライアンスの問題に対処する場合は、特にunknownライセンスを処理する場合は、必ず法務チームに相談してください。

