创建封装的密钥

本页面介绍如何使用 Cloud Key Management Service (Cloud KMS) 创建 封装的密钥,然后您可以使用该密钥向 Sensitive Data Protection 的 Cloud Data Loss Prevention API 发送 deidentify 和 reidentify 请求 。

使用加密密钥对内容进行去标识化和重标识的过程 称为假名化(或令牌化)。如需了解此过程的概念信息 ,请参阅 假名化。

如需查看有关如何创建封装的密钥、 对内容进行令牌化以及重新标识令牌化内容的示例,请改为参阅对敏感文本进行去标识化和 重新标识 。

您可以按照本文档中的步骤在 5 到 10 分钟内完成操作,不包括 准备工作 步骤。

中的配额。

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud的新用户, 请创建账号,以评估我们的产品在 实际场景中的表现。新客户还可以获得 300 美元的免费抵用金,用于 运行、测试和部署工作负载。
  2. 安装 Google Cloud CLI。

  3. 如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI。

  4. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  5. 创建或选择 Google Cloud 项目。

    选择或创建项目所需角色

    • 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授予角色的任何项目。
    • 创建项目:如需创建项目,您需要 Project Creator 角色 (roles/resourcemanager.projectCreator),该角色包含 resourcemanager.projects.create 权限。了解如何授予 角色。
    • 创建 Google Cloud 项目:

      gcloud projects create PROJECT_ID

      将 PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

    • 选择您创建的 Google Cloud 项目:

      gcloud config set project PROJECT_ID

      将 PROJECT_ID 替换为您的 Google Cloud 项目名称。

  6. 如果您要使用现有项目来完成本指南, 请验证您是否拥有完成本指南所需的权限。如果您创建了新项目, 则您已拥有所需的权限。

  7. 验证是否已为您的 Google Cloud 项目启用结算功能。

  8. 启用 Sensitive Data Protection 和 Cloud KMS API(如果尚未启用):

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您 创建了项目,则您可能已通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。 了解如何授予角色。

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  9. 安装 Google Cloud CLI。

  10. 如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI。

  11. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  12. 创建或选择 Google Cloud 项目。

    选择或创建项目所需角色

    • 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授予角色的任何项目。
    • 创建项目:如需创建项目,您需要 Project Creator 角色 (roles/resourcemanager.projectCreator),该角色包含 resourcemanager.projects.create 权限。了解如何授予 角色。
    • 创建 Google Cloud 项目:

      gcloud projects create PROJECT_ID

      将 PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

    • 选择您创建的 Google Cloud 项目:

      gcloud config set project PROJECT_ID

      将 PROJECT_ID 替换为您的 Google Cloud 项目名称。

  13. 如果您要使用现有项目来完成本指南, 请验证您是否拥有完成本指南所需的权限。如果您创建了新项目, 则您已拥有所需的权限。

  14. 验证是否已为您的 Google Cloud 项目启用结算功能。

  15. 启用 Sensitive Data Protection 和 Cloud KMS API(如果尚未启用):

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您 创建了项目,则您可能已通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。 了解如何授予角色。

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com

所需的角色

如需获得创建封装的 AES 密钥所需的权限,请让管理员向您授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。

您也可以通过自定义 角色或其他预定义 角色来获取所需的权限。

创建密钥环和密钥

在开始此过程之前,请确定您希望 Sensitive Data Protection 在何处处理去标识化和重标识请求。创建 Cloud KMS 密钥时,您必须将其存储在 global 中,或者存储在您将用于 Sensitive Data Protection 请求的同一区域中。 否则,Sensitive Data Protection 请求将失败。

您可以在 Sensitive Data Protection 位置中找到受支持位置的列表。请记下所选区域的名称(例如 us-west1)。

此步骤使用 global 作为所有 API 请求的位置。如果要使用其他区域,请将 global 替换为区域名称。

  1. 创建密钥环:

    gcloud kms keyrings create "dlp-keyring" \
        --location "global"
    
  2. 创建密钥:

    gcloud kms keys create "dlp-key" \
        --location "global" \
        --keyring "dlp-keyring" \
        --purpose "encryption"
    
  3. 列出密钥环和密钥:

    gcloud kms keys list \
        --location "global" \
        --keyring "dlp-keyring"
    

    您将获得以下输出:

    NAME: projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key
    PURPOSE: ENCRYPT_DECRYPT
    ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION
    PROTECTION_LEVEL: SOFTWARE
    LABELS:
    PRIMARY_ID: 1
    PRIMARY_STATE: ENABLED
    

    在此输出中,PROJECT_ID 是您的项目 ID。

    NAME 的值是 Cloud KMS 密钥的完整资源名称。请记下此值,因为去标识化和重标识请求需要此值。

创建采用 Base64 编码的 AES 密钥

本部分介绍如何创建高级加密标准 (AES) 密钥并采用 base64 格式进行编码。

  1. 创建 128 位、192 位或 256 位 AES 密钥。以下命令使用 openssl 在当前目录中创建一个 256 位密钥:

    openssl rand -out "./aes_key.bin" 32
    

    文件 aes_key.bin 已添加到当前目录。

  2. 将 AES 密钥编码为 base64 字符串:

    base64 -i ./aes_key.bin
    

    您将看到类似于以下内容的输出:

    uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=
    

使用 Cloud KMS 密钥封装 AES 密钥

本部分介绍如何使用您在 创建密钥环和密钥中创建的 Cloud KMS 密钥来封装您在 创建采用 Base64 编码的 AES 密钥中创建的采用 Base64 编码的 AES 密钥。

如需封装 AES 密钥,请使用 curl 向 Cloud KMS API projects.locations.keyRings.cryptoKeys.encrypt 方法发送以下请求:

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key:encrypt" \
    --request "POST" \
    --header "Authorization:Bearer $(gcloud auth application-default print-access-token)" \
    --header "content-type: application/json" \
    --data "{\"plaintext\": \"BASE64_ENCODED_AES_KEY\"}"

替换以下内容:

您从 Cloud KMS 获得的响应类似于以下 JSON:

{
  "name": "projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key/cryptoKeyVersions/1",
  "ciphertext": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=",
  "ciphertextCrc32c": "901327763",
  "protectionLevel": "SOFTWARE"
}

在此输出中,PROJECT_ID 是您的项目 ID。

请注意响应中的 ciphertext 值。 这是封装的密钥。

后续步骤