Skip to main content

概要

機能

ブロッキングルールは、プルリクエストのマージをブロックする条件を定義するためのガードレールです。リスクのある変更や非準拠の変更がマージされることを防ぎ、コードベースを組織のセキュリティ基準と品質基準に準拠させます。 ブロッキングルールは2種類作成できます:
  • コード脆弱性ルール:セキュリティ脆弱性、コード品質の検出結果、またはその両方に基づいてPRをブロックする
  • 依存脆弱性ルール:SCAスキャンで検出された脆弱な依存関係に基づいてプルリクエストをブロック

誰のためか

ブロッキングルールは主に以下のために設計されています:
  • 開発チーム
  • プロジェクトマネージャー
  • セキュリティ専門家
この機能は、厳格なコンプライアンス要件を持つ組織や、コードの品質とセキュリティが最重要となるミッションクリティカルなアプリケーションに取り組む場合に特に有用です。

主な特徴と利点

共通弱点列挙(CWE)に基づくルールを定義し、特定の脆弱性やコード品質問題を引き起こすプルリクエストをブロックします。
異なる問題の種類に緊急度レベル(例:重大、高、中、低)を割り当て、優先順位をつけて適切に対処できるようにします。
依存脆弱性ルールでは、両端を含むCVSSスコア範囲を指定し、該当する脆弱な依存関係をブロックします。
特定のプロジェクトやプロジェクトタグ、あるいは組織全体にブロッキングルールを適用し、どのプロジェクトがどのルールに従うかを細かくコントロールできます。
使いやすいインターフェースを通じてブロッキングルールを簡単に作成、編集、削除でき、ルールが進化するニーズに合わせて常に最新の状態に保たれます。
ブロッキングルールのステータスを切り替え、必要に応じて一時的に有効化または無効化できますが、設定は失われません。

ルールの種類

ブロッキングルールには、幅広いセキュリティ要件に対応する2つのタイプがあります。

コードの脆弱性

脆弱性コード品質の検出結果、またはその両方に基づいてプルリクエストをブロックします。設定方法:
  • 問題タイプの選択:All、Vulnerabilities、またはCode Quality。
  • 特定のCWE(共通弱点列挙)カテゴリの選択
  • 緊急性/重大度レベルの設定
SQLインジェクション、XSS、安全でない暗号化など、コードレベルの脆弱性があるプルリクエストをブロックできます。

依存脆弱性

ソフトウェア構成解析(SCA)で検出された脆弱な依存関係に基づいてプルリクエストをブロックします。設定方法:
  • 緊急性/重大度レベルの設定(重大、高、中、低)
  • または、0.0から10.0までのCVSSスコア範囲を両端を含めて設定
既知のセキュリティ脆弱性があるパッケージの導入を防ぎ、サプライチェーンを保護できます。

GitHubとの仕組み

前提条件 適切なリポジトリ権限で Corgea GitHub アプリ をインストールし設定している必要があります。
1

プルリクエスト提出

開発者がコード変更を含むプルリクエストを送信します
2

自動解析

システムはコード変更をアクティブブロッキングルールと照らして分析します
3

ルール検証

違反が見つかった場合、プルリクエストは自動的にブロックされます
4

開発者通知

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

解決

開発者は違反を修正し、修正済みとしてマークするか、誤検知または承認済みリスクとしてマークしなければマージが許可されません

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

ルールタイプを選択

ブロッキングルールの種類を選択します。
  • コード脆弱性:コードのセキュリティ問題に基づくプルリクエストをブロック(SASTの検出結果)
  • 依存脆弱性:脆弱な依存関係に基づくプルリクエストをブロックする(SCAの検出結果)
3

基本情報

ルール名と説明を入力します。
4

設定を構成する

