脆弱性管理ポリシー
- プラン: Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
脆弱性管理ポリシーを使用して、検出されなくなった脆弱性を自動的に解決するか、特定の基準に一致する脆弱性を自動的に無視するか、または脆弱性の重大度レベルをオーバーライドします。これにより、脆弱性のトリアージのワークロードを削減できます。
スキャナーがデフォルトブランチで脆弱性を検出すると、スキャナーはステータスがトリアージが必要の脆弱性レコードを作成します。脆弱性が修正された後、次のセキュリティスキャンを実行すると、スキャンによってレコードのアクティビティログに検出されませんでしたが追加されますが、レコードのステータスは変更されません。ステータスを解決済みに手動で変更するか、脆弱性管理ポリシーを使用できます。
脆弱性管理ポリシーは、ルールが一貫して適用されるようにします。たとえば、次のようなポリシーを作成できます:
- 次のすべての基準を満たす脆弱性を自動的に解決する:
- デフォルトブランチで検出されなくなった。
- SASTスキャンによって検出された。
- 低リスク。
- テストファイルで見つかった脆弱性を、理由をテストでの使用として自動的に無視する。
- 特定のCVE識別子を持つ脆弱性を、理由を誤検出として無視する。
- 本番環境のコード内の特定のCVEパターンに一致する脆弱性の重大度をcriticalにオーバーライド(または変更)する。
脆弱性管理ポリシーは、ステータスがトリアージが必要または確認済みの脆弱性にのみ影響します。
脆弱性管理ポリシーは、デフォルトブランチに対してパイプラインが実行されるとき、またはアドバイザリスキャンによって脆弱性が検出されるときに適用されます。
ポリシーが自動解決を使用する場合、同じスキャナーによって検出されなくなり、ポリシーのルールに一致する各脆弱性に対して:
- GitLab Security Policy Botユーザーは、脆弱性レコードのステータスを解決済みに設定します。
- ステータス変更に関するメモが、脆弱性のレコードに追加されます。
ポリシーが自動却下を使用する場合、ポリシーの基準に一致する各脆弱性に対して:
- GitLab Security Policy Botユーザーは、脆弱性レコードのステータスを却下に設定します。
- 却下理由は、ポリシーの設定に従って設定されます。
- ステータス変更に関するメモが、脆弱性のレコードに追加されます。
ポリシーは、一連の基準に一致する脆弱性を識別し、その重大度をオーバーライドできます:
- GitLab Security Policy Botユーザーは、ポリシーの設定に従って、重大度レベルを設定、引き上げ、または引き下げます。
- 重大度変更に関するメモが、脆弱性のレコードに追加されます。
パイプラインの負荷と期間を制限するため、自動解決または自動却下アクションでは、パイプラインごとに最大1,000件の脆弱性が処理されます。自動解決または自動却下アクションは、すべての脆弱性が処理されるまで、以降のパイプラインで最大数まで再開されます。
制限事項
- 各ポリシーに最大5つのルールを割り当てできます。
- 各セキュリティポリシープロジェクトに最大5つの脆弱性管理ポリシーを割り当てできます。
- シークレット検出スキャンにより、以前検出されたシークレットキーが検出されなくなった場合でも、その脆弱性は自動解決されません。代わりに、削除されたシークレットキーはすでに公開されているため、Needs Triageのままになります。脆弱性ステータスは、シークレットキーが失効するかローテーションされた後にのみ手動で解決されるべきです。
自動却下ポリシー
自動却下ポリシーは、次の基準をサポートしています:
- ファイルパス: 脆弱性が見つかったファイルパスに基づいて脆弱性を照合します。
test/**/*のようなグロブパターンをサポートしています。 - ディレクトリ: 特定のディレクトリで見つかった脆弱性を照合します。
vendor/*のようなグロブパターンをサポートしています。 - 識別子: 脆弱性をその識別子(CVE、CWE、またはスキャナー固有のID)に基づいて照合します。
CVE-2023-*のようなワイルドカードパターンをサポートしています。
security_policies_severity_customize機能フラグが有効な場合、識別子基準は以下もサポートします:
- 特定の識別子形式と照合するための識別子タイプ(
cve、cwe、またはowasp)の指定。 ORロジックを使用して複数の識別子を照合するためのvalues配列の使用。
複数の基準を組み合わせて使用できます:
ANDロジック。無視されるには、脆弱性がすべての基準に一致する必要があります。ORロジック。無視されるには、脆弱性がいずれかのルールに一致すればよいです。
次の却下理由がサポートされています:
- 許容可能なリスク: 脆弱性は既知であり、ビジネスリスクとして許容されます。
- 誤検出: 脆弱性が誤って報告されました。
- 影響の軽減制御: 同等の保護が他のコントロールによって提供されます。
- テストでの使用: 脆弱性はテストコードまたはテストデータの一部です。
- 該当するものがありません: 脆弱性は、更新されなくなったコード内にあります。
重大度オーバーライドポリシー
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
脆弱性の重大度をオーバーライドするポリシーは、自動却下ポリシーと同じ基準を使用します:
- ファイルパス: 脆弱性が見つかったファイルパスに基づいて脆弱性を照合します。
- ディレクトリ: 特定のディレクトリで見つかった脆弱性を照合します。
- 識別子: 脆弱性をその識別子に基づいて照合します。
識別子基準の場合、特定の識別子形式のみを照合するために、識別子タイプをオプションで指定できます:
- CVE ID:
CVE-2021-44228のようなCVE識別子またはCVE-2023-*のようなパターンを照合します。 - CWE ID:
CWE-79のようなCWE識別子またはCWE-*のようなパターンを照合します。 - OWASP:
A1またはA03:2021のようなOWASP識別子を照合します。
次の重大度操作がサポートされています:
- Set: 重大度を特定のレベル(
info、low、medium、high、またはcritical)に設定します。 - 増加: 重大度を1レベル増加させます。
- 減少: 重大度を1レベル減少させます。
脆弱性管理ポリシーを作成します
特定の基準に一致する脆弱性を自動的に解決するか無視するために、脆弱性管理ポリシーを作成します。
前提条件:
- デフォルトでは、グループ、サブグループ、またはプロジェクトのオーナーのみが、セキュリティポリシープロジェクトを作成または割り当てるために必要な権限を持っています。これはカスタムロールを使用して変更できます。
脆弱性管理ポリシーを作成するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- セキュリティ > ポリシーに移動します。
- 新規ポリシーを選択します。
- 脆弱性管理ポリシーで、ポリシーの選択を選択します。
- フィールドを完了し、ポリシーのステータスを有効に設定します。
- ポリシーの作成を選択します。
- マージリクエストをレビューしてマージします。
脆弱性管理ポリシーが作成されると、ポリシーのルールはデフォルトブランチ上のパイプラインに適用されます。
脆弱性管理ポリシーを編集します
脆弱性管理ポリシーを編集してルールを変更します。
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- セキュリティ > ポリシーに移動します。
- ポリシーの行で、編集を選択します。
- ポリシーの詳細を編集します。
- 変更を保存を選択します。
- マージリクエストをレビューしてマージします。
脆弱性管理ポリシーが更新されました。デフォルトブランチに対して次にパイプラインが実行されると、ポリシーのルールが適用されます。
スキーマ
脆弱性管理ポリシーが作成または編集されると、その有効性を確認するために脆弱性管理ポリシースキーマに対してチェックされます。