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

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

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

您可以创建包含您提供的密钥材料的 客户主密钥 (CMK)。

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

注意

AWS KMS 不支持解密 AWS KMS 以外的任何 AWS KMS 密文,即使密文是在具有导入的密钥材料的 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中,也是如此。

无可移植性或 ecrow 功能

生成的密文不可移植。AWS KMS 不支持在 AWS KMS 外部解密任何 AWS KMS 密文,即使使用导入的密钥材料在 AWS KMS 下加密了密文也是如此。CMK 不发布该任务所需的密文格式,并且格式可能会在不另行通知的情况下更改。AWS KMS

此外,您不能使用任何 AWS 工具(如 AWS 加密 SDK 客户端加密Amazon S3)来解密 密文。AWS KMS

因此,您无法将密钥与导入的密钥材料结合使用以支持密钥协议,其中具有对密钥材料的有条件访问的授权第三方可以在 AWS KMS 外部解密某些密文。要支持密钥 escrow,请使用 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 中。

用于导入密钥材料的权限

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

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

  • kms:CreateKey(IAM 策略)

    • 要使用导入的密钥材料将此权限限制为 CMKs,请使用值为 kms:KeyOriginEXTERNAL 策略条件。

      { "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:GetParametersForImport(密钥策略或 IAM 策略)

  • kms:ImportKeyMaterial(密钥策略或 IAM 策略)

要重新导入导入导入导入的密钥材料,委托人需要 kms:GetParametersForImportkms:ImportKeyMaterial 权限。

要删除导入的密钥材料,委托人需要 kms:DeleteImportedKeyMaterial 权限。

如何导入密钥材料

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

  1. 创建不带密钥材料的对称 CMK – 要开始导入密钥材料,请先创建 CMKorigin (源) 的对称 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 API 确定需要导入的密钥材料的 AWS KMS。您还可以查看密钥材料的属性,例如是否以及何时通过使用控制台或 APIs 过期。

使用导入的密钥材料识别 CMKs (控制台)

  1. https://console.aws.amazon.com/kms 打开 AWS KMS 控制台。

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

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

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

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

  4. 要查看有关密钥材料的详细信息,请选择 Key material (密钥材料) 选项卡。对于已导入密钥材料的 CMKs,此选项卡仅显示在详细信息页面上。

使用导入的密钥材料识别 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" ] } }