Encryption Provider 設定の確認

暗号化 provider の順序と鍵管理を確認し、保存データを保護してください。

説明

EncryptionConfiguration は、リソースごとの先頭の provider で新しいデータを書き込みます。identity が先頭なら、その後に暗号化 provider があっても、そのリソースの新しいデータは暗号化されません。

ファイルの有無より内容が重要です。provider の種類と順序を合わせて確認してください。

想定される影響

  • Secret などの機密リソースに、意図した暗号化が適用されない場合があります。
  • 設定ファイルがあっても、期待した保護が得られないおそれがあります。
  • 保存データの保護要件を満たしているか、誤って判断する場合があります。

対処方法

  • 要件に合う暗号化 provider を先頭に配置してください。外部の鍵管理には KMS v2 を検討し、ローカル鍵のアクセス、ローテーション、復旧を安全に管理してください。
  • 移行中は既存の平文を読むため、暗号化 provider の後に identity を置けます。AES-GCM の自動鍵ローテーションなど、方式ごとの運用条件も満たしてください。
  • 全 API サーバーの復号設定を整合させ、既存リソースを安全に書き直して暗号化を確認してください。既存データの読み取りに必要な鍵や provider を先に削除しないでください。

例

provider の順序を比較する例です。鍵は公開された説明用の値なので、本番環境で再利用せず、新しく生成した安全な鍵に置き換えてください。Secret API の読み取り権限と設定ファイルへのアクセスも別途制限してください。

変更前

yaml
apiVersion: apiserver.config.k8s.io/v1
kind: EncryptionConfiguration
resources:
  - resources:
      - secrets
    providers:
      - identity: {}
      - aesgcm:
          keys:
            - name: key1
              secret: c2VjcmV0IGlzIHNlY3VyZQ==

変更後

yaml
apiVersion: apiserver.config.k8s.io/v1
kind: EncryptionConfiguration
resources:
  - resources:
      - secrets
    providers:
      - secretbox:
          keys:
            - name: key1
              secret: YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTY=
      - identity: {}
      - aesgcm:
          keys:
            - name: key1
              secret: c2VjcmV0IGlzIHNlY3VyZQ==
      - aescbc:
          keys:
            - name: key1
              secret: c2VjcmV0IGlzIHNlY3VyZQ==

補足:

  • 変更前: identity が先頭のため、新しい Secret は暗号化されません。
  • 変更後: secretbox を先頭に置き、新しい書き込みを暗号化します。後続の provider は既存データの読み取りに使われる場合があります。既存リソースが自動で再暗号化されるわけではありません。

参考資料