prowler-compliance-review について
prowler-compliance-reviewは、Prowlerのコントリビューター向けにコンプライアンスフレームワークの変更を確認するスキルです。JSONやフレームワークの検証に加え、ダッシュボードファイル、変更ログ、テストも確認します。
主な機能
- 01JSON構文の検証
- 02チェック漏れと重複IDの検出
- 03メタデータとダッシュボードの確認
- 04変更ログの確認
- 05フレームワークのテストコマンド
活用シーン
- 01プルリクエストのフレームワーク変更レビュー
- 02マージ前のフレームワークJSON検証
- 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
リソース
- 検証スクリプト:assets/validate_compliance.py を参照
- 関連スキル:フレームワークの作成については prowler-compliance を参照
- ドキュメント:references/review-checklist.md を参照
コメント
Markdown 対応