Google cloud platform 即使在删除用于加密的KMS密钥后,也要取回GKE机密

Google cloud platform 即使在删除用于加密的KMS密钥后,也要取回GKE机密,google-cloud-platform,google-kubernetes-engine,kubernetes-security,kubernetes-secrets,Google Cloud Platform,Google Kubernetes Engine,Kubernetes Security,Kubernetes Secrets,我按照文档创建了一个GKE集群(1.13.6-GKE.6),其中带有--数据库加密密钥标志,给出了一个KMS密钥,用于启用应用层机密加密 我使用以下命令创建了一个秘密: kubectl create secret generic dev-db-secret --from-literal=username=someuser --from-literal=password=somepass 因此,如果我的假设是正确的,那么在创建集群时,这些机密将使用我提供的KMS密钥加密存储。然而,即使在我销毁了

我按照文档创建了一个GKE集群(1.13.6-GKE.6),其中带有
--数据库加密密钥
标志,给出了一个KMS密钥,用于启用应用层机密加密

我使用以下命令创建了一个秘密:

kubectl create secret generic dev-db-secret --from-literal=username=someuser --from-literal=password=somepass
因此,如果我的假设是正确的,那么在创建集群时,这些机密将使用我提供的KMS密钥加密存储。然而,即使在我销毁了所有版本的已用密钥后,我仍然能够使用
kubectl get secret dev db secret-o yaml查看存储在GKE
etcd
中的秘密,并且我能够在使用以下清单创建的pod中看到它们:

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
如果我执行上述pod并执行
echo SECRET\u USERNAME
echo SECRET\u PASSWORD
操作,我会在控制台上以纯文本打印用户名和密码

这就是加密的工作方式吗?如果是,加密在哪里发生?
我做错了什么?这些秘密真的加密了吗?

我不是100%确定,但我认为这些密钥是缓存的,所以解密失败可能需要一段时间。Azure就是这样,我想GKE也是这样


顺便说一句,您可能想了解如何保护清单文件,以便将其存储在Git上。我写了一篇文章,描述了你可以使用的一些选项

这已经有很长时间了(超过12-13个小时),解密并没有失败。但是,我无法创建新秘密,但可以
获取
删除
修改
它。另外,即使集群发出密钥不可用的警告,新创建的pod也可以使用这个秘密。不确定这是否是正确的插件,但这是我在谷歌上找到的第一个插件。或联系GKE支持部门。当您发现发生了什么时,请添加一个答案:)