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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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

您可以创建客户主键(CMK) 与您提供的关键材料。

CMK 是主密钥的逻辑表示。其中包含密钥材料用于加密和解密数据,此外,除了其密钥标识符和其他元数据。当您 时创建 CMK默认情况下,Amazon KMS为该 CMK 生成密钥材料。但是,您可以创建不带密钥材料的 CMK,然后将自己的密钥材料导入该 CMK 中,这个功能通常被称为“自带密钥 (BYOK)”。

注意

Amazon KMS不支持解密任何Amazon KMS密文Amazon KMS,即使密文是在带已导入密钥材料的 CMK 下加密的。Amazon KMS不会发布此任务所需的密文格式,并且格式可能会更改,恕不另行通知。

只有 Amazon KMS 密钥存储中的对称 CMK 才支持导入的密钥材料。非对称 CMK自定义密钥存储中的 CMK 不支持此功能。

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

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

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

  • 在 Amazon 中为密钥材料设置过期时间,并手动删除它,但也可以使其在未来再次可用。相比之下,计划密钥删除需要 7 到 30 天的等待期限,之后,您不能恢复已删除的 CMK。

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

如需了解带有导入密钥材料的 CMK 与带有 Amazon KMS 生成的密钥材料的 CMK 之间的重要区别,请参阅关于导入的密钥材料

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

关于导入的密钥材料

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

您可以生成关键材料

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

无法更改关键材料

当您将密钥材料导入 CMK 中时,该 CMK 将与该密钥材料永久关联。您可以重新导入相同的密钥材料,但不能将不同的密钥材料导入该 CMK。而且,您不能为具有导入密钥材料的 CMK 启用自动密钥轮换。但是,您可以手动轮换带有导入密钥材料的 CMK。

无法使用任何其他 CMK 解密

在 CMK 下加密数据时,密文无法使用其他任何 CMK 解密,即使您将相同的密钥材料导入其他 CMK 中。这是Amazon KMS客户主密钥。

唯一的例外是多区域密钥材料,它们被设计为可互操作。有关详细信息,请参阅 为什么不是所有带导入的密钥材料的 CMK 具有互操作性?

无可移植性或托管功能

密文Amazon KMS产品不可移动。Amazon KMS不支持解密任何Amazon KMS密文Amazon KMS,即使密文是在带已导入密钥材料的 CMK 下加密的。Amazon KMS不会发布此任务所需的密文格式,并且格式可能会更改,恕不另行通知。

此外,您无法使用任何Amazon工具,例如Amazon Encryption SDK或者Amazon S3 客户端加密, 以解密Amazon KMS密文。

因此,您无法使用带有导入密钥材料的密钥来支持密钥托管安排,在这种情况下,对密钥材料具有条件访问权限的授权第三方可以解密Amazon KMS。要支持密钥托管,请使用Amazon Encryption SDK来加密您的邮件,该密钥独立于Amazon KMS。

您对可用性和耐用性负责

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

  • 如果您为导入的密钥材料设置了过期时间,那么 Amazon KMS 将在密钥材料过期后将其删除。Amazon KMS 不会删除该 CMK 或其元数据。您不能为由 Amazon KMS 生成的密钥材料设置过期时间。

  • 如果您手动删除导入的密钥材料,Amazon KMS 将删除密钥材料,但不删除该 CMK 或其元数据。相比之下,计划密钥删除需要 7 到 30 天的等待期限,之后,Amazon KMS 将删除密钥材料以及该 CMK 的所有元数据。

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

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

导入密钥材料的权限

要使用导入的密钥材料创建和管理 CMK,用户需要在此过程中执行操作的权限。您可以提供kms:GetParametersForImportkms:ImportKeyMaterial, 和kms:DeleteImportedKeyMaterial权限创建 CMK 时使用密钥策略中的权限。这些区域有:kms:ImportKeyMaterial权限不包含在密钥管理员的默认权限中,因此您需要手动添加该权限。

要创建带已导入密钥材料的 CMK,委托人需要以下权限。

  • KMS: 创建密钥(IAM 策略)

    • 要将此权限限制为具有导入密钥材料的 CMK,请使用kms:KeyOrigin策略条件,值为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: 获取用于导入的参数(密钥策略或 IAM 策略)

  • KMS: 进口钥匙材料(密钥策略或 IAM 策略)

要重新导入导入的密钥材质,主体需要KMS: 获取用于导入的参数KMS: 进口钥匙材料权限。

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

如何导入密钥材料

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

  1. 创建不带密钥材料的对称 CMK— 要开始导入密钥材料,首先请创建一个对称 CMK,其EXTERNAL。这表明密钥材料在 Amazon KMS 外部生成,并阻止 Amazon KMS 为 CMK 生成密钥材料。在后面的步骤中,您会将自己的密钥材料导入此 CMK 中。

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

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

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

Amazon KMS将一个条目记录在Amazon CloudTrail记录时创建 CMK下载公有密钥和导入令牌, 和导入密钥材料。Amazon KMS当您删除导入的关键材质或Amazon KMS 删除已过期的密钥材料

如何重新导入密钥材料

如果您管理带导入的密钥材料的 CMK,则可能需要重新导入密钥材料,原因是密钥材料已过期,或者密钥材料已被意外删除或丢失。

您必须重新导入最初导入 CMK 的相同的密钥材料。您不能将不同的密钥材料导入 CMK。Amazon KMS 也无法为创建时未带密钥材料的 CMK 创建密钥材料。

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

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

  • 如果 CMK 包含密钥材料,则必须先删除现有密钥材料,然后再重新导入密钥材料。

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

如何查看带导入密钥材料的 CMK

在创建不带密钥材料的 CMK 时,CMK 的 Origin 属性的值为 EXTERNAL,并且它不能更改。无法将专为使用导入的密钥材料而设计的密钥转换为使用 Amazon KMS 提供的密钥材料的密钥。

您可以在 Amazon KMS 控制台中或使用 Amazon KMS API 识别需要导入的密钥材料的 CMK。您还可以使用控制台或 API 查看密钥材料的属性,例如它是否以及何时过期。

识别带导入密钥材料的 CMK(控制台)

  1. 打开Amazon KMS控制台位于https://console.aws.amazon.com/kms

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

  3. 使用以下任一方法可查看 CMK 的 Origin 属性。

    • 要向 CMK 表添加 Origin (源) 列,请在右上角选择 Settings (设置) 图标。选择 Origin (源),然后选择 Confirm (确认)Origin (源) 列可让您轻松标识带 EXTERNAL 源属性值的 CMK。

    • 要查找特定 CMK 的 Origin 属性的值,请选择该 CMK 的密钥 ID 或别名。然后选择加密配置选项卡。这些选项卡位于常规配置部分。

  4. 要查看有关密钥材料的详细信息,请选择密钥材料选项卡。此选项卡仅对于具有导入密钥材料的 CMK 显示在详情页面上。

要识别带导入的密钥材料的 CMK(Amazon KMSAPI)

使用 DescribeKey 操作。此响应包含Origin属性、到期模型和到期日期,如以下示例所示。

$ 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, "MultiRegion": false, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "PendingImport", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }