AWS Key Management Service
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

在自定义密钥存储中使用 CMK

在自定义密钥存储中创建 CMK 之后,您可以将其用于加密操作 — EncryptDecryptGenerateDataKeyGenerateDataKeyWithoutPlaintextReEncrypt — 就像对任何 CMK 执行此操作一样。在请求中,按 CMK 的 ID 或别名标识 CMK;您无需指定自定义密钥存储或 AWS CloudHSM 集群。响应包含为任何 CMK 返回的相同字段。

但是,当您在自定义密钥存储中使用 CMK 时,会在与自定义密钥存储关联的 AWS CloudHSM 集群中完全执行加密操作。该操作在与所选 CMK 关联的集群中使用密钥材料。

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

  • CMK 的密钥状态必须为 Enabled。要查找密钥状态,请使用 AWS 管理控制台中的 Status (状态) 字段或 DescribeKey 响应中的 KeyState 字段。

  • 自定义密钥存储必须连接到其 AWS CloudHSM 集群。其 AWS 管理控制台中的 Status (状态)DescribeCustomKeyStores 响应中的 ConnectionState 必须为 CONNECTED

  • 与自定义密钥存储关联的 AWS CloudHSM 集群必须包含至少一个活动 HSM。要查找集群中的活动 HSM 的数量,请使用 AWS KMS 控制台、AWS CloudHSM 控制台或 DescribeClusters 操作。

  • AWS CloudHSM 集群必须包含 CMK 的密钥材料。如果已从集群中删除密钥材料,或者已从未包含密钥材料的备份中创建 HSM,则加密操作将失败。

如果未满足这些条件,则加密操作失败,并且 AWS KMS 会返回 KMSInvalidStateException 异常。通常,您只需重新连接自定义密钥存储。有关其他帮助,请参阅如何修复失败的 CMK

AWS KMS 限制在自定义密钥存储中使用 CMK 的加密操作的速率。如果您超过此速率,则 AWS KMS 将返回 ThrottlingException。此外,如果与自定义密钥存储关联的 AWS CloudHSM 集群正在处理大量命令(包括与自定义密钥存储不相关的命令),则您可能以低于发布速率的速率获得 ThrottlingException。如果您收到任何请求的 ThrottlingException,请降低您的请求速率并重试这些命令。有关自定义密钥存储中的加密操作的限制的详细信息,请参阅自定义密钥存储限制