密钥导入

本主题介绍了有关将密钥作为新密钥版本导入 Cloud Key Management Service 的概念信息。如需查看分步说明,请参阅导入密钥版本

简介

您可能正在使用在本地或外部密钥管理系统中创建的现有加密密钥。如果您将应用迁移到 Google Cloud,或者向现有 Google Cloud 应用添加加密支持,则可以将相关密钥导入 Cloud KMS。

  • 您可以导入 Cloud HSM 密钥或 Cloud KMS 中的软件密钥。
  • 密钥材料会进行封装以便在传输过程中受到保护。您可以使用 Google Cloud CLI 自动封装密钥,也可以手动封装密钥
  • Google Cloud 只能在导入作业的范围内访问封装密钥。对于 Cloud HSM 密钥,封装密钥永不位于 Cloud HSM 之外。

本主题详细介绍有关导入密钥的限制和要求,并简要介绍了密钥导入的工作原理

限制和要求

查看这些部分以确认您的密钥可以导入到 Cloud KMS 或 Cloud HSM 密钥中。

支持的密钥格式

  • 用于加密的对称密钥必须是 16 个字节(仅适用于原始对称加密)或 32 个字节的二进制数据,并且必须不进行编码。如果密钥采用十六进制编码或 base64 编码,则必须先对其进行解码,然后再尝试导入。

  • 用于签名的对称密钥(MAC 密钥)的长度必须等于使用的加密哈希函数的输出长度(例如 HMAC-SHA256 密钥的长度必须为 32 个字节),并且不得进行编码。如果您的密钥采用十六进制编码或 base64 编码,则必须先对其进行解码,然后再尝试导入。

  • 用于加密或签名的非对称密钥必须采用 PKCS #8 格式,且必须经过 DER 编码。PCKS #8 格式在 RFC 5208 中定义。DER 编码在 International Telecommunications Union X.680 中定义。非对称密钥必须使用 Cloud KMS 支持的其中一个长度和算法组合

密钥一经创建,密钥的某些方面(例如密钥的长度)便无法更改。在这些情况下,密钥无法导入到 Cloud KMS 中。

要验证密钥并重新设置密钥的格式以进行导入,请参阅设置密钥的格式以进行导入

支持的保护级别

您可以将密钥的保护级别设置为 SOFTWAREHSM,从而将密钥导入 Cloud KMS 密钥或 Cloud HSM 密钥。Cloud HSM 密钥会产生额外的费用。您无法导入 Cloud External Key Manager 密钥(保护级别为 EXTERNAL 的密钥)。

支持的封装密钥大小

创建导入作业时,您可以通过配置导入作业的导入方法来控制保护向 Google 传输的密钥的封装密钥的大小。封装密钥的默认大小为 3072。如果您有特定要求,可以将导入作业配置为使用 4096 位密钥。

您可以详细了解用于密钥封装的算法或了解配置导入作业

密钥导入的工作原理

本部分介绍导入密钥时发生的情况。如果您使用自动封装或手动封装密钥,该流程的某些部分会有所不同。建议使用自动封装。如需获取具体说明,请参阅导入密钥版本。如需查看有关在导入前手动封装密钥的具体说明,请参阅在 Linux 上使用 OpenSSL 封装密钥

下图展示了使用自动密钥封装的密钥导入过程。本部分介绍图中显示的各个阶段。

本部分中介绍的导入流程

  1. 准备导入密钥。

    1. 首先,创建目标密钥环和密钥,其中最终将包含导入作业和导入的密钥材料。此时,目标密钥不包含任何密钥版本。

    2. 接下来创建导入作业。导入作业定义导入的密钥材料的目标密钥环和密钥。导入作业还定义了导入方法,这是用于创建封装密钥以在导入请求期间保护密钥材料的算法。

      • 公钥用于封装要在客户端上导入的密钥。
      • 私钥存储在 Google Cloud 中,用于在密钥到达 Google Cloud 项目后解封装。

      这种分离会导致 Google 无法在导入作业范围之外解封装您的密钥材料。

    3. 在密钥传输到 Google 之前,必须先对其进行加密封装。大多数用户可以使用 gcloud CLI 自动封装、传输和导入密钥,如下一步中所述。如果您有手动封装密钥的合规性或监管要求,则可以立即执行此操作。如需在本地系统中手动封装密钥,请执行以下操作:

      1. 配置 OpenSSL。
      2. 下载与导入作业关联的封装密钥(每个导入作业一次)。
      3. 设置多个环境变量并封装密钥(每个密钥一次)。
  2. 在导入作业到期之前,您可以在最多三天内使用它发出导入请求以导入一个或多个密钥。在导入请求期间:

    1. 如果未手动封装密钥,Google Cloud CLI 会将导入作业的公钥从 Google Cloud 下载到本地系统,然后使用公钥以及与客户端关联的私钥来封装本地密钥材料。
    2. 封装的密钥材料将传输到 Google Cloud 项目。
    3. 密钥材料使用导入作业的私钥进行解封装,并作为新版本的目标密钥插入目标密钥环。这是一项原子操作。
    4. 对于对称密钥,请将导入的密钥版本设置为主密钥版本。

导入请求成功完成后,您可以使用导入的密钥版本来保护 Google Cloud 中的数据。

后续步骤