説明
特権実行、権限昇格、ホストへのアクセスを制限する admission ポリシーがない場合、Pod に不要な権限が与えられるおそれがあります。ワークロードの要件に応じたセキュリティコンテキストの制限が必要です。
従来の SecurityContextDeny プラグインは Kubernetes 1.27 で非推奨となり、1.30 で削除されました。現在のクラスターでは、このプラグインを有効にしようとせず、Pod Security Admission または対応するポリシーエンジンを使用してください。
想定される影響
- 制限のないセキュリティコンテキストによって、特権コンテナーや不要な権限が許可されるおそれがあります。
- ワークロードが侵害された場合、ホストやほかのリソースへの影響が大きくなる場合があります。
対処方法
- Pod Security Admission の適切なポリシーレベル、または対応するポリシーエンジンでセキュリティコンテキストを制限してください。
- 実際のワークロードと警告・監査結果を確認してから、拒否するポリシーを適用してください。
- 必要な例外だけを承認し、新しい Pod の要求に意図した制限が適用されることをテストしてください。
例
以下は SecurityContextDeny が存在した Kubernetes 1.24 の引数を比較する抜粋です。サポート終了済みバージョンのデプロイを推奨するものではありません。Kubernetes 1.30 以降では、後の例のプラグイン設定は使用できません。残りの制御プレーン設定は省略しています。
変更前
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: registry.k8s.io/kube-apiserver:v1.24.17
command: ["kube-apiserver"]
args: ["--disable-admission-plugins=SecurityContextDeny"]
変更後
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: registry.k8s.io/kube-apiserver:v1.24.17
command: ["kube-apiserver"]
args:
["--enable-admission-plugins=SecurityContextDeny"]
補足:
- 変更前: 従来のプラグインを明示的に無効にします。ほかの admission ポリシーの適用状況は別途確認する必要があります。
- 変更後: 従来のプラグインを有効にする歴史的な例です。現在の環境では、対応する Pod セキュリティポリシーに置き換えてください。