説明
PodSecurityPolicy で privileged: true を許可すると、そのポリシーを使用できる Pod が privileged 実行を要求できます。実際の privileged コンテナーは隔離が弱まり、一つのワークロードの侵害がノードに及ぶ可能性があります。ポリシーが許可しても、すべての Pod が自動的に privileged になるわけではありません。
PodSecurityPolicy は Kubernetes v1.21 で非推奨となり、v1.25 で削除されました。現在のクラスターでは Pod Security Admission やポリシーエンジンで同じ制限を適用してください。
想定される影響
- 実際の privileged ワークロードが、カーネル機能やノードのリソースに過剰にアクセスできる可能性があります。
- コンテナーの侵害がノードやほかのワークロードに影響する可能性があります。
対処方法
- 従来の PodSecurityPolicy の
privilegedをfalseに設定してください。 - 特別な処理をより限定的な capabilities で実行できないか確認し、必須の例外はポリシーとノードを分けて隔離してください。
- ポリシー移行時に、実際のワークロード権限と適用される制限を確認してください。
例
過去の policy/v1beta1 API を使う Pulumi YAML の部分例です。Kubernetes v1.25 以降ではこのリソースを使用できず、ほかの必須ポリシー項目も省略しています。
変更前
yaml
name: aws-eks
runtime: yaml
resources:
example:
type: kubernetes:policy/v1beta1:PodSecurityPolicy
properties:
metadata:
name: example
spec:
privileged: true
このポリシーは privileged 実行の要求を許可します。
変更後
yaml
name: aws-eks
runtime: yaml
resources:
example:
type: kubernetes:policy/v1beta1:PodSecurityPolicy
properties:
metadata:
name: example
spec:
privileged: false
このポリシーによる privileged 実行の許可を解除しています。capabilities やホストアクセスなど、ほかの権限がすべて削除されるわけではありません。