Dockerfile Audit について
Dockerfile Auditは、Dockerfileのセキュリティと品質を静的に検査するMCPサーバーです。開発者やエージェントに、重大度と行番号を示した検出結果、修正案、Dockerfileの修正例を返します。
主な機能
- 01Dockerfile本文またはHTTPS URLを監査
- 02ベースイメージと命令をチェック
- 03セキュリティと秘密情報の扱いを検査
- 04ビルド効率の設定を確認
- 05重大度による検出結果の絞り込み
- 06行番号・修正案・コード例を提示
活用シーン
- 01イメージのビルド前にDockerfileを確認
- 02root実行やハードコードされた秘密情報を発見
- 03古いイメージタグや命令の問題を特定
MCP 対応
MCPクライアントに全体監査とカテゴリ別チェックのツールを公開し、Dockerfile本文またはHTTPS URLを受け付けます。結果には重大度、行番号、修正案、Dockerfileの修正例が含まれます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://unbearable-dev--dockerfile-audit.apify.actor/mcpclaude mcp add --transport http unbearabledev-dockerfile-audit https://unbearable-dev--dockerfile-audit.apify.actor/mcp{"mcpServers":{"unbearabledev-dockerfile-audit":{"type":"http","url":"https://unbearable-dev--dockerfile-audit.apify.actor/mcp"}}}Cursor で開く{"servers":{"unbearabledev-dockerfile-audit":{"type":"http","url":"https://unbearable-dev--dockerfile-audit.apify.actor/mcp"}}}VS Code で開く{"mcpServers":{"unbearabledev-dockerfile-audit":{"type":"http","url":"https://unbearable-dev--dockerfile-audit.apify.actor/mcp"}}}{"mcpServers":{"unbearabledev-dockerfile-audit":{"serverUrl":"https://unbearable-dev--dockerfile-audit.apify.actor/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://unbearable-dev--dockerfile-audit.apify.actor/mcp認証が必要ツール
詳細
Dockerfile のセキュリティと品質の監査
MCP サーバーとして、Hadolint レベルの Dockerfile 監査を行います。5 つのカテゴリにわたる 18 件以上のチェックを実施し、すべての検出結果に重大度、行番号、修正方法の説明、コピーして貼り付けられる Dockerfile のスニペットを付けて返します。
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、カスタムエージェント)からこのサーバーに接続し、Dockerfile を渡すと、構造化されたレポートが返されます。
- 重大度 — 高/中/低/情報
- 行番号 — ファイル内の正確な位置
- 説明 — 問題の内容と、その問題が重要な理由
- 修正方法 — 対処方法
- 修正スニペット — そのまま貼り付けられる Dockerfile の構文
ツール
| ツール | 用途 |
|---|---|
audit_dockerfile(dockerfile_content? | dockerfile_url?, min_severity='low') | すべてのチェックを実行 |
check_base_image(...) | FROM/タグ/ダイジェスト/レジストリのみをチェック |
check_instructions(...) | CMD の形式、ADD と COPY の使い分け、MAINTAINER などをチェック |
check_security(...) | USER、sudo、chmod 777、curl|bash、ハードコードされたシークレット、HEALTHCHECK をチェック |
check_efficiency(...) | apt キャッシュの管理、pip のキャッシュをチェック |
check_secrets(...) | シークレットパターンに一致する名前の ARG をチェック |
list_checks(category?) | すべてのチェック項目を参照 |
dockerfile_content(ファイルを貼り付ける)または dockerfile_url(HTTPS URL。例:GitHub raw)のいずれか一方のみを指定してください。
チェック項目(v1:5 つのカテゴリにわたる 18 件のチェック)
| ID | カテゴリ | 重大度 | タイトル |
|---|---|---|---|
| DFA-001 | base_image | 中 | イメージに :latest タグが使われているか、タグが指定されていません |
| DFA-002 | base_image | 情報 | FROM に SHA256 ダイジェストが固定されていません |
| DFA-003 | base_image | 中 | 信頼できないレジストリ |
| DFA-010 | instructions | 低 | CMD がシェル形式です |
| DFA-011 | instructions | 低 | ENTRYPOINT がシェル形式です |
| DFA-012 | instructions | 情報 | MAINTAINER 命令は非推奨です |
| DFA-013 | instructions | 中 | COPY で十分な箇所で ADD が使われています |
| DFA-020 | security | 中 | USER ディレクティブがありません(root として実行されます) |
| DFA-021 | security | 高 | USER root が明示的に設定されています |
| DFA-022 | security | 高 | RUN 内で sudo が呼び出されています |
| DFA-023 | security | 高 | RUN 内で chmod 777 が使われています |
| DFA-024 | security | 中 | RUN 内で curl|bash パターンが使われています |
| DFA-025 | security | 高 | ENV にシークレットがハードコードされています |
| DFA-027 | security | 低 | HEALTHCHECK がありません |
| DFA-030 | efficiency | 低 | apt-get update の後に install がありません |
| DFA-031 | efficiency | 低 | apt-get install に --no-install-recommends が指定されていません |
| DFA-032 | efficiency | 低 | pip install に --no-cache-dir が指定されていません |
| DFA-040 | secrets | 中 | シークレットパターンに一致する名前の ARG |
最新の正式なチェック項目一覧を取得するには、list_checks を使ってください。
料金
| イベント | USD |
|---|---|
| 監査/check_* ツールの呼び出し | $0.02 |
list_checks による一覧取得 | $0.005 |
応答例(一部抜粋)
{
"summary": {
"total_findings": 6,
"by_severity": {"high": 2, "medium": 2, "low": 2, "info": 0}
},
"findings": [
{
"id": "DFA-021",
"category": "security",
"severity": "high",
"instruction": "USER",
"line_number": 3,
"title": "USER root set explicitly",
"description": "...",
"remediation": "Switch to a non-root UID after any root-required RUN steps.",
"fix_dockerfile_snippet": "USER 10001:10001",
"references": ["CIS-Docker-4.1"]
}
]
}
Claude Desktop から接続する
{
"mcpServers": {
"dockerfile-audit": {
"transport": "streamable-http",
"url": "https://YOUR-ACTOR-URL.apify.actor/mcp"
}
}
}
制限
- Dockerfile のサイズ: 監査ごとに上限 200 KB
- URL の取得: タイムアウト 5 秒、リダイレクトは最大 3 回、HTTPS のみ
- セッションのタイムアウト: 5 分間操作がない場合
現時点で対象外の項目
- 稼働中のイメージの脆弱性スキャン(その用途には Trivy/Grype をお使いください)
- マルチステージビルドの最適化分析(DFA-004/DFA-005 — ロードマップに記載)
- Compose ファイルの監査(別の MCP:
docker-compose-audit)
Unbearable Labs の関連 MCP
docker-compose-audit—docker-compose.ymlに対する同じパターンhu-postcode-validator— ハンガリーの郵便番号検索
ソース/お問い合わせ
問題やアイデアは、[email protected] または GitHub 組織 UnbearableDev までお寄せください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。