步骤 4:导入密钥材料 - AWS Key Management Service

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

步骤 4:导入密钥材料

加密密钥材料之后,您可以导入密钥材料,以将其与 AWS KMS key 配合使用。要导入密钥材料,请上传在步骤 3:加密密钥材料中加密的密钥材料以及在步骤 2:下载包装公有密钥和导入令牌中下载的导入令牌。您必须将密钥材料导入您在下载公有密钥和导入令牌时指定的同一 KMS 密钥中。成功导入密钥材料时,KMS 密钥的密钥状态会更改为 Enabled,您可以在加密操作中使用 KMS 密钥。

当您导入密钥材料时,您可以为密钥材料设置可选的过期日期。当密钥材料过期后,AWS KMS 将删除密钥材料,并且 KMS 密钥将变为不可用。要在加密操作中使用该 KMS 密钥,您必须重新导入相同的密钥材料。导入密钥材料后,无法设置、更改或取消当前导入的到期日期。要更改这些值,您必须删除重新导入相同的密钥材料。

要导入密钥材料,您可以使用 AWS KMS 控制台或 ImportKeyMaterial API。您也可以通过发出 HTTP 请求,或使用 AWS 开发工具包AWS Command Line InterfaceAWS Tools for PowerShell 直接使用 API。

导入密钥材料时,ImportKeyMaterial 条目将添加到您的 AWS CloudTrail 日志中,以记录 ImportKeyMaterial 操作。无论您使用 AWS KMS 控制台还是 AWS KMS API,CloudTrail 条目都是相同的。

设置过期时间(可选)

导入 KMS 密钥的密钥材料时,可以将密钥材料的可选过期日期和时间设置为自导入之日起 365 天中的任意一天。当导入的密钥材料过期后,AWS KMS 会将其删除。此操作会将 KMS 密钥的密钥状态更改为 PendingImport,这将阻止在任何加密操作中使用该密钥。要使用 KMS 密钥,您必须重新导入原始密钥材料的副本

确保导入的密钥材料经常过期,可帮助您满足监管要求,但这样做会给在 KMS 密钥下加密的数据带来额外的风险。在您重新导入原始密钥材料的副本之前,包含过期密钥材料的 KMS 密钥不可用,并且在 KMS 密钥下加密的任何数据都不可访问。如果您出于任何原因未能重新导入密钥材料(例如,丢失原始密钥材料的副本),则 KMS 密钥将永久不可用,在 KMS 密钥下加密的数据将无法恢复。

为了降低这种风险,请确保导入的密钥材料副本可访问,并设计一个系统,以在密钥材料过期并中断您的 AWS 工作负载之前将其删除并重新导入。我们建议您针对导入的密钥材料的过期设置警报,这样您就有足够的时间在密钥材料过期之前重新导入密钥材料。您还可以使用 CloudTrail 日志来审计导入(和重新导入)密钥材料删除导入的密钥材料的操作,以及删除过期密钥材料的 AWS KMS 操作。

您无法将不同的密钥材料导入 KMS 密钥,AWS KMS 也无法还原、恢复或重现已删除的密钥材料。您可以通过编程定期删除重新导入已导入的密钥材料,而无需设置过期时间,但是保留原始密钥材料副本的要求相同。

在导入密钥材料时,确定导入的密钥材料是否以及何时过期。但是您可以开启和关闭过期时间,也可以通过删除和重新导入密钥材料来设置新的过期时间。使用 ImportKeyMaterialExpirationModel 参数开启过期功能(KEY_MATERIAL_EXPIRES)和关闭过期功能(KEY_MATERIAL_DOES_NOT_EXPIRE),使用 ValidTo 参数设置过期时间。自导入数据起的最大天数为 365 天;没有最短天数,但必须是未来时间。

重新导入密钥材料

如果您管理带有导入的密钥材料的 KMS 密钥,则可能需要重新导入密钥材料。您可以通过重新导入密钥材料替换过期或删除的密钥材料,或者更改密钥材料的到期模型或到期日期。

