説明
Privileged 実行を許可する PodSecurityPolicy は、そのポリシーを使用するワークロードに広い権限を要求する余地を与えます。実際に privileged で動くコンテナーは既定の隔離が大きく弱まり、侵害がノードに影響する可能性があります。ポリシーの許可だけで、すべての Pod が privileged になるわけではありません。
PodSecurityPolicy は Kubernetes v1.21 で非推奨となり、v1.25 で削除されました。現在のクラスターでは Pod Security Admission やポリシーエンジンで制限してください。
想定される影響
- 必要以上の権限を持つワークロードがデプロイされる可能性があります。
- Privileged コンテナーの侵害が、ノードやほかのワークロードに影響する可能性があります。
対処方法
- 従来の PSP では
spec.privileged = falseを明示してください。 - 特別な運用処理をより限定的な権限で実行できないか確認し、必要な例外はポリシーとノードを分けて隔離してください。
- 権限昇格、capabilities、ホストの名前空間の共有も制限してください。
例
過去の PSP 対応環境で privileged の許可を比較する部分例です。ほかの必須ポリシー項目は省略しています。
変更前
hcl
resource "kubernetes_pod_security_policy" "policy" {
metadata {
name = "terraform-example"
}
spec {
privileged = true
}
}
このポリシーを使用できる Pod は、privileged 実行を要求できます。
変更後
hcl
resource "kubernetes_pod_security_policy" "policy" {
metadata {
name = "terraform-example"
}
spec {
privileged = false
}
}
このポリシーは privileged 実行を許可しません。ほかのポリシーの許可と実際の Pod 権限も確認してください。