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