mcpField
P
prowler-compliance-review

prowler-compliance-review

github.com/prowler-cloudセキュリティ15.1k69 回インストール今日更新
リポジトリ

prowler-compliance-review について

prowler-compliance-reviewは、Prowlerのコントリビューター向けにコンプライアンスフレームワークの変更を確認するスキルです。JSONやフレームワークの検証に加え、ダッシュボードファイル、変更ログ、テストも確認します。

主な機能

  1. 01JSON構文の検証
  2. 02チェック漏れと重複IDの検出
  3. 03メタデータとダッシュボードの確認
  4. 04変更ログの確認
  5. 05フレームワークのテストコマンド

活用シーン

  1. 01プルリクエストのフレームワーク変更レビュー
  2. 02マージ前のフレームワークJSON検証
  3. 03フレームワークの検出とスキャン動作の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/prowler-cloud/prowler --skill prowler-compliance-review

インストール後、Claude Code で/prowler-compliance-reviewを入力して読み込まれたか確認します。

同梱ファイルassets/validate_compliance.pyreferences/review-checklist.md

詳細

使用するタイミング

  • 新しいコンプライアンスフレームワークを追加する PR をレビューするとき
  • 既存のコンプライアンスフレームワークを変更する PR をレビューするとき
  • マージ前にコンプライアンスフレームワークの JSON 構造を検証するとき

レビューチェックリスト(重要)

チェック項目コマンド/方法合格基準
JSON が有効python3 -m json.tool file.json構文エラーがない
すべてのチェックが存在する検証スクリプトを実行不足しているチェックが 0 件
ID が重複していない検証スクリプトを実行要件 ID の重複が 0 件
変更履歴フラグメント手動レビューprowler/changelog.d/ にフラグメントがある
ダッシュボードファイル既存のファイルと比較確立されたパターンに従っている
フレームワークのメタデータ手動レビュー必須フィールドがすべて入力されている

コマンド

# 1. Validate JSON syntax
python3 -m json.tool prowler/compliance/{provider}/{framework}.json > /dev/null \
  && echo "Valid JSON" || echo "INVALID JSON"

# 2. Run full validation script
python3 skills/prowler-compliance-review/assets/validate_compliance.py \
  prowler/compliance/{provider}/{framework}.json

# 3. Compare dashboard with existing (find similar framework)
diff dashboard/compliance/{new_framework}.py \
     dashboard/compliance/{existing_framework}.py

判定ツリー

JSON Valid?
├── No → FAIL: Fix JSON syntax errors
└── Yes ↓
    All Checks Exist in Codebase?
    ├── Missing checks → FAIL: Add missing checks or remove from framework
    └── All exist ↓
        Duplicate Requirement IDs?
        ├── Yes → FAIL: Fix duplicate IDs
        └── No ↓
            Changelog Fragment Present?
            ├── No → REQUEST CHANGES: Add changelog fragment
            └── Yes ↓
                Dashboard File Follows Pattern?
                ├── No → REQUEST CHANGES: Fix dashboard pattern
                └── Yes ↓
                    Framework Metadata Complete?
                    ├── No → REQUEST CHANGES: Add missing metadata
                    └── Yes → APPROVE

フレームワーク構造のリファレンス

コンプライアンスフレームワークは、次の場所にある JSON ファイルです:prowler/compliance/{provider}/{framework}.json

{
  "Framework": "CIS",
  "Name": "CIS Provider Benchmark vX.Y.Z",
  "Version": "X.Y",
  "Provider": "AWS|Azure|GCP|...",
  "Description": "Framework description...",
  "Requirements": [
    {
      "Id": "1.1",
      "Description": "Requirement description",
      "Checks": ["check_name_1", "check_name_2"],
      "Attributes": [
        {
          "Section": "1 Section Name",
          "SubSection": "1.1 Subsection (optional)",
          "Profile": "Level 1|Level 2",
          "AssessmentStatus": "Automated|Manual",
          "Description": "...",
          "RationaleStatement": "...",
          "ImpactStatement": "...",
          "RemediationProcedure": "...",
          "AuditProcedure": "...",
          "AdditionalInformation": "...",
          "References": "...",
          "DefaultValue": "..."
        }
      ]
    }
  ]
}

よくある問題

問題検出方法解決方法
チェックが不足している検証スクリプトで不足が報告されるチェックの実装を追加するか、Checks 配列から削除する
ID が重複している検証スクリプトで重複が報告される各要件に一意の ID が設定されていることを確認する
Automated の Checks が空AssessmentStatus が Automated だが、Checks が空チェックを追加するか、Manual に変更する
ファイルの場所が誤っているフレームワークが prowler/compliance/{provider}/ にない正しいディレクトリに移動する
ダッシュボードファイルがない対応する dashboard/compliance/{framework}.py がないパターンに従ってダッシュボードファイルを作成する
変更履歴フラグメントがないPR の差分にフラグメントファイルがないprowler/changelog.d/ にフラグメントを追加する

ダッシュボードファイルのパターン

ダッシュボードファイルは dashboard/compliance/ に置き、次の正確なパターンに従う必要があります:

import warnings

from dashboard.common_methods import get_section_containers_cis

warnings.filterwarnings("ignore")


def get_table(data):

    aux = data[
        [
            "REQUIREMENTS_ID",
            "REQUIREMENTS_DESCRIPTION",
            "REQUIREMENTS_ATTRIBUTES_SECTION",
            "CHECKID",
            "STATUS",
            "REGION",
            "ACCOUNTID",
            "RESOURCEID",
        ]
    ].copy()

    return get_section_containers_cis(
        aux, "REQUIREMENTS_ID", "REQUIREMENTS_ATTRIBUTES_SECTION"
    )

コンプライアンスフレームワークのテスト

検証に合格したら、Prowler でフレームワークをテストします:

# Verify framework is detected
uv run python prowler-cli.py {provider} --list-compliance | grep {framework}

# Run a quick test with a single check from the framework
uv run python prowler-cli.py {provider} --compliance {framework} --check {check_name}

# Run full compliance scan (dry-run with limited checks)
uv run python prowler-cli.py {provider} --compliance {framework} --checks-limit 5

# Generate compliance report in multiple formats
uv run python prowler-cli.py {provider} --compliance {framework} -M csv json html

リソース

コメント