概要
機能
ブロッキングルールは、どの検出結果でプルリクエストのチェックやCIパイプラインを失敗させるかを定義するガードレールです。コードベースが組織のセキュリティ基準と品質基準に沿うようにします。 ブロッキングルールは3種類作成できます:- Code Vulnerability Rules: セキュリティ脆弱性、コード品質の検出結果、またはその両方に基づいてPRをブロックする
- Dependency Vulnerability Rules: SCAスキャンで検出された脆弱な依存関係に基づいてPRをブロックする
- License Compliance Rules: 特定のSPDXライセンスまたはライセンスファミリを持つ依存関係をブロックする
誰のためか
ブロッキングルールは主に以下のために設計されています:- 開発チーム
- プロジェクトマネージャー
- セキュリティ専門家
主な特徴と利点
コーディング基準の施行
コーディング基準の施行
Common Weakness Enumerations(CWE)に基づくルールを定義し、特定の脆弱性やコード品質の問題を導入するプルリクエストをブロックします。
緊急度レベルのカスタマイズ
緊急度レベルのカスタマイズ
問題の種類ごとに緊急度(Critical、High、Medium、Low など)を割り当て、優先度を付けて対応できます。
CVSSで依存関係を絞り込み
CVSSで依存関係を絞り込み
Dependency Vulnerabilityルールでは、両端を含むCVSSスコア範囲を指定し、該当する脆弱な依存関係をブロックします。
ライセンスポリシーの適用
ライセンスポリシーの適用
特定のSPDXライセンスID、またはCopyleft、Permissive、Commercialのライセンスファミリで依存関係をブロックします。
プロジェクトおよびタグスコープのルール
プロジェクトおよびタグスコープのルール
特定のプロジェクト、プロジェクトタグ、または組織全体にブロッキングルールを適用し、どのプロジェクトにどのルールを適用するかを細かく管理できます。
ルール管理
ルール管理
使いやすいインターフェースでブロッキングルールを作成、編集、削除でき、変化する要件に合わせてルールを最新の状態に保てます。
ルールの有効化/無効化
ルールの有効化/無効化
ブロッキングルールのステータスを切り替え、設定を失わずに一時的に有効化または無効化できます。
ルールの種類
ブロッキングルールには、幅広いセキュリティ要件に対応する3つのタイプがあります。Code Vulnerability
セキュリティ脆弱性、コード品質の検出結果、またはその両方に基づいてプルリクエストをブロックします。設定方法:
- 問題タイプの選択: All、Vulnerabilities、またはCode Quality
- 特定のCWE(Common Weakness Enumeration)カテゴリの選択
- 緊急度/重大度レベルの設定
Dependency Vulnerability
ソフトウェア構成解析(SCA)で検出された脆弱な依存関係に基づいてプルリクエストをブロックします。設定方法:
- 緊急度/重大度レベルの設定(Critical、High、Medium、Low)
- または、0.0から10.0までのCVSSスコア範囲を両端を含めて設定
License Compliance
依存関係が拒否対象のライセンスを使用している場合に、プルリクエストまたはCIパイプラインをブロックします。設定方法:
- 1つ以上のライセンスファミリを選択: Copyleft、Permissive、またはCommercial
- 特定のSPDXライセンスIDを入力(例:
AGPL-3.0)
GitHubとの仕組み
前提条件 適切なリポジトリ権限で Corgea GitHub アプリ をインストールし設定している必要があります。
1
プルリクエスト提出
開発者がコード変更を含むプルリクエストを送信します
2
自動解析
システムはコード変更を有効なブロッキングルールと照らして分析します
3
ルール検証
違反が見つかった場合、プルリクエストは自動的にブロックされます

4
開発者通知
開発者がルール違反に関する詳細な通知を受け取ります

5
解決
開発者は違反を修正してFixedとしてマークするか、False PositiveまたはAccepted Riskとしてマークしなければマージできません
Azure DevOpsでの仕組み
前提条件:CorgeaとのAzure DevOps連携が設定され、必要な権限が付与されていることを確認します。
1
プルリクエスト提出
開発者がAzure DevOpsでコード変更を含むプルリクエストを送信します。
2
自動解析
システムはコード変更をCorgeaで設定された有効なブロッキングルールと比較して評価します。
3
ルール検証
違反が見つかると、プルリクエストは自動的にブロックされます。
開発者はPRが解決されるまでマージできません。


4
開発者通知
開発者はCorgea Scanページで失敗した問題の詳細情報を見るリンクを受け取ります。

5
解決
開発者は違反を修正するか、False PositiveまたはAccepted Riskとしてマークしなければマージできません。
使用ガイド
新しいブロッキングルールの作成
1
作成を開始する
「Add Blocking Rule」ボタンをクリックします
2
ルールタイプを選択
ブロッキングルールの種類を選択します。
- Code Vulnerability: コードのセキュリティ問題に基づくプルリクエストをブロック(SASTの検出結果)
- Dependency Vulnerability: 脆弱な依存関係に基づくプルリクエストをブロック(SCAの検出結果)
- License Compliance: 拒否対象のSPDXライセンスまたはライセンスファミリに基づいて依存関係をブロック

3
基本情報
ルール名と説明を入力し、Applies Toを選択します。
- Pull Requestsは、プルリクエストのチェックでルールを自動的に適用します。
- CIは、パイプラインが
corgea scan --block-on <slug>でルールを指定した場合にのみ適用します。CIルールはプルリクエストをブロックしません。

