我有一个由GCP密钥加密的.enc文件。我把这个加密文件存储在kubernetes中作为一个秘密。Kubernetes集群具有访问KMS密钥的权限。现在,我想在容器运行时使用密钥解密存储的加密文件。我的服务是用python写的。如何使用python脚本解密存储的加密文件?
发布于 2019-11-06 16:50:13
我想你可能在这里混淆了两个概念。如果使用GKE应用层加密,集群需要IAM权限才能与KMS对话。作为用户,你从不直接加密秘密。例如,当您运行kubectl create secret时,GKE将在将其保存到etcd之前自动加密它。当您请求该秘密时,GKE将自动解密它。
如果您想加密带外的秘密,您的Kubernetes集群不应该拥有使用KMS密钥的权限。无论是库伯内特斯还是埃特cd,都不会看到这个明文的秘密。您可以在计算机上对其进行本地加密,并将加密的数据保存为Kubernetes中的一个秘密。当您想要检索明文时,您的pod/服务将需要请求Kubernetes秘密,然后对Cloud进行必要的API调用以解密该秘密。下面是一些可以解密秘密的Python示例代码:
def decrypt(client, s):
if not s:
raise ValueError('ciphertext is missing')
response = client \
.projects() \
.locations() \
.keyRings() \
.cryptoKeys() \
.decrypt(name=crypto_key_id, body={"ciphertext":s}) \
.execute()
return base64.b64decode(response['plaintext']).decode('utf-8').strip()https://stackoverflow.com/questions/58734586
复制相似问题