创建外部密钥

本页面介绍如何在 Cloud Key Management Service (Cloud KMS) 中的现有密钥环上创建 Cloud External Key Manager (Cloud EKM) 密钥。

准备工作

在完成本页面上的任务之前,您需要做好以下准备:

  • 包含 Cloud KMS 资源的 Google Cloud 项目资源。我们建议您为 Cloud KMS 资源使用不含任何其他 Google Cloud 资源的单独项目。

    请记下项目的 Cloud EKM 服务账号。在以下示例中,将 PROJECT_NUMBER 替换为您的 Google Cloud 项目的项目编号。每次您使用 Google Cloud 控制台创建 Cloud EKM 密钥时,也会看到此信息。

    service-PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com
    
  • 您要在其中创建密钥的密钥环的名称和位置。 请在靠近您的其他资源且支持 Cloud EKM 的位置选择密钥环。如需查看可用位置及其支持的保护级别,请参阅 Cloud KMS 位置。如需创建密钥环,请参阅创建密钥环

  • 如需创建手动管理的外部密钥,您必须在外部密钥管理合作伙伴系统中创建该密钥。具体步骤因外部密钥管理合作伙伴而异。

    1. 如有必要,请向您的外部密钥管理合作伙伴请求访问权限。

    2. 在外部密钥管理合作伙伴系统中创建对称或不对称密钥,或选择现有密钥。

      在您计划用于 Cloud EKM 密钥的 Google Cloud 区域附近的区域中创建密钥。这有助于缩短 Google Cloud 项目与外部密钥管理合作伙伴之间的网络延迟时间。否则,您可能会遇到失败操作次数增加的情况。如需了解详情,请参阅 Cloud EKM 和区域

    3. 记下外部密钥的 URI 或密钥路径。您需要此信息来创建 Cloud EKM 密钥。

  • 在外部密钥管理合作伙伴系统中,向 Google Cloud 服务帐号授予使用您的外部密钥的权限。将服务帐号视为电子邮件地址。EKM 合作伙伴使用的术语可能与本主题中使用的术语不同。

  • 如需通过 VPC 密钥创建 EKM,您需要通过 VPC 连接创建 EKM

  • 可选:如需使用 gcloud CLI,请准备您的环境。

    gcloud CLI

    在 Google Cloud 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

所需的角色

如需获取创建密钥所需的权限,请让管理员向您授予项目或父资源的 Cloud KMS Admin (roles/cloudkms.admin) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

此预定义角色包含创建密钥所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需创建密钥,您需要拥有以下权限:

  • cloudkms.cryptoKeys.create
  • cloudkms.cryptoKeys.get
  • cloudkms.cryptoKeys.list
  • cloudkms.cryptoKeyVersions.create
  • cloudkms.cryptoKeyVersions.get
  • cloudkms.cryptoKeyVersions.list
  • cloudkms.keyRings.get
  • cloudkms.keyRings.list
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
  • 如需检索公钥,请执行以下操作: cloudkms.cryptoKeyVersions.viewPublicKey

您也可以使用自定义角色或其他预定义角色来获取这些权限。

创建协调外部密钥

控制台

  1. 在 Google Cloud 控制台中,转到密钥管理页面。

    前往 Key Management

  2. 点击您要为其创建密钥的密钥环的名称。

  3. 点击创建密钥

  4. 对于密钥名称,请输入密钥的名称。

  5. 对于保护级别,请选择外部

  6. 对于外部密钥管理器 (EKM) 连接类型,选择通过 VPC

  7. 通过 VPC 连接的 EKM 部分,选择一个连接。

    如果您没有 EkmConnection.list 权限,则必须手动输入连接资源名称。

  8. 点击继续

  9. 密钥材料部分,您应该会看到一条消息,说明 Cloud KMS 请求了新密钥材料并在 EKM 中生成。如果您看到密钥路径字段,则表示您选择的通过 VPC 连接的 EKM 未配置为协调外部密钥。

  10. 根据需要配置其余密钥设置,然后点击创建

Cloud EKM 向您的 EKM 发送请求以创建新密钥。在 EKM 返回密钥路径且 Cloud EKM 密钥可用之前,密钥显示为待生成

gcloud

如需在命令行上使用 Cloud KMS,请先安装或升级到最新版本的 Google Cloud CLI

