> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corgea.app/llms.txt
> Use this file to discover all available pages before exploring further.

# ブロッキングルール

> ブロッキングルールは、非準拠コードのマージを防ぐことでセキュリティおよび品質基準の強化に役立ちます。

## 概要

### 機能

ブロッキングルールは、プルリクエストのマージをブロックする条件を定義するためのガードレールです。リスクのある変更や非準拠の変更がマージされることを防ぎ、コードベースを組織のセキュリティ基準と品質基準に準拠させます。

ブロッキングルールは2種類作成できます:

* **コード脆弱性ルール**:セキュリティ脆弱性、コード品質の検出結果、またはその両方に基づいてPRをブロックする
* **依存脆弱性ルール**:SCAスキャンで検出された脆弱な依存関係に基づいてプルリクエストをブロック

### 誰のためか

ブロッキングルールは主に以下のために設計されています:

* 開発チーム
* プロジェクトマネージャー
* セキュリティ専門家

この機能は、厳格なコンプライアンス要件を持つ組織や、コードの品質とセキュリティが最重要となるミッションクリティカルなアプリケーションに取り組む場合に特に有用です。

## 主な特徴と利点

<AccordionGroup>
  <Accordion title="コーディング基準の施行" icon="shield-check">
    共通弱点列挙(CWE)に基づくルールを定義し、特定の脆弱性やコード品質問題を引き起こすプルリクエストをブロックします。
  </Accordion>

  <Accordion title="緊急度レベルをカスタマイズする" icon="signal">
    異なる問題の種類に緊急度レベル(例:重大、高、中、低)を割り当て、優先順位をつけて適切に対処できるようにします。
  </Accordion>

  <Accordion title="CVSSで依存関係を絞り込み" icon="gauge">
    依存脆弱性ルールでは、両端を含むCVSSスコア範囲を指定し、該当する脆弱な依存関係をブロックします。
  </Accordion>

  <Accordion title="プロジェクトおよびタグスコープルール" icon="folder-tree">
    特定のプロジェクトやプロジェクトタグ、あるいは組織全体にブロッキングルールを適用し、どのプロジェクトがどのルールに従うかを細かくコントロールできます。
  </Accordion>

  <Accordion title="ルール管理" icon="gear">
    使いやすいインターフェースを通じてブロッキングルールを簡単に作成、編集、削除でき、ルールが進化するニーズに合わせて常に最新の状態に保たれます。
  </Accordion>

  <Accordion title="ルールの有効化/無効化" icon="toggle-on">
    ブロッキングルールのステータスを切り替え、必要に応じて一時的に有効化または無効化できますが、設定は失われません。
  </Accordion>
</AccordionGroup>

## ルールの種類

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

<CardGroup cols={2}>
  <Card title="コードの脆弱性" icon="code">
    **脆弱性**、**コード品質**の検出結果、またはその両方に基づいて**プルリクエストをブロック**します。

    設定方法:

    * 問題タイプの選択:All、Vulnerabilities、またはCode Quality。
    * 特定のCWE(共通弱点列挙)カテゴリの選択
    * 緊急性/重大度レベルの設定

    SQLインジェクション、XSS、安全でない暗号化など、コードレベルの脆弱性があるプルリクエストをブロックできます。
  </Card>

  <Card title="依存脆弱性" icon="box">
    ソフトウェア構成解析（SCA）で検出された**脆弱な依存関係に基づいてプルリクエストをブロック**します。

    設定方法:

    * 緊急性/重大度レベルの設定(重大、高、中、低)
    * または、0.0から10.0までのCVSSスコア範囲を両端を含めて設定

    既知のセキュリティ脆弱性があるパッケージの導入を防ぎ、サプライチェーンを保護できます。
  </Card>
</CardGroup>

## GitHubとの仕組み

<Info>
  **前提条件** 適切なリポジトリ権限で [Corgea GitHub アプリ](github) をインストールし設定している必要があります。
</Info>

