AlwaysAdmit Admission Plugin の使用

検証を提供しない AlwaysAdmit を削除し、実際の admission ポリシーを確認してください。

説明

AlwaysAdmit は、自身では要求の拒否やセキュリティポリシーの検証を行わない admission plugin です。他のプラグインの検証を迂回するわけではありませんが、単独では保護になりません。Kubernetes v1.13 から非推奨です。

Kubernetes API サーバーは、ワークロードの作成・変更の中心です。実際に検証を行う admission plugin とポリシーで、必要なセキュリティ要件を適用してください。

想定される影響

  • 他の検証ポリシーもなければ、不適切なリソース作成や変更が許可される場合があります。
  • ポリシー検証が弱く、安全でない設定がクラスターに反映されるおそれがあります。
  • セキュリティ検証が有効だと誤認する場合があります。

対処方法

  • --enable-admission-plugins から AlwaysAdmit を削除してください。
  • 必要なデフォルトの admission 機能を維持し、Pod Security Admission など、実際の要件を検証するポリシーを構成してください。
  • API サーバーの起動引数と static Pod マニフェストを定期的に確認してください。

例

不要なプラグイン引数を削除する API サーバーの抜粋です。イメージは実際のクラスターのバージョンに合わせてください。他の設定は省略しており、引数の削除だけでセキュリティポリシーが構成されるわけではありません。

変更前

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: registry.k8s.io/kube-apiserver:v1.34.0
      command: ["kube-apiserver"]
      args: ["--enable-admission-plugins=AlwaysAdmit"]

変更後

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: registry.k8s.io/kube-apiserver:v1.34.0
      command: ["kube-apiserver"]
      args: []

補足:

  • 変更前: AlwaysAdmit は検証を提供しません。他の有効なポリシーが必要な制限を行うか確認してください。
  • 変更後: 不要なプラグインを削除します。実際のデフォルトプラグインと個別のセキュリティポリシーの適用を確認してください。

参考資料