gcloud kms keys create KEY_NAME \
    --keyring KEY_RING \
    --location LOCATION \
    --purpose PURPOSE \
    --default-algorithm ALGORITHM \
    --protection-level "external-vpc" \
    --crypto-key-backend VPC_CONNECTION_RESOURCE_ID

替换以下内容:

  • KEY_NAME:密钥的名称。
  • KEY_RING:包含相应密钥的密钥环的名称。
  • LOCATION:密钥环的 Cloud KMS 位置。
  • PURPOSE:密钥的用途
  • ALGORITHM:用于密钥的算法,例如 google-symmetric-encryption。如需查看受支持算法的列表,请参阅算法
  • VPC_CONNECTION_RESOURCE_ID:EKM 连接的资源 ID。

如需了解所有标志和可能值,请使用 --help 标志运行命令。

通过 VPC 密钥创建手动管理的 Cloud EKM

控制台

  1. 在 Google Cloud 控制台中,转到密钥管理页面。

    前往 Key Management

  2. 点击您要为其创建密钥的密钥环的名称。

  3. 点击创建密钥

  4. 对于密钥名称,请输入密钥的名称。

  5. 对于保护级别,请选择外部

  6. 对于外部密钥管理器 (EKM) 连接类型,选择通过 VPC

  7. 通过 VPC 连接的 EKM 部分,选择一个连接。

    请注意,如果您没有 EkmConnection.list 权限,则必须手动输入连接资源名称。

  8. 点击继续

  9. 密钥路径字段中,输入外部密钥的路径。

  10. 根据需要配置其余密钥设置,然后点击创建

gcloud

如需在命令行上使用 Cloud KMS,请先安装或升级到最新版本的 Google Cloud CLI

gcloud kms keys create KEY_NAME \
    --keyring KEY_RING \
    --location LOCATION \
    --purpose PURPOSE \
    --default-algorithm ALGORITHM \
    --protection-level "external-vpc" \
    --skip-initial-version-creation \
    --crypto-key-backend VPC_CONNECTION_RESOURCE_ID

替换以下内容:

  • KEY_NAME:密钥的名称。
  • KEY_RING
  • LOCATION:密钥环的 Cloud KMS 位置。
  • PURPOSE:密钥的用途
  • ALGORITHM:用于密钥的算法,例如 google-symmetric-encryption。如需查看受支持算法的列表,请参阅算法
  • VPC_CONNECTION_RESOURCE_ID:EKM 连接的资源 ID。

如需了解所有标志和可能值,请使用 --help 标志运行命令。

通过互联网密钥创建手动管理的 Cloud EKM

控制台

  1. 在 Google Cloud 控制台中,转到密钥管理页面。

    前往 Key Management

  2. 点击您要为其创建密钥的密钥环的名称。

  3. 点击创建密钥

  4. 对于密钥名称,请输入密钥的名称。

  5. 对于保护级别,请选择外部

  6. 对于外部密钥管理器 (EKM) 连接类型,选择通过互联网

  7. 点击继续

  8. 密钥 URI 字段中,输入外部密钥的路径。

  9. 根据需要配置其余密钥设置,然后点击创建

gcloud

如需在命令行上使用 Cloud KMS,请先安装或升级到最新版本的 Google Cloud CLI

  1. 创建一个空外部密钥:

    gcloud kms keys create KEY_NAME \
      --keyring KEY_RING \
      --location LOCATION \
      --purpose PURPOSE \
      --protection-level external \
      --skip-initial-version-creation \
      --default-algorithm ALGORITHM
    

    替换以下内容:

    • KEY_NAME:密钥的名称。
    • KEY_RING:包含相应密钥的密钥环的名称。
    • LOCATION:密钥环的 Cloud KMS 位置。
    • PURPOSE:密钥的用途
    • ALGORITHM:用于密钥的算法,例如 google-symmetric-encryption。如需查看受支持算法的列表,请参阅算法

    如需了解所有标志和可能值,请使用 --help 标志运行命令。

  2. 为您刚刚创建的密钥创建新的密钥版本:

    gcloud kms keys versions create \
      --key KEY_NAME \
      --keyring KEY_RING \
      --location LOCATION \
      --external-key-uri EXTERNAL_KEY_URI
    

    EXTERNAL_KEY_URI 替换为外部密钥的 URI。

    对于对称密钥版本,请添加 --primary 标志以将新密钥版本设置为主要版本。

后续步骤