<Steps>
  <Step title="プルリクエスト提出">
    開発者がコード変更を含むプルリクエストを送信します
  </Step>

  <Step title="自動解析">
    システムはコード変更をアクティブブロッキングルールと照らして分析します
  </Step>

  <Step title="ルール検証">
    違反が見つかった場合、プルリクエストは自動的にブロックされます

    <Frame>
      <img src="https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_blocked.png?fit=max&auto=format&n=uxLuQR4653lM43Tj&q=85&s=39013c8f8163f96d432b0f9bd4abbc05" style={{ borderRadius: '0.5rem' }} width="2776" height="1034" data-path="images/blocking_rules_pr_blocked.png" />
    </Frame>
  </Step>

  <Step title="開発者通知">
    開発者がルール違反に関する詳細な通知を受け取る

    <Frame>
      <img src="https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_details.png?fit=max&auto=format&n=uxLuQR4653lM43Tj&q=85&s=4ac0e073341d12a425db9a4412e55b3e" style={{ borderRadius: '0.5rem' }} width="3078" height="1834" data-path="images/blocking_rules_pr_details.png" />
    </Frame>
  </Step>

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

## Azure DevOpsでの仕組み

<Info>
  **前提条件**：Corgeaとの[Azure DevOps連携](azure_devops)が設定され、必要な権限が付与されていることを確認します。
</Info>

<Steps>
  <Step title="プルリクエスト提出">
    開発者がAzure DevOpsでコード変更を含むプルリクエストを送信します。
  </Step>

  <Step title="自動解析">
    システムはコード変更をCorgeaで設定された有効なブロッキングルールと比較して評価します。
  </Step>

  <Step title="ルール検証">
    違反が見つかると、プルリクエストは自動的にブロックされます。

    <Frame>
      <img src="https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_blocking_rules_pr_blocked.png?fit=max&auto=format&n=uxLuQR4653lM43Tj&q=85&s=a85aa91d3cea8d9572197b863bafa4e4" style={{ borderRadius: '0.5rem' }} width="966" height="512" data-path="images/azure_blocking_rules_pr_blocked.png" />
    </Frame>

    開発者はPRが解決されるまで統合できません。

    <Frame>
      <img src="https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure-devops_merging_blocked.png?fit=max&auto=format&n=uxLuQR4653lM43Tj&q=85&s=1ecb01eb911476a19b0265a3b56dad72" style={{ borderRadius: '0.5rem' }} width="2900" height="2630" data-path="images/azure-devops_merging_blocked.png" />
    </Frame>
  </Step>

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

    <Frame>
      <img src="https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_see_details_of_issues.png?fit=max&auto=format&n=uxLuQR4653lM43Tj&q=85&s=e5e94b8c2fec2b7abab7eb76a37533b1" style={{ borderRadius: '0.5rem' }} width="2696" height="1556" data-path="images/azure_see_details_of_issues.png" />
    </Frame>
  </Step>

  <Step title="解決">
    開発者は違反を修正するか、**False Positive**または**Accepted Risk**としてマークしなければマージできません。
  </Step>
</Steps>

## 使用ガイド

### 新しいブロッキングルールの作成

<Steps>
  <Step title="作成を開始する">
    「Add Blocking Rule」ボタンをクリックします
  </Step>

  <Step title="ルールタイプを選択">
    ブロッキングルールの種類を選択します。

    * **コード脆弱性**:コードのセキュリティ問題に基づくプルリクエストをブロック(SASTの検出結果)
    * **依存脆弱性**:脆弱な依存関係に基づくプルリクエストをブロックする(SCAの検出結果)

    <Frame>
      <img src="https://mintcdn.com/corgea/5RdbtGRSeHorS3ia/images/blocking_rule_create.png?fit=max&auto=format&n=5RdbtGRSeHorS3ia&q=85&s=30d79ec3c8001ced6485f58022aa3606" style={{ borderRadius: '0.5rem' }} width="1656" height="1640" data-path="images/blocking_rule_create.png" />
    </Frame>
  </Step>

  <Step title="基本情報">
    ルール名と説明を入力します。
  </Step>

  <Step title="設定を構成する">
    **コード脆弱性**ルールでは、**Issue Type**として、**All**、**Vulnerabilities**のみ、または**Code Quality**の検出結果のみを選択します。デフォルトの**All**では、既存ルールの動作が維持されます。次に、緊急度（Critical、High、Medium、Low）または対象のCWEを選択します。ルールを有効にするには、少なくともどちらか一方を指定する必要があります。

    **依存脆弱性**ルールでは、重大度またはCVSSスコアのどちらで絞り込むかを選択します。緊急度（Critical、High、Medium、Low）を選択するか、0.0から10.0までのCVSSスコアの最小値と最大値を入力し、その範囲内の脆弱な依存関係をブロックします。
  </Step>

  <Step title="スコープを設定">
    対象のプロジェクトやプロジェクトタグを必要に応じて選択します。プロジェクトが直接選択されている場合、または選択したタグのいずれかがプロジェクトに付いている場合にルールが適用されます。プロジェクトもタグも選択していない場合、ルールはすべてのプロジェクトに適用されます。
  </Step>

  <Step title="保存">
    内容を確認し、**Create**をクリックします。
  </Step>
