説明
PodSecurityPolicy の allowed_capabilities は、コンテナーが既定の権限に加えて要求できる Linux capabilities を指定します。この許可リスト自体が、すべてのコンテナーに権限を付与するわけではありません。各 capability の機能とワークロードの必要性に基づいて、最小限だけを許可してください。
NET_BIND_SERVICE など必要な場合がある権限もあり、すべての追加が同じリスクを持つわけではありません。PodSecurityPolicy は Kubernetes v1.21 で非推奨となり、v1.25 で削除されたため、現在は Pod Security Admission やポリシーエンジンで制限してください。
想定される影響
- 不要な capability が実際に追加されると、侵害されたコンテナーが利用できるシステム機能が増えます。
- 広い許可リストを多数のワークロードが使うと、最小権限の管理が難しくなります。
対処方法
- 不要な
allowed_capabilitiesの項目を削除し、必要な権限だけを明示してください。 - 実際の Pod の追加権限と既定の capabilities も確認してください。許可リストを空にしても、既定の権限がすべて削除されるわけではありません。
- 例外の利用を必要なワークロードに限定し、ポリシー移行後の適用状態を確認してください。
例
従来の PSP の部分例です。一部の必須項目を省略し、追加許可を減らす方法を比較しています。
変更前
hcl
resource "kubernetes_pod_security_policy" "policy" {
metadata {
name = "terraform-example"
}
spec {
allowed_capabilities = ["NET_BIND_SERVICE"]
}
}
NET_BIND_SERVICE の要求を許可しています。番号の小さいポートへのバインドに必要な場合があるため、実際の要件を確認してください。
変更後
hcl
resource "kubernetes_pod_security_policy" "policy" {
metadata {
name = "terraform-example"
}
spec {
privileged = false
allow_privilege_escalation = false
}
}
追加の許可を削除しています。既定の capability を削除するポリシーと実際の Pod 設定も確認してください。