Privileged 実行を許可する Kubernetes PodSecurityPolicy

一般のワークロードの privileged 実行をポリシーで禁止してください。

説明

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 権限も確認してください。

参考資料