</Steps>

### 既存のルールの管理

名前や設定でルールを検索したり、プロジェクトタグフィルターを使用して特定のタグを持つプロジェクトに適用されるルールを表示したりできます。ルール表の「Projects」列には、選択したプロジェクトとプロジェクトタグがチップで表示されます。プロジェクトやタグのスコープがないルールは**All projects**と表示され、長いスコープ一覧は\*\*+N\*\*のツールチップにまとめられます。

<Tabs>
  <Tab title="編集ルール">
    1. 表でルールを見つける
    2. **Edit**ボタンをクリック
    3. 必要に応じて設定を変更する
    4. **Update**をクリックして保存
  </Tab>

  <Tab title="トグルステータス">
    1. 表でルールを見つける
    2. **Toggle Status**をクリック
    3. ステータス変更の確認
  </Tab>

  <Tab title="詳細を見る">
    1. ルール名をクリックします
    2. 詳細情報を確認
    3. 確認後にモーダルを閉じる
  </Tab>
</Tabs>

### スキャンの閲覧ルール

スキャンに適用されるブロッキングルールは、以下の2か所で確認できます。

1. スキャン詳細ページには「ブロッキングルール」セクションがあり、評価されたすべてのルールが表示されます。

<Frame>
  <img src="https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_scan_details.png?fit=max&auto=format&n=uxLuQR4653lM43Tj&q=85&s=a132f7927273e0eaf8bdb84065bbcbf4" style={{ borderRadius: '0.5rem' }} width="1518" height="1082" data-path="images/blocking_rules_scan_details.png" />
</Frame>

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

<Frame>
  <img src="https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rule_issue_details.png?fit=max&auto=format&n=uxLuQR4653lM43Tj&q=85&s=433dd74d99f714b953608a1e59ac973a" style={{ borderRadius: '0.5rem' }} width="3072" height="1124" data-path="images/blocking_rule_issue_details.png" />
</Frame>

これにより、どのルールがスキャンや特定の問題に影響しているかを簡単に理解でき、なぜ特定の変更がブロックされるのかを特定するのに役立ちます。

## 例

<AccordionGroup>
  <Accordion title="安全でない暗号化をブロック" icon="lock">
    **ルールタイプ:** コード脆弱性

    CWE-326（不十分な暗号強度）とCWE-327（破られた、またはリスクのある暗号アルゴリズムの使用）を対象に、緊急度を**Critical**とするルールを作成し、弱い暗号化方式の使用を防ぎます。
  </Accordion>

  <Accordion title="コード品質の強制" icon="code">
    **ルールタイプ:** コード脆弱性

    問題タイプとして**Code Quality**を選択し、CWE-398（コード品質の低さを示す指標）とCWE-477（廃止された関数の使用）を対象に、緊急度を**Medium**とするルールを設定します。
  </Accordion>

  <Accordion title="重大依存脆弱性のブロック" icon="box">
    **ルールタイプ:** 依存脆弱性

    緊急度として**Critical**と**High**を選択し、重大度がCriticalまたはHighの脆弱性を含む依存関係を導入するプルリクエストを自動的にブロックします。これにより、既知の脆弱なパッケージがコードベースに入ることを防ぎ、サプライチェーンを保護します。
  </Accordion>

  <Accordion title="CVSS範囲による依存関係のブロック" icon="gauge">
    **ルールタイプ:** 依存脆弱性

    CVSSスコア(7.0から10.0など)でフィルタリングするルールを作成し、そのスコア範囲内で脆弱な依存関係をもたらすプルリクエストをブロックします。
  </Accordion>
</AccordionGroup>

## ベストプラクティス

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

## トラブルシューティング

<Warning>プルリクエストが予期せずブロックされた場合は、まずアクティブなルールとその構成を確認してください。</Warning>

<AccordionGroup>
  <Accordion title="よくある問題" icon="bug">
    * 予期せぬブロッキング行動
    * ルールターゲティングの問題
    * プロジェクトの範囲の問題
  </Accordion>

  <Accordion title="解決ステップ" icon="wrench">
    * チェックルール構成
    * CWEターゲティングの検証
    * プロジェクト設定の確認
    * 必要であればサポートに連絡してください
  </Accordion>
</AccordionGroup>
