加密材料提供程序 - AWS 数据库加密 SDK

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

加密材料提供程序

注意

我们的客户端加密库已重命名为 AWS 数据库加密 SDK。以下主题提供有关适用于 Java 的 DynamoDB 加密客户端版本 1.x—2.x 以及适用于 Python 的 DynamoDB 加密客户端版本 1.x—3.x 的信息。有关更多信息,请参阅适用于 DynamoDB 的 AWS 数据库加密 SDK 版本支持

您在使用 DynamoDB 加密客户端时所做的最重要的决策是选择加密材料提供程序(CMP)。CMP 组装加密材料并将其返回到项目加密程序。它还确定如何生成加密密钥和签名密钥,新密钥材料是否对于每个项目进行生成或重复使用以及所使用的加密和签名算法。

您可以选择 DynamoDB 加密客户端库中提供的实施中的 CMP 或构建兼容的自定义 CMP。您的 CMP 选择还可能取决于使用的编程语言

本主题介绍了最常见的 CMP 并提供一些建议以帮助您选择适合您的应用程序的最佳 CMP。

Direct KMS 材料提供程序

Direct KMS 材料提供程序借助 AWS KMS key 保护您的表项目,该主密钥绝不会让 AWS Key Management Service(AWS KMS)处于不加密状态。您的应用程序不必生成或管理任何加密材料。由于它使用 AWS KMS key 来为每个项目生成唯一的加密密钥和签名密钥,此提供程序会在其每次加密或解密项目时调用 AWS KMS。

如果您使用的是 AWS KMS 且每个事务一个 AWS KMS 调用适用于您的应用程序,则此提供程序是个很好的选择。

有关详细信息,请参阅 Direct KMS 材料提供程序

已包装的材料提供程序(已包装的 CMP)

利用已包装的材料提供程序(已包装的 CMP),您可以在 DynamoDB 加密客户端外部生成和管理包装密钥和签名密钥。

已包装的 CMP 会为每个项目生成唯一加密密钥。然后,它会使用您提供的包装(或解开包装)密钥和签名密钥。因此,您可确定如何生成包装密钥和签名密钥以及这些密钥对于每个项目是唯一的还是可重复使用。已包装的 CMP 是 Direct KMS 提供程序的安全替代方案,适用于不使用 AWS KMS 且可以安全管理加密材料的应用程序。

有关详细信息,请参阅 已包装的材料提供程序

最新提供程序

最新提供程序是一个加密材料提供程序(CMP),旨在处理提供程序存储。它从提供程序存储获取 CMP,然后从 CMP 获取其返回的加密材料。最新提供程序通常使用每个 CMP 来满足加密材料的多个请求,但您可以使用提供程序存储的功能来控制可重复使用材料的范围,决定轮换其 CMP 的频率以及甚至在不更改最新提供程序的情况下更改所使用的 CMP 的类型。

您可以结合使用最新提供程序与任何兼容的提供程序存储。DynamoDB 加密客户端包含一个 MetaStore,这是返回已包装的 CMP 的提供程序存储。

对于需要最大程度地减少对加密源的调用的应用程序,以及能够在不违反应用程序的安全性要求的情况下重复使用某些加密材料的应用程序,最新提供程序是个很好的选择。例如,它允许您借助 AWS Key Management Service(AWS KMS)中的 AWS KMS key 保护加密材料,而无需在每次加密或解密项目时调用 AWS KMS。

有关详细信息,请参阅 最新提供程序

静态材料提供程序

静态材料提供程序设计用于测试、概念验证演示和传统兼容性。它不会为每个项目生成任何唯一加密材料。它将返回您提供的相同加密密钥和签名密钥,而且这些密钥会直接用于加密、解密和签署您的表项目。

注意

Java 库中的非对称静态提供程序不是一种静态提供程序。它仅提供已包装的 CMP 的替代构造函数。它在生产使用时是安全的,但您应尽可能地直接使用已包装的 CMP。