Privileged 実行を許可する Pulumi Kubernetes PodSecurityPolicy

PodSecurityPolicy で一般のワークロードの privileged 実行を許可しないでください。

説明

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 やホストアクセスなど、ほかの権限がすべて削除されるわけではありません。

参考資料