导入 AWS Key Management Service (AWS KMS) 中的密钥材料 - AWS Key Management Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

导入 AWS Key Management Service (AWS KMS) 中的密钥材料

您可以创建一个 客户主密钥 (CMK)和您提供的关键材料。

A CMK 是 主密钥. 它包含 关键材料 除了用于加密和数据 关键标识符 和其他元数据。当你 创建 CMK,默认情况下, AWS KMS 为我们 CMK. 但是你可以创建一个 CMK 无需关键材料,然后将您自己的关键材料导入 CMK,一种通常被称为“使用您自己的密钥”(BYOK)的功能。

注意

使用进口关键材料制作的密文不可携带。您不能对加密 CMK 使用 AWS KMS.

只支持对称导入的关键材料 CMKs 在 AWS KMS 重点商店。在上不支持 非对称 CMKs 或 CMKs 在 定制主要商店.

在使用导入的密钥材料时,您仍然需要对密钥材料负责,并允许 AWS KMS 使用其副本。出于以下一个或多个原因,您可以选择执行该操作:

  • 证明您使用符合您要求的熵源生成了密钥材料。

  • 将来自您自己的基础设施的密钥材料与 AWS 服务配合使用,并使用 AWS KMS 管理该密钥材料在 AWS 内的生命周期。

  • 在 AWS 中为密钥材料设置过期时间,并手动删除它,但也可以使其在未来再次可用。相反, 计划密钥删除 需要7至30天的等待期,此后您无法恢复已删除的 CMK.

  • 拥有密钥材料的原始备份,并将其保存在 AWS 外部,以在密钥材料的整个生命周期内获得额外的持久性和灾难恢复能力。

有关 CMKs 进口关键材料和 AWS KMS,见 关于导入的密钥材料.

您导入的密钥材料必须是 256 位对称加密密钥。

关于导入的密钥材料

在决定将密钥材料导入 AWS KMS 之前,您应了解导入密钥材料的以下特征。

您生成关键材料

您负责使用符合您安全要求的随机来源生成256位关键材料。

无法更改关键物料

当您将关键材料导入 CMK, CMK 与该关键材料永久相关。您可以 重新导入相同的关键材料但是您不能将不同的关键材料导入 CMK. 此外,您不能 启用自动键旋转 适用于 CMK 进口关键材料。但是,您可以 手动旋转 CMK 进口关键材料。

不能与其他任何文件一起进行 CMK

在KMS下加密数据时 CMK,密文不能用任何其他 CMK. 即使您将相同的关键材料导入不同的 CMK.

无可移植性或托管功能

密文 AWS KMS 生产不是便携式的。它们包括元数据和其他将每个密文与 CMK 用来加密它。您不能对 AWS KMS 密文外部 AWS KMS 即使您有关键材料。您不能使用任何 AWS 工具,例如 AWS 加密 SDKAmazon S3 客户端加密,以对 AWS KMS 密文。

因此,您不能将密钥与导入的密钥材料一起使用,以支持密钥托管安排,授权第三方有条件访问密钥材料可以 AWS KMS. 要支持密钥托管,请使用 AWS 加密 SDK 在密钥下加密您的信息,密钥独立于 AWS KMS.

您有责任确保产品的可用性和耐久性

您需要对密钥材料的整体可用性和持久性负责。AWS KMS 旨在确保导入密钥材料的高可用性。但该服务不会将导入密钥材料的持久性维持在与代表您生成的密钥材料相同的水平。在以下情况下,这种差异是有意义的:

  • 当您为导入的关键材料设置失效时间时, AWS KMS 在关键物料过期后将其删除。 AWS KMS 不会删除 CMK 或其元数据。您不能为由 AWS KMS 生成的密钥材料设置过期时间。

  • 当你 手动删除导入的关键物料, AWS KMS 删除关键物料,但不删除 CMK 或其元数据。相反, 计划密钥删除 需要7至30天的等待期,此后 AWS KMS 删除关键材料和所有 CMK的元数据。

  • 万一出现某些影响该服务的区域级故障(如完全断电),AWS KMS 无法自动还原导入的密钥材料。但是, AWS KMS 可以恢复 CMK 及其元数据。

要在发生与这些事件类似的事件后还原密钥材料,您必须在您控制的系统中保留密钥材料的副本。然后,您可以将其重新导入 CMK.

导入关键物料的权限

要通过导入的关键物料创建和管理CMK,用户需要在此流程中操作的权限。您可以提供 kms:GetParameterForImport, kms:ImportKeyMaterial、和 kms:DeleteImportedKeyMaterial 创建CMK时关键策略中的权限。的 kms:ImportKeyMaterial 权限不包括在关键管理员的默认权限中,因此您需要手动添加。

