Encryption Provider Config が未設定

API サーバーの保存時暗号化設定と鍵を保護し、既存データへの適用も確認してください。

説明

--encryption-provider-config がないと、kube-apiserver が etcd に保存する機密リソースに暗号化が適用されない場合があります。Secret などが API の保存層で暗号化されずに残るおそれがあります。

この API レベルの暗号化は、etcd サーバーのディスク暗号化とは別です。ファイルのパスに加え、対象リソース、先頭の暗号化 provider、鍵管理を正しく構成する必要があります。API で Secret を読み取る権限も別途制限してください。

想定される影響

  • Secret などの機密リソースが保存時に暗号化されない場合があります。
  • etcd データの流出時に機密情報が漏えいするリスクが高まります。
  • 保存データの保護要件を満たせない場合があります。

対処方法

  • kube-apiserver に --encryption-provider-config のパスを指定してください。
  • 設定を安全に配布し、全 API サーバーの暗号化・復号設定を整合させてください。鍵を含むファイルを一般のリポジトリにコミットせず、アクセス権限と復旧用の鍵の保管を管理してください。
  • 実際の保存データを確認し、既存リソースも安全な手順で書き直して暗号化してください。設定を変えるだけで既存データが自動変換されるわけではありません。

例

API サーバー引数の抜粋です。イメージは実際のクラスターのバージョンに合わせ、有効な EncryptionConfiguration を例のパスに読み取り専用でマウントしてください。鍵やボリュームなどの設定は省略しています。

変更前

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: []

変更後

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: ["--encryption-provider-config=/path/to/config/file.yaml"]

補足:

  • 変更前: 暗号化設定ファイルが指定されず、API レベルの保存時暗号化が適用されない場合があります。
  • 変更後: encryption provider のファイルを指定します。実際の暗号化は、対象リソースと provider の順序によって決まります。

参考資料