このドキュメントに従って、アプリケーション レイヤのシークレットの暗号化--database-encryption-key
を有効にするための KMS キーを提供するフラグを使用して、GKE クラスタ (1.13.6-gke.6) を作成しました。
次のコマンドを使用してシークレットを作成しました。
kubectl create secret generic dev-db-secret --from-literal=username=someuser --from-literal=password=somepass
したがって、私の仮定が正しければ、これらのシークレットは、クラスターの作成中に提供された KMS キーを使用して暗号化されて保存されます。ただし、使用したキーのすべてのバージョンを破棄した後でも、以下のマニフェストを使用して作成された Pod で確認できるだけでなく、GKE 内に保存されているシークレットetcd
も確認できます。kubectl get secret dev-db-secret -o yaml
apiVersion: v1
kind: Pod
metadata:
name: secret-env-pod
spec:
containers:
- name: mycontainer
image: redis
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: dev-db-secret
key: username
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: test-secret
key: password
restartPolicy: Never
上記のポッドに実行して実行するecho SECRET_USERNAME
とecho SECRET_PASSWORD
、ユーザー名とパスワードがコンソールにプレーンテキストで出力されます。
これは、暗号化が機能するはずの方法ですか?はいの場合、暗号化は正確にどこで行われていますか? 私は何を間違っていますか?シークレットは本当に暗号化されていますか?