创建 CMKs 使用导入的关键材料时,委托人需要以下权限。

  • kms:创建密钥 (IAM 政策)

    • 将此权限限制为 CMKs 使用进口关键材料,使用 kms:主要来源 策略条件,价值为 EXTERNAL.

      { "Version": "2012-10-17", "Statement": { "Sid": "IAM policy to create CMKs with no key material" "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111122223333:role/KMSAdminRole" }, "Action": "kms:CreateKey", "Condition": { "StringEquals": { "kms:KeyOrigin": "EXTERNAL" } } }
  • kms:GetParameters导入 (关键政策或 IAM 政策)

  • kms:导入关键材料 (关键政策或 IAM 政策)

要重新导入进口的关键材料,委托人需要 kms:GetParameters导入kms:导入关键材料 权限。

要删除导入的关键材料,主要需要 kms:删除导入的关键材料 权限。

如何导入密钥材料

以下概述说明了如何将密钥材料导入 AWS KMS。如需了解该过程中每个步骤的更多详细信息,请参阅相应主题。

  1. 创建对称 CMK 没有关键材料 – 要开始导入关键材料,首先要创建对称 CMK 其 来源EXTERNAL。这表明关键物料生成于 AWS KMS 并防止 AWS KMS 从生成关键材料 CMK. 在后面的步骤中,您将把自己的关键材料导入此 CMK.

  2. 下载公有密钥和导入令牌 – 在完成步骤 1 后,请下载公有密钥和导入令牌。这些项目可以保护将密钥材料导入 AWS KMS 的过程。

  3. 加密密钥材料 – 使用在步骤 2 中下载的公有密钥加密您在自己的系统上创建的密钥材料。

  4. 导入密钥材料 – 上传您在步骤 3 中创建的已加密的密钥材料以及您在步骤 2 中下载的导入令牌。

AWS KMS 在你的 AWS CloudTrail 当您 创建 CMK, 下载公共密钥并导入标记、和 导入关键物料。 AWS KMS 当您删除导入的关键材料或 AWS KMS 删除过期的关键物料.

如何重新导入密钥材料

如果你管理一个 CMK 对于导入的关键材料,您可能需要重新导入关键材料,原因可能是关键材料已过期,或关键材料意外删除或丢失。

您必须重新导入与原先导入至 CMK. 您不能将不同的关键材料导入 CMK. 此外, AWS KMS 不能为 CMK 而没有关键材料。

要重新导入密钥材料,请使用您首次用来导入密钥材料的相同过程,但以下情况除外。

  • 使用现有 CMK,而不是创建新的 CMK. 您可以跳过导入过程的步骤 1

  • 如果 CMK 包含关键材料,您必须 删除现有关键材料 然后再重新导入关键材料。

每次将关键材料导入 CMK,您需要 下载并使用新的包装密钥并导入标记 为 CMK. 包装过程不会影响密钥材料的内容,因此,您可以使用不同的包装密钥(和不同的导入令牌)来导入相同的密钥材料。

如何识别 CMKs 进口关键材料

当您创建一个 CMK 没有关键材料, Origin 的 CMK 是 EXTERNAL,且不能更改。无法将专为使用导入的密钥材料而设计的密钥转换为使用 AWS KMS 提供的密钥材料的密钥。

您可以识别 CMKs 需要进口关键材料, AWS KMS 或使用 AWS KMS API。

识别 Origin 特性 CMKs (控制台)

  1. https://console.amazonaws.cn/kms 打开 AWS KMS 控制台。

  2. 要更改 AWS 区域,请使用页面右上角的区域选择器。

  3. 使用以下任一技巧来查看 Origin 您的 CMKs.

    • 添加 来源 到您的 CMK 咖啡桌,在右上角选择 设置 图标。选择 Origin (源),然后选择 Confirm (确认)。的 来源 方便识别 CMKs 含有 EXTERNAL 来源属性值。

    • 要查找 Origin 特定 CMK,选择密钥ID或别名 CMK. Origin 属性值显示在 General configuration (常规配置) 部分中。

识别 Origin 特性 CMKs (AWS KMS API)

使用 DescribeKey 操作。回答包括 Origin 的 CMK,如下例所示。

$ aws kms describe-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "KeyMetadata": { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Origin": "EXTERNAL", "ExpirationModel": "KEY_MATERIAL_EXPIRES" "ValidTo": 1568894400.0, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": 1568289600.0, "Enabled": false, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "PendingImport", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }