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

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

在外部密钥存储中使用 KMS 密钥

外部密钥存储中创建对称加密 KMS 密钥后,您可以将其用于以下加密操作:

自定义密钥存储库支持生成非对称数据密钥对GenerateDataKeyPairGenerateDataKeyPairWithoutPlaintext的对称加密操作。

使用外部密钥存储中的 KMS 密钥的所有加密操作都支持加密上下文。与往常一样,Amazon KMS 建议使用加密上下文,这是一种安全最佳实践。

在请求中使用 KMS 密钥时,请通过密钥 ID、密钥 ARN、别名或别名 ARN 识别 KMS 密钥。您无需指定外部密钥存储。响应包含为任何对称加密 KMS 密钥返回的相同字段。但是,在外部密钥存储中使用 KMS 密钥时,外部密钥管理器将使用与 KMS 密钥关联的外部密钥执行加密和解密操作。

为了确保外部密钥存储中经 KMS 密钥加密的加密文字至少与经标准 KMS 密钥加密的加密文字一样安全,Amazon KMS 将使用双重加密。首先在 Amazon KMS 中使用 Amazon KMS 密钥材料对数据进行加密。然后,外部密钥管理器使用 KMS 密钥的外部密钥对其进行加密。若要解密双重加密的加密文字,首先由外部密钥管理器使用 KMS 密钥的外部密钥解密加密文字。然后在 Amazon KMS 中使用 KMS 密钥的 Amazon KMS 密钥材料进行解密。

要做到这一点,必须满足以下条件。

  • KMS 密钥的密钥状态必须为 Enabled。要查找密钥状态,请参阅Amazon KMS控制台上客户托管密钥的状态KeyState字段或DescribeKey响应中的字段。

  • 托管 KMS 密钥的外部密钥存储必须连接到其外部密钥存储代理,也就是说,外部密钥存储的连接状态必须为 CONNECTED

    您可以在Amazon KMS控制台的外部密钥存储页面或DescribeCustomKeyStores响应中查看连接状态。外部密钥存储的连接状态也显示在 Amazon KMS 控制台中 KMS 密钥的详细信息页面上。在详细信息页面上,选择 Cryptographic configuration(加密配置)选项卡,然后查看 Custom key store(自定义密钥存储)部分中的 Connection state(连接状态)字段。

    如果连接状态为 DISCONNECTED,则必须先将其连接。如果连接状态为 FAILED,则必须解决问题,断开外部密钥存储的连接,再将其连接。有关说明,请参阅 连接和断开外部密钥存储

  • 外部密钥存储代理必须能够找到外部密钥。

  • 必须启用外部密钥并且必须执行加密和解密操作。

    外部密钥的状态独立于 KMS 密钥,并且不受 KMS 密钥的密钥状态变化影响,包括启用和禁用 KMS 密钥。同样,禁用或删除外部密钥不会更改 KMS 密钥的密钥状态,但使用关联的 KMS 密钥执行的加密操作将失败。

如果未满足这些条件,则加密操作失败,并且 Amazon KMS 会返回 KMSInvalidStateException 异常。您可能需要重新连接外部密钥存储或使用外部密钥管理器工具来重新配置或修复外部密钥。有关其他帮助,请参阅排查外部密钥存储的问题

在外部密钥存储中使用 KMS 密钥时,请注意每个外部密钥存储中的 KMS 密钥针对加密操作共享自定义密钥存储请求限额。如果您超过该配额,则 Amazon KMS 将返回 ThrottlingException。有关自定义密钥存储请求限额的详细信息,请参阅 自定义密钥存储请求限额