mcpField
C
container-image-hardening

container-image-hardening

github.com/securityskillsセキュリティ0168 回インストール9 週間前に更新
リポジトリ

container-image-hardening について

本番利用に向けてDockerfileとコンテナイメージを点検・強化するスキルです。ビルド手法、脆弱性、ランタイム設定、検証を確認し、強化済みDockerfileとCIゲート設定を作成します。

主な機能

  1. 01Dockerfileのビルド手法を確認
  2. 02イメージの脆弱性を検査
  3. 03ランタイムのセキュリティ設定を強化
  4. 04レイヤーと非root実行を検証
  5. 05スキャン報告とCIゲートを作成

活用シーン

  1. 01リリース前のDockerfile点検
  2. 02CIへの脆弱性チェック追加
  3. 03コンテナの実行権限を縮小

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/securityskills/skills --skill container-image-hardening

インストール後、Claude Code で/container-image-hardeningを入力して読み込まれたか確認します。

詳細

コンテナーイメージのハードニング

Dockerfile とイメージをレビューし、本番環境で安全に使用できるよう修正します。

Dockerfile のレビューチェックリスト

  • ベースイメージ:公式の特定タグまたはダイジェストを使用し、最小構成のバリアント(alpine、distroless、slim)を選択します。latest は使用しません
  • マルチステージビルド:コンパイラーやパッケージマネージャーなどのビルドツールチェーンを最終イメージに含めません
  • 非 root ユーザー:専用の UID を指定した USER ディレクティブを使用します。イメージ内で sudo は使用しません
  • シークレットなし:認証情報を含む ENV を使用せず、.env を COPY せず、シークレットをレイヤーに埋め込みません(後から削除しても残ります)
  • 依存関係を固定:ロックファイルを使用します(npm ci、ハッシュ付きの pip install -r requirements.txt)
  • ヘルスチェックを定義します。初期化を確実に行うには CMD より ENTRYPOINT を使用します
  • レイヤーの整理:apt の操作をまとめ、同じレイヤー内でリストをクリーンアップします。.dockerignore に .git とビルド成果物を含めます

スキャンとゲート

trivy image --severity HIGH,CRITICAL --exit-code 1 <image>
grype <image>
docker scout cves <image>
  • 修正が利用可能な重大な CVE がある場合、CI を失敗させます
  • ベースイメージの更新を追跡します(Dockerfile 用の renovate/dependabot)

ランタイムのハードニング

read_only: true
cap_drop: ["ALL"]
security_opt: ["no-new-privileges:true"]
tmpfs: [/tmp]
  • DoS の影響を抑えるため、リソース制限(CPU/メモリ)を設定します
  • ルートファイルシステムを読み取り専用にし、書き込み可能なパスには明示的に tmpfs を使用します

検証

  • docker history <image> — シークレットらしきレイヤーがないことを確認します
  • dive <image> — イメージ効率と無駄な容量を確認します
  • イメージのユーザーとして実行します:docker run --rm <image> id で非 root ユーザーであることを確認します

成果物

ハードニング済みの Dockerfile、変更前後のスキャンレポート、CI ゲートの設定。

コメント