Cloud Audit について
Cloud Audit は、AWS アカウントのリスクを監査するチーム向けのオープンソースで読み取り専用のセキュリティスキャナーです。110 件のチェックを実行し、検出結果を攻撃チェーンとして関連付け、情報漏えい時のコストを見積もります。各検出結果には AWS CLI と Terraform の修正例が付属します。また、乗っ取られた AI エージェントが AWS 内で到達できる範囲を分析する agent-blast 機能も備えています。
主な機能
- 0125 の AWS サービスにわたる 110 件の読み取り専用チェック
- 0264 種の IAM 権限昇格手法と 31 件の攻撃チェーンルール
- 03すべての検出結果に対する AWS CLI と Terraform の修正例
- 04Bedrock Agents と AgentCore を対象とした agent-blast 分析
- 05IAM ポリシーシミュレーターによる Proof Mode の検証
- 06コンソール、JSON、HTML、SARIF、Markdown 形式の出力
活用シーン
- 01AWS アカウントの IAM 権限昇格経路と公開範囲の監査
- 02プロンプトインジェクションや認証情報の窃取後に AI エージェントが到達できる範囲の評価
- 03CI から SARIF 形式の結果を GitHub Code Scanning にアップロード
MCP 対応
Claude Code や Cursor などの MCP クライアントから利用できる、読み取り専用ツール 7 件を備えた MCP サーバーを提供します。get_agent_blast も含まれます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
6掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| min_severity | string | いいえ | |
| profile | string | いいえ | |
| regions | string | いいえ |
詳細
cloud-audit
乗っ取られた AI エージェントは、AWS アカウント内のどこにアクセスできるのでしょうか?それを証明できますか?
オープンソースの読み取り専用 AWS セキュリティスキャナーです。110 件のチェック、64 種類の IAM 権限昇格手法、31 件の攻撃チェーンルール、あらゆるリソースの影響範囲に対応し、Bedrock Agents と AgentCore 向けの agent-blast も備えています。
プロンプトインジェクションや認証情報の窃取を受けたエージェントがアクセスできる範囲を、IAM ポリシーシミュレーターを証拠として示します。
すべての検出結果にAWS CLI と Terraform による修正方法が付属します。アカウントには何も書き込みません。
30 秒のデモ - agent-blast - 全項目スキャン - 内容 - 証明モード - インストール - ドキュメント
30 秒で試せます。AWS アカウントは不要です
pip install cloud-audit
cloud-audit agent-blast --demo # a hijacked Bedrock Agent, two threat models, one screen
cloud-audit demo --save demo.json # a full sample scan, then explore it offline:
cloud-audit blast-radius --report demo.json --resource arn:aws:iam::123456789012:role/support-bot-ticket-role
cloud-audit simulate --report demo.json --fix aws-iam-018
cloud-audit exposure --report demo.json
サンプルアカウントは架空のものです。そこから導き出されるすべての情報(攻撃チェーン、根本原因、侵害コスト、セキュリティグラフ、エージェントの到達範囲)は、実際のスキャンで使用されるエンジンと同じものが生成しています。
認証情報があれば、実際のスキャンもコマンド 1 つで実行でき、読み取り専用です。AWS 管理の SecurityAudit ポリシーで、すべてのチェックを実行できます(権限):
cloud-audit scan # default profile and region
cloud-audit scan --verify # plus IAM policy-simulator proof for escalation paths
cloud-audit agent-blast --verify # then: what your agents can reach, simulator-confirmed
agent-blast:乗っ取られた AI エージェントがアクセスできる範囲
AWS の AI エージェントは、IAM アイデンティティの集合体です。エージェントが実行されるロール、ツールの背後にある Lambda 関数の実行ロール、ナレッジベース、ゲートウェイ、サンドボックスのロールが含まれます。エージェントが乗っ取られると、攻撃者はそれらのアイデンティティを使って操作します。agent-blast は、2 つの脅威モデルに基づいて、エージェントごとにその影響を明らかにします。
| 脅威モデル | 攻撃者が持つもの | アクセスできる範囲 |
|---|---|---|
| アイデンティティの乗っ取り | エージェントが実行されるロールの認証情報(サンドボックスからの脱出、メタデータサービスの読み取り、セッションの漏えい) | ロール全体:権限昇格の手法、AssumeRole による移動、データ |
| 振る舞いの乗っ取り | プロンプトだけ(ドキュメント、チケット、ウェブページを介した間接的なプロンプトインジェクション) | エージェントのツールが実行できる操作。ツール自体の実行ロールによって制限されます |
サンプルエージェントの実際の出力(cloud-audit agent-blast --demo -a support-bot):
support-bot (bedrock_agent, eu-central-1)
├── A hijacked tool (tool: create-ticket) can escalate to account admin via PassRole+Lambda
├── status: PREPARED
├── Identity takeover (attacker holds the role's credentials)
│ └── support-bot-agent-role arn:aws:iam::123456789012:role/support-bot-agent-role
│ └── no escalation path; 3 reach(es) from policy grants, 1 on named resources (see Reach)
│ (risk 0/100, 1 nodes)
├── Behaviour takeover (prompt injection: the agent's tools, their roles)
│ ├── search-docs action_group_lambda -> support-bot-search-role
│ │ ├── 3 OpenAPI path(s) in apiSchema; state ENABLED
│ │ └── no escalation path; 4 reach(es) from policy grants, 4 on named resources (see Reach)
│ ├── create-ticket action_group_lambda -> support-bot-ticket-role
│ │ ├── 2 function(s) in functionSchema; state ENABLED
│ │ ├── reaches Account Takeover in 1 hop(s) via PassRole+Lambda (risk 72/100)
│ │ └── escalation: PassRole+Lambda
│ └── product-docs knowledge_base -> support-bot-kb-role
│ ├── 1 S3 data source(s)
│ └── no escalation path; 2 reach(es) from policy grants, 2 on named resources (see Reach)
├── Reach (13 action/resource pairs)
│ ├── tool: search-docs secretsmanager:GetSecretValue on
│ │ arn:aws:secretsmanager:eu-central-1:123456789012:secret:prod/db-credentials-Ab12Cd
│ │ unverified read secret values
│ ├── tool: create-ticket sts:AssumeRole on arn:aws:iam::123456789012:role/ops-admin unverified
│ │ assume IAM roles
│ ├── tool: create-ticket lambda:InvokeFunction on * unverified invoke Lambda functions
│ ├── tool: search-docs s3:PutObject on arn:aws:s3:::company-backups-2024/* unverified write S3
│ │ objects
│ ├── support-bot-agent-role s3:GetObject on arn:aws:s3:::kb-product-docs/* unverified read the
│ │ agent's knowledge base
│ ├── tool: search-docs s3:GetObject on arn:aws:s3:::company-backups-2024/* unverified read S3
│ │ objects
│ ...
├── Tags
│ ├── OWASP Agentic: ASI02 Tool Misuse and Exploitation, ASI03 Identity and Privilege Abuse,
│ │ ASI05 Unexpected Code Execution
│ └── MITRE ATLAS: AML.T0034 Cost Harvesting, AML.T0040 AI Model Inference API Access, AML.T0053
│ AI Agent Tool Invocation, AML.T0086 Exfiltration via AI Agent Tool Invocation
└── Simulated, not executed: identity policies, the attached permissions boundary and SCPs are
evaluated by the IAM policy simulator; resource-based policies of the targets, RCPs and VPC
endpoint policies are not. Tool reach is an upper bound set by the tool's role; what the tool
code does with its inputs is narrower.
出力が示す内容:support bot 自体に危険はありませんが、create-ticket を呼び出すように仕向けるドキュメントによって、管理者ロールを新しい Lambda に渡せるロールでコードが実行されます。製品ドキュメントを読むためのsearch-docsツールは、本番データベースのシークレットを読み取り、バックアップバケットに書き込むこともできます。各行にはアイデンティティ、アクション、リソースが示されるため、必要なのは議論ではなくポリシーステートメントの修正です。
同じエンジンで AgentCore にも対応します。サンプルゲートウェイ(--demo -a tools-gw)では、エージェントをまたぐ内容が概要として示されます。
tools-gw (agentcore_gateway, eu-central-1)
├── tool: crm-sync can write into agent 'support-bot' knowledge base (RAG poisoning): arn:aws:s3:::kb-product-docs/*
├── inbound authorizer: NONE; policy engine: none
...
│ ├── tool: crm-sync s3:PutObject on arn:aws:s3:::kb-product-docs/* unverified write into agent
│ │ 'support-bot' knowledge base (RAG poisoning)
...
├── Coverage notes
│ └── tool 'erp-mcp' (gateway_target_mcp_server): backend identity unknown, not assessed - remote
│ MCP server; credential provider: OAUTH
agent-blast が読み取る情報(すべて list/get、料金はかかりません):
- Bedrock Agents:エージェントのリソースロール、
DRAFTバージョンにあるすべてのアクショングループ(Lambda とその実行ロールまで解決)、S3 データソースバケットまで解決したナレッジベース。 - AgentCore:ランタイムロールとネットワークモード、オーソライザーを備えたゲートウェイロール、ポリシーエンジン、すべてのターゲット(Lambda、リモート MCP サーバー、API Gateway、OpenAPI、Smithy)とその認証情報プロバイダー、コードインタープリターとブラウザーの実行ロール。
- これらのアイデンティティに該当する IAM ポリシー(インライン、アタッチ済み、グループ)。アクション、リソース、効果、
Conditionの有無を含め、生の状態を保持します。条件にはフラグを付けますが、推測はしません。判定はシミュレーターが行います。
その後、アイデンティティごとに、64 種類の権限昇格手法、信頼グラフを介した AssumeRole による移動、具体的なリソースに照合されたすべてのデータ、シークレット、ラテラル、コード実行、モデル呼び出しの許可を調べます。ナレッジベースのバケットは、s3:* が * に対して設定されている場合でも、常に具体的なターゲットとして扱われます。また、そのバケットへの書き込みアクセスは RAG ポイズニングとして報告されます。スキャナーが読み取れなかったもの(アクセス拒否されたリージョン、IAM アイデンティティのないツールなど)は、黙って問題なしとせず、カバレッジに関する注記として示されます。
--verify は、攻撃者が実際に持つコンテキスト(セッションに MFA がない、TLS で通信している)を使って、具体的なすべてのペアについて iam:SimulatePrincipalPolicy を実行し、各アクセス可能性に PROVEN、DENIED(拒否したポリシーレイヤー:SCP、権限境界を含む)、または not asserted のマークを付けます。出力形式:tree、json、markdown。MCP サーバーは、同じレポートを get_agent_blast として公開します。
全体スキャン
cloud-audit scan は、25 の AWS サービスにわたって読み取り専用のチェックを 110 件実行し、検出結果を攻撃チェーンとして関連付け、チェーンをどれだけ断ち切れるかに基づいて修正を優先順位付けし、リスクの金額を算出します。これはサンプルアカウント(cloud-audit demo)を、実際のスキャンと同じコードで出力し、長さを調整したものです。
┌─────── Health Score ───────┐
│ 15 / 100 │
└────────────────────────────┘
Provider AWS
Account 123456789012
Regions eu-central-1
Resources scanned 80
Checks passed 14
Checks failed 6
Attack chains 3
Risk exposure $572K - $12.5M (IBM/Verizon data)
┌───────────────────────── Attack Chains (3 detected) ─────────────────────────┐
│ CRITICAL PassRole Escalation to Admin (support-bot-ticket-role) │
│ Principal 'support-bot-ticket-role' has iam:PassRole and │
│ can create resources with privileged roles via: │
│ PassRole+Lambda. The attacker passes an admin role to a │
│ service, then uses that service to execute code with admin │
│ privileges. │
│ Fix: Scope iam:PassRole for 'support-bot-ticket-role' to │
│ specific role ARNs │
│ Risk: $250K - $5.0M │
│ │
│ CRITICAL Internet-Exposed Admin Instance │
│ i-0abc123def456789, sg-0a1b2c3d4e5f67890 │
│ Instance i-0abc123def456789 is reachable from the internet │
│ via open security group and has admin IAM role │
│ 'prod-admin-role'. An attacker can reach the instance, │
│ access IMDS credentials, and gain full admin access to the │
│ AWS account. │
│ Fix: Restrict security group sg-0a1b2c3d4e5f67890 to │
│ specific IPs (effort: LOW). │
│ Risk: $62K - $625K │
│ │
│ CRITICAL CI/CD to Admin Takeover │
│ Role 'github-deploy-role' trusts an OIDC provider without │
│ restricting the 'sub' claim AND has admin permissions. Any │
│ repository on the CI/CD platform can assume this role and │
│ gain full AWS admin access. │
│ Fix: Add 'sub' condition to the trust policy (effort: │
│ LOW). │
│ Risk: $125K - $1.2M │
└──────────────────────────────────────────────────────────────────────────────┘
┌────────────── Remediation Plan (fix 3 things, break 3 chains) ───────────────┐
│ # Fix Effort Chains Findings Risk Red │
│ 1 Restrict security groups LOW 1 1 $62.5K - │
│ 2 Add OIDC 'sub' condition to LOW 1 1 $125K - │
│ trust policies │
│ 3 Remove IAM privilege MEDIUM 1 1 $250K - │
│ escalation paths │
└──────────────────────────────────────────────────────────────────────────────┘
┌─────────────────── Quick Wins (break CRITICAL chains now) ───────────────────┐
│ 1. aws ec2 revoke-security-group-ingress --group-id sg-0a1b2c3d4e5f67890 │
│ --protocol tcp --port 22 --cidr 0.0.0.0/0 │
│ Breaks: AC-01 (Internet-Exposed Admin Instance) │
│ │
│ 2. aws iam update-assume-role-policy --role-name github-deploy-role │
│ --policy-document file://trust-with-sub.json │
│ Breaks: AC-07 (CI/CD to Admin Takeover) │
└──────────────────────────────────────────────────────────────────────────────┘
何かに手を加える前に修正をプレビューできます。simulate は、チェックによって修正される検出結果を取り除き、スコア、チェーン、リスクの金額をオフラインで再計算します。
$ cloud-audit simulate --report demo.json --fix aws-iam-018
Simulation: Apply Remove IAM privilege escalation paths
┌────────────────────────────── Impact Analysis ───────────────────────────────┐
│ Metric Before After Delta │
│ Health Score 15/100 35/100 +20 │
│ Attack Chains 3 2 -1 │
│ Findings 6 5 -1 │
│ Risk Exposure $572K - $12.5M $187.5K - $1.9M -85% │
└──────────────────────────────────────────────────────────────────────────────┘
Chains broken (1):
CRITICAL PassRole Escalation to Admin (support-bot-ticket-role) -> GONE
Chains remaining (2):
CRITICAL Internet-Exposed Admin Instance
CRITICAL CI/CD to Admin Takeover
Next recommended fix: Restrict security groups -> breaks 1 more chain(s)
任意のリソースからたどって、侵害された場合に何に影響が及ぶかを確認できます。
$ cloud-audit blast-radius --report demo.json --resource arn:aws:iam::123456789012:role/support-bot-ticket-role
┌────────────────────────────────────── Blast Radius ──────────────────────────────────────┐
│ Compromise of role/support-bot-ticket-role leads to Account Takeover via 2 hop(s). │
│ Resource: arn:aws:iam::123456789012:role/support-bot-ticket-role │
│ Reachable: 3 | Paths to impact: 1 | Risk score: 72/100 │
└──────────────────────────────────────────────────────────────────────────────────────────┘
role/support-bot-ticket-role - IAM Role (assumed compromised)
├── Account Takeover - Full AWS admin (via grants admin, type=exploit) <high-value>
└── arn:aws:s3:::company-backups-2024 - S3 bucket (reachable via admin) (via s3:GetObject +
ListBucket, type=data) <high-value>
Available fixes (from scan findings):
- aws-iam-018 Role 'support-bot-ticket-role' can escalate via PassRole+Lambda (breaks chain, effort=MEDIUM)
- aws-s3-001 Bucket 'company-backups-2024' has Block Public Access disabled (breaks chain, effort=LOW)
--format json の出力は、オープンソースのブラウザー可視化ツール blast-audit.haitmg.pl にそのまま取り込めます。--format mermaid は、Wiki ページ用の図を出力します。exposure は、インターネットからの到達可能性と権限昇格に基づいて、セキュリティグラフのすべてのノードをランク付けします。
$ cloud-audit exposure --report demo.json -n 6
Score Type Label Why
60 iam_role prod-admin-role internet-reachable
41 internet Internet internet-reachable
41 ec2 i-0abc123def456789 internet-reachable
41 security_group sg-0a1b2c3d4e5f67890 internet-reachable
20 iam_role support-bot-ticket-role escalation
20 iam_role support-bot-search-role linked to others
可視化ツールは、blast-radius --format json のエクスポートデータを使って、すべてブラウザー内で動作します。
| 機能 | 規模 | コマンド |
|---|---|---|
| AWS CLI と Terraform による修正をそれぞれ備えた設定チェック | 110 件のチェック、25 のサービス:IAM、S3、EC2、VPC、RDS、KMS、CloudTrail、CloudWatch、GuardDuty、Config、Lambda、ECS、EFS、SSM、Secrets Manager、DynamoDB、Backup、Inspector、Security Hub、WAF、Bedrock、SageMaker、Bedrock AgentCore、Data Perimeter、アカウント | scan、list-checks |
| IAM 権限昇格 | 9 カテゴリーにわたる 64 の手法:IAM の自己変更、認証情報へのアクセス、サービスへの PassRole、Lambda コードの変更、信頼ポリシーの悪用、権限境界のバイパス、リソースポリシーの悪用、コンピューティングリソースの乗っ取り、横方向の AssumeRole(信頼グラフ上の BFS) | scan(aws-iam-018) |
| 攻撃チェーン | 31 のルールで検出結果と実際の関係(EC2 からロール、Lambda からロール、OIDC からポリシー)を関連付け、MITRE ATT&CK の参照情報と優先度の高い修正を含む経路を特定します | scan |
| 根本原因とすぐにできる改善 | 検出結果を、それらを解消する修正ごとにグループ化し、断ち切れるチェーンの数で順位付けします | scan |
| What-If | オフラインで、任意のチェックセットに対するスコア、チェーン、露出度の変更前後を確認できます | simulate --fix |
| 影響範囲 | EC2 インスタンス、IAM ロールまたはユーザー、Lambda、S3 バケット、シークレットから前方向に BFS を実行します。ビジュアライザー用の JSON コントラクトを提供します | blast-radius |
| 露出度の順位付け | セキュリティグラフのすべてのノードを、インターネット到達可能性と権限昇格の観点でスコアリングします | exposure |
| AI エージェント | Bedrock Agents と AgentCore のランタイム、ゲートウェイ、コードインタープリター、ブラウザーを、それぞれの IAM ID とツールとともに一覧表示します。2 つの脅威モデルによる到達可能性、OWASP Agentic と MITRE ATLAS のタグ、シミュレーターによる証明を含みます | agent-blast |
| Proof Mode | 権限昇格経路では iam:SimulatePrincipalPolicy を広範に実行し、具体的な(プリンシパル、アクション、リソース)の組み合わせでは実行します(agent-blast) | scan --verify、agent-blast --verify |
| 脅威フィード | 実際に発生している悪用を検出する 10 個の検出器。それぞれ、記録された 2025~2026 年のインシデントパターンに紐付けられ、バージョン管理されたルールパックとして提供されます | threat-feed |
| データ境界 | リソースポリシーに対する 5 つのチェック。条件値を評価し、混乱した代理人と組織間の露出を検出します | scan(aws-dp-*) |
| AgentCore の設定 | 6 つのチェック:コードインタープリターとランタイムのネットワークモード、MMDSv2、メモリの KMS、ゲートウェイ認証者、ゲートウェイポリシーエンジン | scan(aws-agc-*) |
| 侵害コスト | 検出結果とチェーンごとの米ドルでの範囲を示し、各数値の公開ソースを提示します | scan |
| コンプライアンス | 6 つのフレームワークに対応し、管理策ごとの証拠を提示します:CIS AWS v3.0、SOC 2 Type II、ISO 27001:2022、HIPAA、NIS2、BSI C5:2020 | scan --compliance、list-frameworks |
| ドリフトと傾向 | 終了コード付きで 2 つのスキャンを比較し、スパークライン付きでセキュリティ状態の履歴を表示します | diff、trend |
| カバレッジのギャップ | スキャナーが読み取りを拒否された項目は合格ではなく、「未評価」として報告されます | すべてのコマンド |
| 出力 | コンソール、JSON、HTML レポート、SARIF(GitHub Code Scanning)、Markdown | scan --format |
| MCP サーバー | Claude Code、Cursor、およびあらゆる MCP クライアント向けの 7 つの読み取り専用ツール。get_agent_blast を含みます | cloud-audit-mcp |
cloud-audit threat-feed --list が出力する 10 個の脅威フィード検出器(ルールパック 2026-Q2):
| パターン | 重大度 | 検出対象 |
|---|---|---|
| TF-001 | MEDIUM | 最近検証された SES ID(フィッシング準備の前兆) |
| TF-002 | HIGH | パブリックな Lambda Function URL(AuthType=NONE) |
| TF-003 | CRITICAL | AWS にアタッチされた認証情報隔離ポリシー |
| TF-004 | CRITICAL | CloudTrail で観測された、漏洩した認証情報をスキャンするユーザーエージェント |
| TF-005 | HIGH | クリプトマイニング型のコンピューティングアクセス権を持つ、最近作成された IAM ロール |
| TF-006 | HIGH | IMDSv1 / MMDSv1 を使用する EC2 または AgentCore(SSRF による認証情報窃取の攻撃経路) |
| TF-007 | MEDIUM | whoAMI 混同攻撃のリスクがある CI/CD ロール |
| TF-008 | HIGH | CloudTrail 改ざんの前兆(ロギングの停止または配信の失敗) |
| TF-009 | HIGH | 外部 CA を持つ IAM Roles Anywhere の信頼アンカー |
| TF-010 | HIGH | 管理者以外のプリンシパルにアタッチされた AmazonDataZoneFullAccess |
Proof Mode:推測ではなくシミュレーション
IAM ポリシーの静的解析では、過剰に検出されることがあります。Proof Mode は、AWS 独自の認可エンジンである
iam:SimulatePrincipalPolicy に照会します。これは読み取り専用で、呼び出しごとの料金はかかりません。
scan --verifyは、検出されたすべての権限昇格経路をチェックします。verified: trueは、シミュレーターが必要なすべてのアクションを許可したことを意味します。falseは、いずれかを拒否したことを意味します(その経路は誤検知である可能性が非常に高いです)。nullは判定されていないことを意味し、その理由はverification_detailに記載されます。agent-blast --verifyは、具体的な(プリンシパル、アクション、リソース)の到達可能性をすべてチェックし、認証情報を盗まれた、または引き継いだ攻撃者が持つコンテキストを与え、拒否したレイヤーを示します。
2026-07-30 時点でシミュレーターが評価するもの:アイデンティティポリシー、アタッチされた権限境界、条件キーを含む組織の SCP、そして指定したコンテキストキー。評価しないもの:リソースコントロールポリシー、VPC エンドポイントポリシー、ロールチェーン、IAM ロールのリソースベースポリシーです。cloud-audit は、検証済みの各行でその旨を示します。true は権限が存在することを証明しますが、エンドツーエンドの攻撃を証明するものではありません。実行される処理はありません。
レポート
cloud-audit scan --format html -o report.html # client-ready
cloud-audit scan --format sarif -o results.sarif # GitHub Code Scanning
cloud-audit scan --format json -o report.json # machine-readable, feeds every offline command
cloud-audit scan --format markdown -o report.md # PR comments
cloud-audit scan --compliance cis_aws_v3 --format html -o cis.html
cloud-audit agent-blast --format markdown -o agents.md
CI/CD
- run: pip install cloud-audit
- run: cloud-audit scan --format sarif --output results.sarif
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
--quiet は終了コードのみを返します:0 は問題なし、1 は検出あり、2 はエラーです。重大度でゲートするには --min-severity high を指定します。cloud-audit diff old.json new.json --quiet は新たな検出があると 1 で終了するため、毎日のスキャンで ClickOps による設定のずれを検出できます。このリポジトリは複合 GitHub Action(gebalamariusz/cloud-audit@v0)でもあります。すぐに使えるワークフロー:基本スキャン、毎日の差分、デプロイ後。
インストール
pip install cloud-audit # pip (recommended)
pipx install cloud-audit # isolated
uvx --from cloud-audit cloud-audit scan # no install
docker run ghcr.io/gebalamariusz/cloud-audit scan # Docker (also on Docker Hub: haitmg/cloud-audit)
認証情報を使った Docker:
docker run -v ~/.aws:/home/cloudaudit/.aws:ro ghcr.io/gebalamariusz/cloud-audit scan
Python 3.10~3.13。依存関係:boto3、typer、rich、pydantic、jinja2、pyyaml、mcp。
AWS の権限
読み取り専用です。AWS 管理ポリシーの SecurityAudit をアタッチしてください。すべてのチェック、IAM 権限昇格の分析、エージェントのインベントリ、Proof Mode に対応します:
aws iam attach-role-policy --role-name auditor \
--policy-arn arn:aws:iam::aws:policy/SecurityAudit
cloud-audit がインフラストラクチャを変更することはありません。simulate、blast-radius、exposure、diff、
trend、agent-blast は保存済みのスキャンをローカルで処理し、AWS への呼び出しは行いません。--verify を指定すると、シミュレーターへの呼び出しのみが追加されます。サービスが存在しないリージョンはスキップされ、スキャナーが読み取りを拒否されたリージョンはカバレッジの不足箇所として一覧表示されます。
MCP サーバー
AI アシスタント向けの読み取り専用ツールを 7 つ提供します:scan_aws、get_findings、get_attack_chains、
get_remediation、get_health_score、list_checks、get_agent_blast。
claude mcp add cloud-audit -- uvx --from cloud-audit cloud-audit-mcp
次に、次のように尋ねてください:「AWS アカウントをスキャンして、Bedrock エージェントが乗っ取られた場合に何にアクセスできるか教えてください」。
一般的なフラグと設定
cloud-audit scan -R # show remediation inline
cloud-audit scan --profile prod --regions eu-central-1 # profile / region
cloud-audit scan --regions all # all enabled regions
cloud-audit scan --role-arn arn:aws:iam::...:role/audit # cross-account
cloud-audit scan --export-fixes fixes.sh # every CLI fix as a script
cloud-audit scan --categories security,cost # skip reliability/performance checks
cloud-audit agent-blast -a support-bot --profile prod --verify
デフォルト設定は .cloud-audit.yml(リージョン、min_severity、exclude_checks、期限付きの
suppressions)に記述します。環境変数(CLOUD_AUDIT_REGIONS、CLOUD_AUDIT_MIN_SEVERITY など)がファイルの設定を上書きし、CLI フラグがすべてを上書きします。設定ガイドを参照してください。
ドキュメント
詳細なドキュメントは haitmg.pl/cloud-audit にあります: はじめに、 agent-blast、 攻撃チェーン、 IAM 権限昇格、 影響範囲、 Proof Mode、 脅威フィード、 データ境界、 AgentCore、 コンプライアンス、および チェック項目の完全なリファレンス。
商用サポート
cloud-audit は無料で、今後も無料です。検出結果について専門家の対応をご希望の場合、作者が プロフェッショナルサービスを提供しています。
- スキャナー出力のレビュー(無料):cloud-audit、Prowler、または Security Hub の出力をお送りいただくと、本当に重要な点と、最初に修正すべき点を簡潔にまとめたレビューをお届けします
- AWS セキュリティ監査:優先順位付きのレポートと、すぐに適用できる修正を含むアカウント全体の監査
- AI エージェントのアクセスレビュー:Bedrock および AgentCore のエージェントがアクセスできる範囲を確認し、範囲を制限するためのポリシー変更をご提案します
- 修正サポート:ワークロードに対して検証済みの Terraform および IAM の変更
- AWS 上の Palo Alto VM-Series:アーキテクチャおよびセキュリティのレビュー(GWLB/TGW、HA、ルーティング)
詳細:haitmg.pl/cloud-audit-support または [email protected] までメールでお問い合わせください。
開発
git clone https://github.com/gebalamariusz/cloud-audit.git
cd cloud-audit
pip install -e ".[dev]"
pytest -q && ruff check src/ tests/ && mypy src/
チェックを追加する方法については、CONTRIBUTING.md をご覧ください。リリース情報は CHANGELOG.md に記載されています。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。