k8s セキュリティは『多層防御』が鍵
k8s 本番運用ではアプリ・ネットワーク・ノード・コントロールプレーンの多層セキュリティが必須です。本記事では編集部の視点で、実務での対策を公開情報をもとに整理します。Kubernetes 本番運用 もご参考に。
RBAC (Role-Based Access Control)
(1) 最小権限の原則。(2) ServiceAccount 個別:Pod ごとに。(3) Role/ClusterRole 分離。(4) RoleBinding/ClusterRoleBinding。(5) 定期見直し:四半期に1回。Secrets 管理 もご参考に。
Pod Security Standards
(1) Privileged:制限なし(避ける)。(2) Baseline:既知の権限昇格防止。(3) Restricted:強化セキュリティ。(4) 名前空間単位で適用。(5) PSP 廃止後の標準(公開情報をもとに)。
Network Policy
(1) Pod 間通信の制限。(2) ingress/egress 制御。(3) デフォルト deny + 必要 allow。(4) CNI 対応必須:Calico/Cilium。(5) ゼロトラストの基盤。Service Mesh も合わせて。
Secrets の安全な管理
(1) Kubernetes Secrets は base64 のみ(暗号化されない)。(2) etcd 暗号化:必須。(3) External Secrets Operator。(4) Sealed Secrets:Git に commit 可。(5) SOPS:暗号化ファイル。Secrets 管理 もご参考に。
イメージセキュリティ
(1) イメージスキャン:Trivy/Grype。(2) signed images:cosign。(3) private registry。(4) admission controllerでブロック。(5) distroless:最小イメージ。Docker イメージ最適化 もご参考に。
監査と監視
(1) Audit Log:API Server。(2) Falco:ランタイムセキュリティ。(3) Open Policy Agent (OPA)。(4) Kyverno:Policy エンジン。(5) SIEM 連携。Observability 実践 もご参考に。
失敗しがちなパターン
(1) cluster-admin 多用。(2) Privileged Pod 放置。(3) Network Policy なし:全 Pod 通信可。(4) Secrets を Git に。(5) 監査ログ未保存。対策は、(1)最小権限、(2)Restricted 適用、(3)デフォルト deny、(4)Sealed Secrets、(5)CloudTrail/監査ログ集約、です。