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