Docker と Kubernetes のコンテナセキュリティ

コンテナセキュリティ入門

コンテナはアプリケーションのデプロイに革命をもたらしましたが、新たな攻撃ベクトルをもたらします。 セキュリティは base image から Kubernetes のオーケストレーションまで、ランタイム 保護や network policies を含めてすべてをカバーする必要があります。

Docker イメージのセキュリティ

1. ベースイメージの選択

  • 公式かつ検証済みのイメージを使用する(Docker Hub verified publishers)
  • 攻撃対象領域を小さくするため Alpine Linux または Distroless を優先する
  • :latest イメージを避ける - 常にバージョンを指定する
  • レイヤーを最小化し、不要なツールを削除する

2. 脆弱性スキャン

  • Trivy:Aqua Security によるオープンソースのスキャナー
  • Grype:イメージと filesystem の脆弱性スキャン
  • Clair:静的な脆弱性分析
  • Snyk Container:CI/CD との統合
  • push の前に CI/CD pipeline での自動スキャン

3. イメージ署名

  • イメージ署名のための Docker Content Trust(Notary)
  • supply chain security のための Sigstore/Cosign
  • デプロイ前の整合性検証

Docker ランタイムセキュリティ

Docker コンテナのハードニング:

  • User Namespaces:root として実行しない(USER directive)
  • Capabilities:Drop all + 必要なものだけ追加(--cap-drop=ALL)
  • Read-only Filesystem:イミュータブルなコンテナのための --read-only
  • No New Privileges:--security-opt=no-new-privileges
  • Resource Limits:DoS を防ぐための --memory、--cpus
  • Seccomp Profiles:危険な syscall をフィルタリングする
  • AppArmor/SELinux:Mandatory access control

Kubernetes セキュリティ

1. RBAC とアクセス制御

  • 最小権限:特定の Roles と RoleBindings
  • アプリケーションごとに専用の Service Accounts
  • 重要な自動化を除き ClusterAdmin を避ける
  • すべての API calls の audit logging

2. Pod Security Standards

  • Privileged:制限なし(避ける)
  • Baseline:既知の権限昇格を防ぐ
  • Restricted:本番環境向けの最大限のハードニング
  • 強制適用のための Pod Security Admission controller

3. Network Policies

  • Default deny all + 必要に応じた明示的な allow
  • namespace と labels によるセグメンテーション
  • 情報流出を防ぐための egress 制御
  • CNI plugins との統合(Calico、Cilium)

Secrets 管理

  • secrets を決してハードコードしないイメージやコードに
  • Kubernetes Secrets:Base64 エンコード(暗号化されていません!)
  • External Secrets Operator:外部の vault との統合
  • Sealed Secrets:GitOps のための非対称暗号化
  • HashiCorp Vault:Dynamic secrets と自動ローテーション
  • AWS Secrets Manager / Azure Key Vault:Cloud-native options
  • etcd の Encryption at rest(--encryption-provider-config)

ランタイムセキュリティ

ランタイム保護ツール:

  • Falco:eBPF によるランタイム脅威検出(CNCF)
  • Tetragon:eBPF-based security observability(Cilium)
  • Sysdig Secure:Container forensics と compliance
  • Aqua Security:Full lifecycle container security
  • Prisma Cloud:CWPP(Cloud Workload Protection Platform)

検出対象:異常なプロセス生成、不審なネットワーク接続、file system の変更、 権限昇格の試み

サービスメッシュのセキュリティ

  • Istio:自動 mTLS、authorization policies、トラフィック暗号化
  • Linkerd:zero-trust networking を備えた軽量なサービスメッシュ
  • Consul Connect:service-to-service の暗号化と認可
  • 証明書の自動ローテーション
  • マイクロサービス間のきめ細かなアクセス制御
  • 可観測性:distributed tracing と metrics

サプライチェーンセキュリティ

  • SBOM(Software Bill of Materials):生成のための Syft、Tern
  • Admission Controllers:policy enforcement のための OPA/Gatekeeper、Kyverno
  • Image Provenance:SLSA framework への準拠
  • Registry Security:スキャン統合された Harbor、Artifactory
  • アーティファクトの署名と検証(Cosign、Notary v2)
  • 継続的な脆弱性管理

ベストプラクティス

  • [OK] pipeline のすべてのフェーズでイメージをスキャンする
  • [OK] Restricted レベルの Pod Security Standards を実装する
  • [OK] すべての namespace に default deny の network policies を適用する
  • [OK] 外部 secrets(Git やイメージには決して入れない)
  • [OK] Falco または同等のツールによるランタイム監視
  • [OK] audit logs を有効化し集中管理する
  • [OK] cluster と components の定期的な更新
  • [OK] 暗号化された etcd のバックアップ
  • [OK] テスト済みの disaster recovery 計画
  • [OK] サービスメッシュによる zero-trust networking