コード脆弱性ルールでは、Issue Typeとして、AllVulnerabilitiesのみ、またはCode Qualityの検出結果のみを選択します。デフォルトのAllでは、既存ルールの動作が維持されます。次に、緊急度(Critical、High、Medium、Low)または対象のCWEを選択します。ルールを有効にするには、少なくともどちらか一方を指定する必要があります。依存脆弱性ルールでは、重大度またはCVSSスコアのどちらで絞り込むかを選択します。緊急度(Critical、High、Medium、Low)を選択するか、0.0から10.0までのCVSSスコアの最小値と最大値を入力し、その範囲内の脆弱な依存関係をブロックします。
5

スコープを設定

対象のプロジェクトやプロジェクトタグを必要に応じて選択します。プロジェクトが直接選択されている場合、または選択したタグのいずれかがプロジェクトに付いている場合にルールが適用されます。プロジェクトもタグも選択していない場合、ルールはすべてのプロジェクトに適用されます。
6

保存

内容を確認し、Createをクリックします。

既存のルールの管理

名前や設定でルールを検索したり、プロジェクトタグフィルターを使用して特定のタグを持つプロジェクトに適用されるルールを表示したりできます。ルール表の「Projects」列には、選択したプロジェクトとプロジェクトタグがチップで表示されます。プロジェクトやタグのスコープがないルールはAll projectsと表示され、長いスコープ一覧は**+N**のツールチップにまとめられます。
  1. 表でルールを見つける
  2. Editボタンをクリック
  3. 必要に応じて設定を変更する
  4. Updateをクリックして保存

スキャンの閲覧ルール

スキャンに適用されるブロッキングルールは、以下の2か所で確認できます。
  1. スキャン詳細ページには「ブロッキングルール」セクションがあり、評価されたすべてのルールが表示されます。
  1. 個別の問題では、問題の詳細でどのブロッキングルールが適用されたかを確認できます。
これにより、どのルールがスキャンや特定の問題に影響しているかを簡単に理解でき、なぜ特定の変更がブロックされるのかを特定するのに役立ちます。

ルールタイプ: コード脆弱性CWE-326(不十分な暗号強度)とCWE-327(破られた、またはリスクのある暗号アルゴリズムの使用)を対象に、緊急度をCriticalとするルールを作成し、弱い暗号化方式の使用を防ぎます。
ルールタイプ: コード脆弱性問題タイプとしてCode Qualityを選択し、CWE-398(コード品質の低さを示す指標)とCWE-477(廃止された関数の使用)を対象に、緊急度をMediumとするルールを設定します。
ルールタイプ: 依存脆弱性緊急度としてCriticalHighを選択し、重大度がCriticalまたはHighの脆弱性を含む依存関係を導入するプルリクエストを自動的にブロックします。これにより、既知の脆弱なパッケージがコードベースに入ることを防ぎ、サプライチェーンを保護します。
ルールタイプ: 依存脆弱性CVSSスコア(7.0から10.0など)でフィルタリングするルールを作成し、そのスコア範囲内で脆弱な依存関係をもたらすプルリクエストをブロックします。

ベストプラクティス

実装のヒント

  • 基本的なルールから始めて徐々に拡大
  • 依存関係の脆弱性ルールでは、まずCriticalのみ、または限定したCVSS範囲から開始し、チームの運用が安定するにつれて対象を広げます
  • コード脆弱性ルールについては、最も影響のあるCWE(例:インジェクションの欠陥、認証問題)にまず注目します。
  • 定期的なレビューと更新
  • 明確な文書作成とチームトレーニング
  • フィードバックと協力の促進
  • 緊急度レベルの戦略的活用
  • 同じルールが関連するプロジェクトのグループにも適用されるべき場合、プロジェクトタグを考慮する

トラブルシューティング

プルリクエストが予期せずブロックされた場合は、まずアクティブなルールとその構成を確認してください。
  • 予期せぬブロッキング行動
  • ルールターゲティングの問題
  • プロジェクトの範囲の問題
  • チェックルール構成
  • CWEターゲティングの検証
  • プロジェクト設定の確認
  • 必要であればサポートに連絡してください