
AWS、Azure、GCPを1つのCLIからマッピング、グラフ化、監査します。トポロジーグラフを構築し、Prowler/Checkov/Trivyを実行し、検出結果を28のコンプライアンスフレームワークにタグ付けし、HTMLレポート、RDFオントロジー、RAGチャンク、Terraform再作成ファイルをエクスポートします。
cloudg(cloud graphing)は AWS、Azure、GCP のインフラストラクチャをグラフにマッピングし、
同じインベントリに対してセキュリティスキャナーを実行し、その結果を実際に使えるレポートに変換します。
1 つのコマンドで、設定済みのすべてのプロバイダーからアセットを並列に収集し、NetworkX グラフに通して到達可能性と攻撃パスの分析を行い、Prowler、ScoutSuite、Checkov、Trivy にファンアウトし、その後すべての検出結果を 28 のコンプライアンスフレームワークに対してマージおよび重複排除します。出力として、インタラクティブな HTML レポート、GraphML、RDF オントロジー、LLM パイプライン向けの RAG チャンク、そしてライブインフラストラクチャを再現する Terraform ファイルが得られます。
セキュリティツールなしでマップだけが必要ですか? cloudg map はスキャナーに依存しないインベントリマッパーです。アカウント内にデプロイされている(またはデフォルトの)すべてのものをネットワークファブリックに至るまで深く収集し、残りについてはすべてのサービスをスイープし、それらすべてを 1 つのアセットマップにリンクします。後からスキャナーの検出結果を重ね合わせることができます。詳しくはインベントリマッピングを参照してください。
AI エージェントにすべてを扱わせたいですか? cloudg mcp serve は cloudg を Claude Desktop、Claude Code、Cursor、その他 Model Context Protocol を話すあらゆるもの向けの MCP サーバーに変えます。詳しくはMCP サーバーを参照してください。
完全なドキュメント: レンダリングされたハンドブックは morpheuslord.github.io/cloudg にあり、同じ内容が markdown として機能リファレンスに、リリースノートは変更履歴にあります。インベントリマッパーには専用の詳細ドキュメントがあります:インベントリリファレンス(すべての戻り値構造と出力ファイルをフィールドごとに解説)、インベントリカタログ(156 種類すべてのアセットタイプ、そのメタデータと関係)、インベントリ内部構造(仕組みと拡張方法)。MCP サーバーについては MCP ガイド、ツールリファレンス、プライバシーリファレンスで説明されており、スロットリングについてはレート制限とスロットリングで説明されています。
サンプルレポート: 何かを実行する前に cloudg が生成するものを確認するには、サンプルレポートを開いてください。これは合成された AWS、Azure、GCP 環境の report.html であるため、含まれるすべての ID は架空のものであり、scripts/build_sample_report.py がテストフィクスチャから再構築します。
git clone https://github.com/morpheuslord/cloudg.git
cd cloudg
uv venv && source .venv/bin/activate
uv pip install -e ".[all,dev]"
# one provider, one region
cloudg run -p aws --regions us-east-1
# everything, everywhere
cloudg run -p all --regions all
# with Terraform recreation files
cloudg run -p aws --regions us-east-1 --terraform
レポートは ./reports に出力されます。まず report.html を開いてください。
スキャナーを自分で実行済みですか?その場合は、cloudg に各スキャナーのネイティブ出力ファイルを渡してください。クラウド認証情報もスキャナーバイナリも不要です:
cloudg ingest --prowler ./prowler-output/ --checkov ./results_json.json --trivy ./trivy.json
Prowler、ScoutSuite、Checkov、Trivy の出力はどのような組み合わせでも動作します。cloudg は正規化を行い、チェック等価ルールセットによってスキャナ間の重複を排除し、コンプライアンスフレームワークをマッピングして、レポートをレンダリングします。
CI では、cloudg gate が指定した重大度以上の検出結果がある場合にジョブを失敗させ、コードスキャン用の SARIF を書き出します。GitHub では、このリポジトリがアクションとしても機能し、cloudg と各スキャナをインストールしてパイプラインを実行し、ゲートを適用します:
permissions:
contents: read
id-token: write # OIDC login to the cloud
security-events: write # SARIF upload
steps:
- uses: aws-actions/configure-aws-credentials@v6
with:
role-to-assume: arn:aws:iam::123456789012:role/cloudg-github
aws-region: us-east-1
- uses: morpheuslord/[email protected]
with:
provider: aws
fail-on: critical
min-assets: "1"
CI と自動化ガイドには、すべての入力、Azure と GCP のログイン、GitLab CI、およびプレーンなシェル版が揃っています。
プレーンな pip でも動作します: pip install -e ".[all]"。クラウド SDK は extras なので、pip install cloudg[aws] は boto3/aioboto3 のみを取得し、[azure] と [gcp] もそれぞれの SDK に対して同様に動作し、[all] はすべてをインストールします。extras なしのコアパッケージでも、グラフエンジン、オントロジー、ノーマライザー、レポートレンダラーを利用できます。
外部スキャナー (Prowler、Checkov、Trivy、ScoutSuite) は Python の依存関係ではなく、別個の実行ファイルです。install.sh (Linux/macOS) と install.bat (Windows) は、スキャナーとクラウド CLI を含むすべてをセットアップします。
Docker は手軽な方法です: イメージには Prowler、Checkov、Trivy がバンドルされています (ScoutSuite は含まれていないため、別途実行してそのレポートを cloudg ingest に渡してください):
docker build -t cloudg:latest .
docker compose run --rm cloudg run -p aws --regions us-east-1
cloudg map は cloudg run とは異なる問いに答えます。何が存在し、それがどのように結びついているかです。何が問題かを突き止めるのはスキャナーの仕事であり、ここではどれも実行されず、インストールすら不要です。マップを完全なものにする要素は次のとおりです。
--org は管理アカウントから AWS Organization(OU ツリー、アカウント、SCP、および管理対象リージョンと有効化されたコントロールを備えた Control Tower ランディングゾーン)を検出し、すべてのメンバーアカウントをマッピングします。INVOKES、タスク定義が ECR リポジトリを USES_IMAGE、関数がロールを ASSUMES_ROLE、WAF が ALB を PROTECTS、Inspector がインスタンスを MONITORS、スタックがリソースを MANAGES、SCP が OU を GOVERNS、さらにマッピングしていないアカウントへのクロスアカウント信頼も含みます。そして cloudg deps が「これには何が必要か」「これが失われると何が壊れるか」に答えます。# map one provider
cloudg map -p aws --regions all
# every account in the AWS Organization / Control Tower landing zone
cloudg map -p aws --org --regions all
# map everything, everywhere
cloudg map -p all --regions all
# what depends on this role, and what does it depend on?
cloudg deps arn:aws:iam::123456789012:role/app-role
# overlay scanner findings you generated earlier -> asset map + compliance map
cloudg map -p aws --regions all --findings ./reports/raw-findings.json
出力: inventory-map.json(アセット、相互接続、収集カバレッジ、サマリー)、inventory-map.graphml、ビューア用の inventory-graph.json、inventory-dependencies.json(共有依存関係、ブラストラディウス、クロスアカウントエッジ、セキュリティカバレッジのギャップ)、そして --org を指定すると inventory-organization.json。--findings を指定すると、さらに asset-map.json(各アセットとその検出事項および重大度の内訳)と compliance-map.json(フレームワーク → 影響を受けるアセット)が出力されます。このマップはスキャナーに依存しないため、今日マップを作成し、来週実行するスキャンから検出事項をマージできます。すべてのファイルは、注釈付きの例とともにフィールドごとに inventory reference で仕様が説明されています。
これらはすべてライブラリ API としても利用できます。ライブラリとして使用する を参照してください:
from cloudg import CloudGConfig, CloudGEngine
engine = CloudGEngine(CloudGConfig(providers=["aws", "azure", "gcp"]))
inventory = engine.map_inventory_sync(output_dir="./reports")
print(inventory.summary["assets_by_service"])