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

步骤 4:导入密钥材料

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

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

对于所有来源为 EXTERNAL 的 KMS 密钥,导入的第一个密钥材料将变为当前密钥材料并与之永久关联。来源为 EXTERNAL 的单区域对称加密密钥支持按需轮换。您可以将多个密钥材料关联到支持按需轮换的导入的密钥。必须使用 ImportKeyMaterial 操作将 importType 参数设置为 NEW_KEY_MATERIAL,才能将新的密钥材料与关联到 KMS 密钥。除非您执行 RotateKeyOnDemand 操作,此密钥材料不会与密钥永久关联。在此之前,此密钥材料将处于 PENDING_ROTATION 状态。可选 ImportType 参数的默认值为 EXISTING_KEY_MATERIAL。省略 ImportType 参数或将其指定为 EXISTING_KEY_MATERIAL 时,必须导入先前与 KMS 密钥关联的密钥材料。

来源为 EXTERNAL 的非对称、HMAC 或多区域 KMS 密钥只能关联一种密钥材料。Amazon KMS 将拒绝使用 ImportType 参数的 ImportKeyMaterial API 请求。

导入与 KMS 密钥永久关联的所有密钥材料后,KMS 密钥才可用于密码操作。如果删除其中任何一个密钥材料或放任其过期,则 KMS 密钥状态将变为 PendingImport,并且该密钥将不再能够用于密码操作。

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

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

设置过期时间(可选)

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

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

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

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

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

设置密钥材料描述

来源为 EXTERNAL 的单区域对称加密密钥可以关联多个密钥材料。在将密钥材料导入此类密钥时,您可以指定可选的密钥材料描述。该描述可用于跟踪相应的密钥材料在 Amazon KMS 之外持久保存的位置。

重新导入密钥材料

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

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

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

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

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

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

导入新密钥材料

要具有导入的密钥材料的对称加密 KMS 密钥执行按需轮换,您首先需要导入以前未与该密钥关联的新密钥材料。要完成此任务,请使用 ImportKeyMaterial 操作并将 ImportType 参数设置为 NEW_KEY_MATERIAL。以这种方式导入的密钥材料将处于 PENDING_ROTATION 状态,直到您执行 RotateKeyOnDemand 操作或在 Amazon Web Services 管理控制台中轮换密钥为止。一个 KMS 密钥在任何时候最多只能有一个密钥材料处于 PENDING_ROTATION 状态。

导入密钥材料(控制台)

您可以使用 Amazon Web Services 管理控制台导入密钥材料。

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

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

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

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

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

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

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

  7. 对于非对称密钥、HMAC 密钥和多区域密钥,请选择密钥材料选项卡,然后选择导入密钥材料。对于单区域对称加密密钥,请选择密钥材料和轮换选项卡。然后选择导入初始密钥材料导入新密钥材料重新导入密钥材料重新导入密钥材料选项可在密钥材料表的 Actions 菜单中找到。

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

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

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

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

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

  10. 对于对称加密密钥,您可以选择为要导入的密钥材料指定描述。

  11. 选择导入密钥材料

导入密钥材料 (Amazon KMS API)

要导入密钥材料,请使用 ImportKeyMaterial 操作。以下示例使用 Amazon 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
  5. 如果要导入以前未与 KMS 密钥关联的新密钥材料,请将 ImportType 参数设置为 NEW_KEY_MATERIAL。此选项只能用于单区域对称加密密钥。对于此类密钥,您还可以在以下命令行示例中使用可选 KeyMaterialDescription 参数为导入的密钥材料设置描述:

    $ 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 \ --import-type NEW_KEY_MATERIAL \ --key-material-description "Q2 2025 Rotation"
提示

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