密钥导入

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

简介

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

  • 您可以导入到 Cloud KMS 中的 Cloud HSM 密钥或软件密钥。
  • 密钥材料会进行封装以便在传输过程中受到保护。您可以使用 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 中的数据。

后续步骤