Google cloud platform 我们能否将云KMS密钥生成的包装密钥保存在DLP身份验证模板中(使用Python Api)?
我正在从事一个PII去识别项目,并使用谷歌云的数据丢失预防api 用例:使用云KMS密钥加密字段。Google cloud platform 我们能否将云KMS密钥生成的包装密钥保存在DLP身份验证模板中(使用Python Api)?,google-cloud-platform,google-cloud-kms,google-cloud-dlp,Google Cloud Platform,Google Cloud Kms,Google Cloud Dlp,我正在从事一个PII去识别项目,并使用谷歌云的数据丢失预防api 用例:使用云KMS密钥加密字段。 创建了dlp身份验证模板,以下是代码段: 将模板保存为JSON文件 当我尝试使用pythonapi构建模板时,出现以下错误: TypeError:无法设置google.privacy.dlp.v2.KmsWrappedCryptoKey.wrapped_key[base64 encoded]:[base64 encoded]具有类型,但字段KmsWrappedCryptoKey的类型应
- 创建了dlp身份验证模板,以下是代码段:
- 将模板保存为JSON文件
- 当我尝试使用
构建模板时,出现以下错误:pythonapi
TypeError:无法设置google.privacy.dlp.v2.KmsWrappedCryptoKey.wrapped_key[base64 encoded]:[base64 encoded]具有类型,但字段KmsWrappedCryptoKey的类型应为:(,)
如何在json中写入字节?不确定是否可行
我使用的变通方法:
- 已创建具有临时加密密钥的模板:
- 在DLP UI中,修改了模板配置
- 将密码字段的转换更改为KMS包装的加密密钥
- 添加了资源名称和KMS生成的密钥
- 它的工作很好,测试了模板
- 我做了一个API调用来检查配置,在我使用UI添加了KMS密钥之后,我看到了如下包装的密钥:
有没有办法使用保存为json的模板使用KMS密钥?是的,您应该能够在模板中使用KMSWrapped密钥。您可以使用JSON并调用API或通过 您得到的错误可能是由于密钥被包装为错误的格式 我刚刚完成了这些步骤,并使用
KMSWrappedKey
获得了一个成功工作的DLPdeIdentifity_模板
要创建包装密钥,可以尝试以下步骤:
创建一个。稍后,您将使用此选项包装您的取消标识密钥
创建128/192/256加密密钥以用作DLP取消标识密钥
Base64从步骤2对该密钥进行编码
使用步骤1中的KMS密钥包装/加密步骤3中的base64编码密钥
电话示例:
保存模板并试用。您可以在或中进行测试(只需单击您制作的模板,然后单击test
选项卡)
下面是一个完整的JSON示例。您只需要在您的项目下以您的项目作为父id运行它,并且需要确保您的关键资源id与您的匹配。在这里,我在一个名为project-test-123
的项目中使用了一个名为keyring1
的键和一个名为key1
的键:
注意:这是使用KMS包装的随机生成的128位密钥。请不要在任何生产系统中使用此实际密钥,也不要保护任何数据,因为它已在此处公开发布。Hey@Scott:我收到了相同的错误,您是如何创建128位加密密钥的?我使用的是opensslopenssl rand-base64 16
。如果我遵循解决方法,则同一个键起作用。若格式错误,它不应该双向工作。转到UI将其修改为KMS密钥加密(添加了资源名称和KMS生成的密钥)。工作正常。如果您需要更多详细信息,请与我联系。请使用更多解决方法的详细信息编辑问题。当在json文件中使用同一个键时,它会失败,但它会使用UI工作。即使我使用UI创建模板,它也会工作。当我试图从保存的json文件中使用API调用创建模板时,我发现了一个问题。我使用CURL命令或直接在API Explorer/tester中测试了这个json来创建模板。这里:re:Python,您的Python代码是否可能是base64编码两次或进行其他类型的字节处理?
{
"deidentify_template":{
"display_name":"deidentification_encryption",
"description":"deidentification_encryption",
"deidentify_config":{
"record_transformations":{
"field_transformations":[
{
"fields":[
{
"name":"password"
}
],
"primitive_transformation":{
"crypto_hash_config": {
"crypto_key": {
"kms_wrapped": {
"wrapped_key": "[base64 encoded]",
"crypto_key_name": "kms-key-resource-name"
}
}
}
}
"cryptoKey": {
"transient": {
"name": "ola-32"
}
}
}
curl "https://cloudkms.googleapis.com/v1/projects/<project-id>/locations/global/keyRings/<key-ring-id>/cryptoKeys/<key-id>:encrypt" \
--request "POST" \
--header "Authorization:Bearer $(gcloud auth application-default print-access-token)" \
--header "content-type: application/json" \
--data "{\"plaintext\": \"<your base64 encoded key>\"}"
{
"name": "projects/<project-id>/locations/global/keyRings/<key-ring-id>/cryptoKeys/<key-id>/cryptoKeyVersions/1",
"ciphertext": "<cipher text>",
"ciphertextCrc32c": "<some number>"
}
...
"crypto_hash_config": {
"crypto_key": {
"kmsWrapped": {
"wrappedKey": "CiQA4yqJRKIrMRQCdYdsSHIhqGthDuuxnhBOLN512drs6f59tt4SOQAwcYzUXvT1tJQmHHhqycGMj/lB+UPkmIb7j+QcIGxtQuMbuqG2xdRC8WVMQ9MFJ9tuOO6vxJqaVw==",
"cryptoKeyName": "projects/<project-id>/locations/global/keyRings/<key-ring-id>/cryptoKeys/<key-id>"
}
}
}
{
"deidentifyTemplate": {
"deidentifyConfig": {
"infoTypeTransformations": {
"transformations": [
{
"primitiveTransformation": {
"cryptoHashConfig": {
"cryptoKey": {
"kmsWrapped": {
"cryptoKeyName": "projects/project-test-123/locations/global/keyRings/keyring1/cryptoKeys/key1",
"wrappedKey": "CiQA4yqJRKIrMRQCdYdsSHIhqGthDuuxnhBOLN512drs6f59tt4SOQAwcYzUXvT1tJQmHHhqycGMj/lB+UPkmIb7j+QcIGxtQuMbuqG2xdRC8WVMQ9MFJ9tuOO6vxJqaVw=="
}
}
}
}
}
]
}
}
},
"templateId": "test1"
}