Kubernetes のイメージ admission ポリシーの確認

デプロイ時に必要なイメージポリシーが実際に適用されることを確認してください。

説明

ImagePolicyWebhook は、外部バックエンドがイメージの使用可否を判断する admission プラグインです。イメージポリシーを適用する手段がなければ、未承認のイメージがデプロイされるおそれがあります。このプラグインを有効にするだけで署名や脆弱性が自動検証されるわけではなく、別の admission 制御でも組織のポリシーを適用できます。

想定される影響

  • 未承認のイメージや、信頼しない提供元のコードが実行されるおそれがあります。
  • 検証基準と例外処理が一貫していないと、サプライチェーンのリスクを管理しにくくなります。

対処方法

  • 必要なレジストリ・署名・イメージ承認のポリシーを定め、実際に検証する admission 制御を構成してください。
  • ImagePolicyWebhook を使う場合は、プラグイン、必要な API の有効化、AdmissionConfiguration、TLS バックエンド接続を併せて構成してください。バックエンド障害時の許可動作と、通常の承認・拒否結果を試してください。

例

Kubernetes v1.30.0 の引数を比較する過去の部分例です。サポート対象のバージョンと完全な API サーバー構成を使ってください。設定ファイル、TLS バックエンド、必要な --runtime-config=imagepolicy.k8s.io/v1alpha1=true 設定は省略されており、別途用意する必要があります。

変更前

yaml
apiVersion: v1
kind: Pod
metadata:
  name: kube-apiserver
spec:
  containers:
    - name: kube-apiserver
      image: registry.k8s.io/kube-apiserver:v1.30.0
      command:
        - kube-apiserver
      args:
        - --enable-admission-plugins=AlwaysAdmit

AlwaysAdmit 自体はイメージポリシーを検証しません。既存クラスターの他のポリシー制御も確認する必要があります。

変更後

yaml
apiVersion: v1
kind: Pod
metadata:
  name: kube-apiserver
spec:
  containers:
    - name: kube-apiserver
      image: registry.k8s.io/kube-apiserver:v1.30.0
      command:
        - kube-apiserver
      args:
        - --enable-admission-plugins=ImagePolicyWebhook
        - --admission-control-config-file=/etc/kubernetes/image-policy-webhook.yaml

ウェブフックプラグインと設定パスを指定しています。実際の承認・拒否判断には、ポリシーバックエンドと接続設定が必要です。

参考資料