権限昇格を許可する Kubernetes PodSecurityPolicy

権限昇格の制限をアドミッションポリシーで適用し、複数のワークロードで最小権限を維持してください。

説明

コンテナーの権限昇格を許可するポリシーは、setuid 実行ファイルやファイル capabilities による追加権限取得の経路を残す可能性があります。実際に権限を得られるかは Pod の設定や実行ファイルなどにも左右されます。allow_privilege_escalation = false は、既に持つ権限を削除する設定ではありません。

PodSecurityPolicy は Kubernetes v1.21 で非推奨となり、v1.25 で削除されました。現在は Pod Security Admission やポリシーエンジンで同じ制限を適用してください。

想定される影響

  • 個々の Pod の不適切な設定が、ポリシーで阻止されない可能性があります。
  • 侵害されたプロセスが、追加権限を得られる実行ファイルを悪用する可能性があります。

対処方法

  • 従来の PSP では spec.allow_privilege_escalation を明示的に false にしてください。
  • この制限と両立しない privileged と SYS_ADMIN を禁止し、ほかの不要な capabilities も制限してください。
  • 実際のワークロードとほかの適用可能なポリシーを確認し、移行後も制限が維持されることを検証してください。

例

PSP をサポートする過去のクラスター向けの部分例です。ほかの必須項目を省略し、権限昇格の許可だけを比較しています。

変更前

hcl
resource "kubernetes_pod_security_policy" "policy" {
  metadata {
    name = "terraform-example"
  }

  spec {
    allow_privilege_escalation = true
  }
}

このポリシーは、Pod による権限昇格の許可を禁止していません。すべてのコンテナーが実際に追加権限を得るという意味ではありません。

変更後

hcl
resource "kubernetes_pod_security_policy" "policy" {
  metadata {
    name = "terraform-example"
  }

  spec {
    allow_privilege_escalation = false
  }
}

このポリシーを通じて、権限昇格を許可するコンテナーを実行できないようにします。既存の権限も別途最小化する必要があります。

参考資料