当您将密钥材料导入 KMS 密钥中时,该 KMS 密钥将与该密钥材料永久关联。您可以重新导入相同的密钥材料,但不能将不同的密钥材料导入该 KMS 密钥。您不能轮换密钥材料,AWS KMS 也无法为具有导入密钥材料的 KMS 密钥创建密钥材料。

您可以在可满足您的安全要求任何时间点重新导入密钥材料。您不必等到密钥材料达到或接近其过期时间。

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

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

  • 重新导入密钥材料时,您可以更改到期模型和到期日期。

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

导入密钥材料(控制台)

您可以使用 AWS Management Console导入密钥材料。

  1. 如果您在上传已包装的密钥材料页面上,请跳至 步骤 8

  2. 登录到 AWS Management Console,然后通过以下网址打开 AWS Key Management Service(AWS KMS)控制台:https://console.aws.amazon.com/kms

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

  4. 在导航窗格中,选择客户托管密钥

  5. 选择已为其下载公有密钥和导入令牌的 KMS 密钥的密钥 ID 或别名。

  6. 选择 Cryptographic configuration(加密配置)选项卡并查看其值。这些选项卡位于 General configuration(常规配置)部分下 KMS 密钥的详细信息页面上。

    您只能将密钥材料导入外部(导入密钥材料)的 KMS 密钥。有关创建带已导入密钥材料的 KMS 密钥的信息,请参阅 导入密钥的 AWS KMS 密钥材料

  7. 选择密钥材料选项卡,然后选择导入密钥材料密钥材料选项卡仅针对值为外部(导入密钥材料)的 KMS 密钥显示。

    如果您下载了密钥材料、导入令牌并加密了密钥材料,请选择下一步

  8. 加密的密钥材料和导入令牌部分,执行以下操作。

    1. 包装的密钥材料下,选择选择文件。然后上传包含您的已包装(已加密)密钥材料的文件。

    2. 导入令牌下,选择选择文件。上传包含您已下载的导入令牌的文件。

  9. Expiration option (过期选项) 部分中,确定密钥材料是否过期。要设置到期日期和时间,请选择 Key material expires (密钥材料过期),并使用日历选择日期和时间。您可以指定的日期距当前日期和时间最多 365 天。

  10. 选择 Upload key material (上传密钥材料)

导入密钥材料 (AWS KMS API)

要导入密钥材料,请使用 ImportKeyMaterial 操作。以下示例使用 AWS CLI,但您可以使用受支持的任何编程语言。

要使用此示例,请执行以下操作:

  1. 1234abcd-12ab-34cd-56ef-1234567890ab 替换为您在下载公有密钥和导入令牌时指定的 KMS 密钥的密钥 ID。要标识 KMS 密钥,请使用其密钥 ID密钥 ARN。该操作不能使用别名别名 ARN

  2. EncryptedKeyMaterial.bin 替换为包含加密的密钥材料的文件的名称。

  3. ImportToken.bin 替换为包含导入令牌的文件的名称。

  4. 如果希望导入的密钥材料过期,请将 expiration-model 参数的值设置为其默认值 KEY_MATERIAL_EXPIRES,或省略 expiration-model 参数。然后,将 valid-to 参数的值替换为您希望密钥材料过期的日期和时间。日期和时间最长为请求时间起 365 天。

    $ aws kms import-key-material --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --encrypted-key-material fileb://EncryptedKeyMaterial.bin \ --import-token fileb://ImportToken.bin \ --expiration-model KEY_MATERIAL_EXPIRES \ --valid-to 2023-06-17T12:00:00-08:00

    如果不希望导入的密钥材料过期,请将 expiration-model 参数的值设置为 KEY_MATERIAL_DOES_NOT_EXPIRE,并从命令中省略 valid-to 参数。

    $ aws kms import-key-material --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --encrypted-key-material fileb://EncryptedKeyMaterial.bin \ --import-token fileb://ImportToken.bin \ --expiration-model KEY_MATERIAL_DOES_NOT_EXPIRE
提示

如果命令不成功,则可能会看到 KMSInvalidStateExceptionNotFoundException。您可以重试请求。