コンテナセキュリティ - コンテナセキュリティ
Docker や Kubernetes 環境におけるセキュリティ対策。イメージの脆弱性スキャン、ランタイム保護、ネットワークポリシーの設定を含む。
概念図
実例
Trivy でコンテナイメージの脆弱性をスキャン
bash
trivy image --severity HIGH,CRITICAL myapp:latest読み取り専用ファイルシステムと権限昇格防止で実行
bash
docker run --read-only --tmpfs /tmp --security-opt no-new-privileges myapp:latestコンテナセキュリティの主要な領域
コンテナセキュリティはライフサイクル全体にわたる対策が必要です。
- イメージのセキュリティ: 信頼できるベースイメージを使用する。脆弱性スキャンを CI/CD パイプラインに組み込む。不要なパッケージを含めない
- ビルド時のセキュリティ: マルチステージビルドでビルドツールを本番イメージに含めない。シークレットをイメージに焼き込まない
- ランタイムセキュリティ: root ユーザーでコンテナを実行しない。読み取り専用ファイルシステムを使用する。リソース制限を設定する
- オーケストレーション: Kubernetes の RBAC、NetworkPolicy、PodSecurityStandard を適切に設定する
ベストプラクティス
- 最小ベースイメージ:
alpineやdistrolessイメージを使い、攻撃対象領域を最小化する - イメージ署名: cosign 等でイメージに署名し、改ざんされたイメージのデプロイを防ぐ
- 脆弱性スキャンの自動化: Trivy, Grype 等をCI/CDパイプラインに統合し、脆弱性のあるイメージのデプロイをブロックする
- seccomp / AppArmor プロファイル: コンテナが使用できるシステムコールを制限する
- ネットワークポリシー: Pod 間の通信をデフォルト拒否にし、必要な通信のみ許可する
- イメージの定期更新: ベースイメージの更新を定期的に行い、既知の脆弱性を解消する
