创建外部密钥

本页介绍了如何在 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,您需要创建 EKM 连接
  • 可选:如需使用 gcloud CLI,请准备好环境。

    In the Google Cloud console, activate Cloud Shell.

    Activate 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. Key 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 标志以将新密钥版本设置为主版本。

后续步骤