旧 PodSecurityPolicy の適用を確認すべき kube-apiserver

PSP に依存する旧クラスタでは、ポリシーとその適用経路を確認してください。

説明

PodSecurityPolicy に依存する旧クラスタで admission plugin が無効な場合、PSP リソースを作成してもその制限は適用されません。ポリシーを使用する権限と、実際の Pod 作成要求に適用されるかも確認してください。

PSP は Kubernetes 1.21 で非推奨となり、1.25 で削除されました。現在のクラスタには PSP を追加せず、Pod Security Admission などのサポートされる制御を使ってください。

想定される影響

  • 意図した制限が適用されず、必要な範囲を超えて特権実行やホストへのアクセスが許可される可能性があります。
  • ポリシーと使用権限を用意せずにプラグインを有効にすると、必要な Pod の作成も拒否される可能性があります。

対処方法

  • 旧環境では必要な PSP と最小限の use 権限を用意してから、プラグインを有効にしてください。
  • サポートされる Kubernetes に移行し、必要な制限を現在の admission 制御に移してください。
  • 承認済みのワークロードをデプロイでき、禁止した設定が拒否されることをテストしてください。

例

以下はサポートが終了した Kubernetes 1.24.17 の API サーバー設定の抜粋です。新規導入の推奨バージョンではありません。証明書やストレージなど、制御プレーンの残りの設定は別途必要です。

変更前

yaml
apiVersion: v1
kind: Pod
metadata:
  name: api-server
spec:
  containers:
    - name: kube-apiserver
      image: registry.k8s.io/kube-apiserver:v1.24.17
      command:
        - "kube-apiserver"
      args:
        - "--disable-admission-plugins=PodSecurityPolicy"

PSP プラグインを明示的に無効にしています。他の admission 制御による保護は別途確認してください。

変更後

yaml
apiVersion: v1
kind: Pod
metadata:
  name: api-server
spec:
  containers:
    - name: kube-apiserver
      image: registry.k8s.io/kube-apiserver:v1.24.17
      command:
        - "kube-apiserver"
      args:
        - "--enable-admission-plugins=PodSecurityPolicy"

PSP プラグインを有効にしています。適用するポリシーと、その使用権限を用意しておく必要があります。

参考資料