4
設定を構成する
Code Vulnerabilityルールでは、Issue Typeとして、All、Vulnerabilitiesのみ、またはCode Qualityの検出結果のみを選択します。デフォルトのAllでは、既存ルールの動作が維持されます。次に、緊急度(Critical、High、Medium、Low)または対象のCWEを選択します。ルールを有効にするには、少なくともどちらか一方を指定する必要があります。Dependency Vulnerabilityルールでは、重大度またはCVSSスコアのどちらで絞り込むかを選択します。緊急度(Critical、High、Medium、Low)を選択するか、0.0から10.0までのCVSSスコアの最小値と最大値を入力し、その範囲内の脆弱な依存関係をブロックします。License Complianceルールでは、拒否対象のライセンスファミリ(Copyleft、Permissive、またはCommercial)を少なくとも1つ選択するか、1つ以上のSPDXライセンスIDを入力します。報告されたライセンスのいずれかが選択したファミリまたは特定のIDに一致する場合、その依存関係はブロックされます。
5
スコープを設定
対象のプロジェクトやプロジェクトタグを必要に応じて選択します。プロジェクトが直接選択されている場合、または選択したタグのいずれかがプロジェクトに付いている場合にルールが適用されます。プロジェクトもタグも選択していない場合、ルールはすべてのプロジェクトに適用されます。
6
保存
内容を確認し、Createをクリックします。
既存のルールの管理
名前や設定でルールを検索したり、プロジェクトタグまたはApplies Toの対象で一覧を絞り込んだりできます。ルール表のID列には各ルールのslugが表示され、プロジェクトスコープ、ルールタイプ、およびPull RequestsまたはCIの対象はTriggers Onにチップで表示されます。slugを選択すると、CIコマンドで使うためにコピーできます。プロジェクトやタグのスコープがないルールはすべてのプロジェクトに適用され、長いスコープ一覧は**+N more**のツールチップにまとめられます。
CIでのルール適用
Applies ToをCIに設定した有効なルールを作成し、そのslugをscanコマンドに渡します。ルール名は、例えばno-criticalsではなくcriticalsのように、トリガーされる条件に合わせて付けてください。こうすると--block-onが直接的な表明として読めます。--block-onにはCorgea CLI 1.10.0以降が必要です。
--block-onはBLASTスキャナーのみでサポートされ、--failまたは--fail-onと併用できません。
- ルールを編集
- ステータスを切り替え
- 詳細を見る
- 表でルールを見つける
- Editボタンをクリック
- 必要に応じて設定を変更する
- Updateをクリックして保存
スキャンでのルール確認
スキャンに適用されるブロッキングルールは、以下の2か所で確認できます。- スキャン詳細ページには「Blocking Rules」セクションがあり、評価されたすべてのルールが表示されます。

- 個別の問題では、問題の詳細でどのブロッキングルールが適用されたかを確認できます。

例
安全でない暗号化をブロック
安全でない暗号化をブロック
ルールタイプ: Code VulnerabilityCWE-326(Inadequate Encryption Strength)とCWE-327(Use of a Broken or Risky Cryptographic Algorithm)を対象に、緊急度をCriticalとするルールを作成し、弱い暗号化方式の使用を防ぎます。
コード品質の強制
コード品質の強制
ルールタイプ: Code Vulnerability問題タイプとしてCode Qualityを選択し、CWE-398(Indicator of Poor Code Quality)とCWE-477(Use of Obsolete Functions)を対象に、緊急度をMediumとするルールを設定します。
重大な依存脆弱性のブロック
重大な依存脆弱性のブロック
ルールタイプ: Dependency Vulnerability緊急度としてCriticalとHighを選択し、重大度がCriticalまたはHighの脆弱性を含む依存関係を導入するプルリクエストを自動的にブロックします。これにより、既知の脆弱なパッケージがコードベースに入ることを防ぎ、サプライチェーンを保護します。
CVSS範囲による依存関係のブロック
CVSS範囲による依存関係のブロック
ルールタイプ: Dependency VulnerabilityCVSSスコア(7.0から10.0など)でフィルタリングするルールを作成し、そのスコア範囲内で脆弱な依存関係をもたらすプルリクエストをブロックします。
Copyleft依存関係のブロック
Copyleft依存関係のブロック
ルールタイプ: License ComplianceCopyleftファミリを選択し、報告されたライセンスがそのファミリに属する依存関係をブロックします。ポリシーでより狭い拒否リストが必要な場合は、特定のSPDX IDを追加します。
ベストプラクティス
実装のヒント
- 基本的なルールから始めて徐々に拡大する
- Dependency Vulnerabilityルールでは、まずCriticalのみ、または限定したCVSS範囲から開始し、チームの運用が安定するにつれて対象を広げる
- Code Vulnerabilityルールでは、まず影響の大きいCWE(例: インジェクションの欠陥、認証の問題)に注目する
- 定期的なレビューと更新
- 明確なドキュメント作成とチームへの周知
- フィードバックと協力の促進
- 緊急度レベルの戦略的な活用
- 同じルールを関連プロジェクト群に適用する場合はプロジェクトタグを検討する
トラブルシューティング
よくある問題
よくある問題
- 予期しないブロック動作
- ルールの対象設定の問題
- プロジェクトスコープの問題
解決ステップ
解決ステップ
- ルール設定を確認する
- CWEの対象設定を確認する
- プロジェクト設定を確認する
- 必要に応じてサポートに連絡する
