Docker Compose Audit について
Docker Compose Auditは、docker-compose.ymlを静的にセキュリティチェックするMCPサーバーです。Compose設定を確認する開発者やエージェント向けに、重大度、修正案、YAMLの修正例を返します。
主な機能
- 01Compose YAMLまたはHTTPS URLを監査
- 02権限とネットワークのリスクを確認
- 03シークレット・ボリューム・リソース制限を確認
- 04イメージと実行ライフサイクルを確認
- 05重大度フィルターとカテゴリ別チェック
- 06修正案とYAML例付きの検出結果
活用シーン
- 01デプロイ前のComposeファイル確認
- 02公開ポートや危険なマウントの特定
- 03ハードコードされた秘密情報や制限不足の検出
MCP 対応
MCPクライアントに、Compose YAMLまたは公開HTTPS URLを対象とする全体監査とカテゴリ別チェックのツールを公開します。検出結果には重大度、修正案、YAMLの修正例が含まれます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://unbearable-dev--docker-compose-audit.apify.actor/mcpclaude mcp add --transport http unbearabledev-docker-compose-audit https://unbearable-dev--docker-compose-audit.apify.actor/mcp{"mcpServers":{"unbearabledev-docker-compose-audit":{"type":"http","url":"https://unbearable-dev--docker-compose-audit.apify.actor/mcp"}}}Cursor で開く{"servers":{"unbearabledev-docker-compose-audit":{"type":"http","url":"https://unbearable-dev--docker-compose-audit.apify.actor/mcp"}}}VS Code で開く{"mcpServers":{"unbearabledev-docker-compose-audit":{"type":"http","url":"https://unbearable-dev--docker-compose-audit.apify.actor/mcp"}}}{"mcpServers":{"unbearabledev-docker-compose-audit":{"serverUrl":"https://unbearable-dev--docker-compose-audit.apify.actor/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://unbearable-dev--docker-compose-audit.apify.actor/mcp認証が必要ツール
詳細
Docker Compose セキュリティ監査
docker-compose.ymlファイルのセキュリティ設定ミスを監査する MCP サーバーです。Trivy クラスのチェック項目を備え、AI エージェント向けに設計されています。各検出結果には、重大度、詳細な修正手順、貼り付けて使える YAML の修正スニペットが付属します。
Unbearable Labs が開発しました。イベントごとの従量課金制で、監査の実行時にのみ料金が発生します。
利用可能な場所
- Apify Actor Store — メイン、従量課金制(PPE)
- MCPize — 申請中
- MCP.so — 申請中
- PulseMCP — 申請中
- Smithery — 申請中
- Glama — 申請中
ニュースレター: Unbearable TechTips Weekly · すべての Actor: github.com/UnbearableDev
概要
MCP 対応クライアント(Claude Desktop、Cursor、n8n、Make、Zapier、カスタムエージェント)からこのサーバーに接続し、docker-compose.yml の内容を渡すと、次の情報を含む構造化レポートが返されます。
- 重大度 — 高/中/低/情報
- サービス — 検出結果が影響する Compose サービス
- 説明 — 問題の内容とその重要性
- 修正方法 — 対処方法
- 修正スニペット — ファイルに直接貼り付けられる YAML
ツール
| ツール | 用途 |
|---|---|
audit_compose(compose_yaml? | compose_url?, min_severity='low') | すべてのチェックを実行し、完全なレポートを返します |
check_privilege(...) | コンテナーの権限とケイパビリティの問題のみをチェックします |
check_network(...) | ネットワークの公開に関する問題のみをチェックします |
check_filesystem(...) | ボリュームマウントとファイルシステムの問題のみをチェックします |
check_secrets(...) | シークレットの取り扱いに関する問題のみをチェックします |
check_resources(...) | リソース制限の問題のみをチェックします |
check_image_hygiene(...) | イメージタグ/レジストリ/固定に関する問題のみをチェックします |
check_runtime_lifecycle(...) | ヘルスチェック/再起動/初期化に関する問題のみをチェックします |
check_logging(...) | ログドライバー/ローテーションに関する問題のみをチェックします |
check_compose_hygiene(...) | 非推奨フィールド/Compose 仕様への準拠のみをチェックします |
list_checks(category?) | チェック項目の全カタログを参照します |
すべての監査実行ツールで、同じ入力を使用します。
compose_yaml(文字列)— YAML の内容を直接貼り付けます。またはcompose_url(文字列)— 取得可能な公開 HTTPS URL(例:GitHub の raw URL)
いずれか一方を指定してください。min_severity のデフォルトは low(info の検出結果を除外)です。さらに絞り込むには、medium または high を指定します。
応答例(一部省略)
{
"summary": {
"total_findings": 14,
"by_severity": {"high": 3, "medium": 6, "low": 5, "info": 0},
"by_category": {"privilege": 4, "network": 3, "secrets": 2, "...": 5}
},
"findings": [
{
"id": "DCS-002",
"category": "privilege",
"severity": "high",
"service": "web",
"title": "Privileged mode enabled",
"description": "Service 'web' has `privileged: true`...",
"remediation": "Remove `privileged: true`. If you need specific capabilities...",
"fix_yaml_snippet": " # remove `privileged: true`; if needed, use cap_add or devices selectively",
"references": ["CIS-Docker-5.4", "NIST-800-190"]
},
...
]
}
料金
| イベント | USD |
|---|---|
| 任意の監査/check_* ツールの呼び出し | $0.02 |
list_checks による検出呼び出し | $0.005 |
ツールを呼び出した場合にのみ料金が発生します。サブスクリプションや月額最低料金はありません。
チェックカタログ(v1 では 25 項目が利用可能、54 項目に向けて拡充中)
| カテゴリ | 利用可能なチェック項目 |
|---|---|
| 権限 | root ユーザー(DCS-001)、特権モード(DCS-002)、危険なケイパビリティ(DCS-003)、cap_add: ALL(DCS-004)、cap_drop: ALL の指定なし(DCS-005)、no-new-privileges の指定なし(DCS-006) |
| ネットワーク | network_mode: host(DCS-010)、0.0.0.0 にバインドされたポート(DCS-011)、SSH ポートの公開(DCS-013)、DB ポートの公開(DCS-014) |
| ファイルシステム | /var/run/docker.sock のマウント(DCS-018)、ホストルートのマウント(DCS-019)、ホスト上の機密パス(DCS-020) |
| シークレット | env 内のハードコードされたシークレット(DCS-026)、Docker secrets を使わないシークレットパターンの env(DCS-027) |
| リソース | メモリー制限なし(DCS-032)、CPU 制限なし(DCS-033)、PID 制限なし(DCS-034) |
| イメージの衛生状態 | 固定されていないイメージ/:latest イメージ(DCS-037) |
| ランタイムのライフサイクル | ヘルスチェックなし(DCS-043)、再起動ポリシーなし(DCS-044) |
| ロギング | ログドライバーなし(DCS-048)、ログローテーションなし(DCS-049) |
| Compose の衛生状態 | 非推奨の version: フィールド(DCS-051)、ヘルスチェック条件のない depends_on(DCS-052) |
list_checks を使うと、ID、重大度、タイトルを含む、最新の正式なカタログを取得できます。
Claude Desktop からの接続
MCP の設定に追加します。
{
"mcpServers": {
"compose-audit": {
"transport": "streamable-http",
"url": "https://YOUR-ACTOR-URL.apify.actor/mcp"
}
}
}
(Actor の起動後に Apify Store のページに表示される Standby URL で YOUR-ACTOR-URL を置き換えてください。)
制限事項
- **YAML サイズ:**監査呼び出しあたり最大 1 MB
- **URL の取得:**タイムアウト 5 秒、リダイレクトは最大 3 回、HTTPS のみ
- **セッションタイムアウト:**5 分間操作がない場合
(現時点で)対象外の項目
compose ファイルのみを対象とした静的解析です。このバージョンでは以下は対象外です。
- イメージの脆弱性スキャン(その場合は Trivy / Grype を使用してください)
- 実行中のコンテナの検査
- Kubernetes / Helm マニフェスト(対象領域が異なります)
- Dockerfile 固有のリント(Hadolint を使用してください)
v1.x → v2 のロードマップには、ビルドコンテキストのセキュリティ、追加の機能チェック、ビルド引数内のシークレットパターン検出、レジストリの信頼性検証など、今後 29 件のチェックが含まれています。
ソース / お問い合わせ
問題、アイデア、誤検知の報告は、GitHub リポジトリで issue を作成するか、[email protected] までメールでお知らせください。
週刊ニュースレターを購読する (https://unbearabletechtips.beehiiv.com)。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。