0

在尝试使用 GCP DLP 的 POC 时,遇到以下问题:

log:

Received the following error message from Cloud KMS when unwrapping KmsWrappedCryptoKey
 "projects/<<PROJECT_ID>>/locations/global/keyRings/<<KMS_KEY_RING>>/cryptoKeys
/<<KMS_KEY_NAME>>": Decryption failed: the ciphertext is invalid. 

我刚刚使用 KMS 中的生成密钥选项和基本 DLP 模板创建了密钥和密钥环,以使用加密确定性令牌对数据进行伪匿名化。我提供的包装密钥是一个简单的 base-64 格式密钥。在控制台中使用数据测试此模板时,我遇到了这个问题。尝试加密数据时,应用程序日志中也会出现同样的问题。

PS:我们已经尝试使用 Open SSL 生成手动密钥并将其导入 KMS。我们仍然面临这个问题。

附上截图供参考: 在此处输入图像描述

4

1 回答 1

4

在这种情况下想通了问题。

问题在于我们创建在 DLP 模板中提供的包装密钥的方式。以下是生成包装密钥的步骤:

  1. 选择包装的密钥(可以是任何东西。字符串、随机文本等)
  2. 使用您将在 DLP 模板中使用的 KMS 密钥加密上述步骤中的包装密钥。
  3. 将上述加密密钥转换为 base 64 格式并在 DLP 模板中使用。

以下是上述步骤的命令,顺序相同:

openssl rand 16 > secret.txt

这会生成 16 个字节的随机字符串。大小必须是 16、24、32 之一(强制)

gcloud kms encrypt --location global --keyring <key-ring-name> --key \
<key-name> --plaintext-file secret.txt --ciphertext-file \
mysecret.txt.encrypted

这将加密随机字符串。

base64 mysecret.txt.encrypted

在 DLP 模板中使用它。

这个答案帮助我解决了这个问题:https ://stackoverflow.com/a/60513800/6908062

于 2020-10-27T09:06:04.720 回答