Google cloud platform 我们能否将云KMS密钥生成的包装密钥保存在DLP身份验证模板中(使用Python Api)?

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的类型应

我正在从事一个PII去识别项目,并使用谷歌云的数据丢失预防api

用例:使用云KMS密钥加密字段。

  • 创建了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中使用这种格式的包装密钥是不可能的


有没有办法使用保存为json的模板使用KMS密钥?

是的,您应该能够在模板中使用KMSWrapped密钥。您可以使用JSON并调用API或通过

您得到的错误可能是由于密钥被包装为错误的格式

我刚刚完成了这些步骤,并使用
KMSWrappedKey
获得了一个成功工作的DLP
deIdentifity_模板

要创建包装密钥,可以尝试以下步骤:

  • 创建一个。稍后,您将使用此选项包装您的取消标识密钥
  • 创建128/192/256加密密钥以用作DLP取消标识密钥
  • Base64从步骤2对该密钥进行编码
  • 使用步骤1中的KMS密钥包装/加密步骤3中的base64编码密钥
  • 电话示例:

  • 保存模板并试用。您可以在或中进行测试(只需单击您制作的模板,然后单击
    test
    选项卡)

  • 下面是一个完整的JSON示例。您只需要在您的项目下以您的项目作为父id运行它,并且需要确保您的关键资源id与您的匹配。在这里,我在一个名为
    project-test-123
    的项目中使用了一个名为
    keyring1
    的键和一个名为
    key1
    的键:


  • 注意:这是使用KMS包装的随机生成的128位密钥。请不要在任何生产系统中使用此实际密钥,也不要保护任何数据,因为它已在此处公开发布。

    Hey@Scott:我收到了相同的错误,您是如何创建128位加密密钥的?我使用的是openssl
    openssl 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"
    }