本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon DynamoDB Encryption Client 概念
注意
我们的客户端加密库已重命名为 AWS 数据库加密 SDK。以下主题提供有关适用于 Java 的 DynamoDB 加密客户端版本 1.x—2.x 以及适用于 Python 的 DynamoDB 加密客户端版本 1.x—3.x 的信息。有关更多信息,请参阅适用于 DynamoDB 的 AWS 数据库加密 SDK 版本支持。
本主题介绍 Amazon DynamoDB Encryption Client 中使用的概念和术语。
要了解 DynamoDB 加密客户端的组件如何交互,请参阅 DynamoDB 加密客户端的工作原理。
加密材料提供程序 (CMP)
在实施 DynamoDB 加密客户端时,第一批任务中有一个任务是选择加密材料提供程序(CMP)(又称为加密材料提供程序)。您的选择决定了剩下的大部分实施操作。
加密材料提供程序 (CMP) 收集、汇编并返回项目加密程序用于为表项目加密和签名的加密材料。CMP 确定要使用的加密算法以及如何生成和保护加密和签名密钥。
CMP 与项目加密程序交互。项目加密程序从 CMP 请求加密或解密材料,而 CMP 将这些材料返回给项目加密程序。然后,项目加密程序使用加密材料为项目加密和签名,或验证和解密项目。
在配置客户端时指定 CMP。可以创建兼容的自定义 CMP,或使用库中的众多 CMP 之一。大多数 CMP 都可用于多种编程语言。
项目加密程序
项目加密程序是为 DynamoDB 加密客户端执行加密操作的低级别组件。它从加密材料提供程序 (CMP) 请求加密材料,然后使用 CMP 返回的材料为表项目加密和签名,或验证和解密表项目。
可以直接与项目加密程序交互或使用库提供的帮助程序。例如,适用于 Java 的 DynamoDB 加密客户端包含可与 DynamoDBMapper
一起使用的 AttributeEncryptor
帮助程序类,而不是直接与 DynamoDBEncryptor
项目加密程序交互。Python 库包含与项目加密程序交互的 EncryptedTable
、EncryptedClient
和 EncryptedResource
帮助程序类。
属性操作
属性操作告知项目加密程序将对项目的每个属性执行哪些操作。
属性操作值可以是以下任何值:
-
加密和签名 – 加密属性值。在项目签名中包含属性(名称和值)。
-
仅签名 – 在项目签名中包含属性。
-
不执行任何操作 – 不为属性加密或签名。
对于可能存储敏感数据的任何属性,请使用 Encrypt and sign (加密和签名)。对于主键属性(分区键和排序键),使用 Sign only。不会为材料描述属性和签名属性签名或加密。无需为这些属性指定属性操作。
仔细选择属性操作。如有怀疑,请使用 Encrypt and sign (加密和签名)。一旦使用 DynamoDB 加密客户端来保护表项,就无法在不冒签名验证错误风险的情况下更改属性的操作。有关详细信息,请参阅 更改数据模型。
警告
请勿加密主键属性。它们必须保留为明文,以便 DynamoDB 查找项目而无需运行全表扫描。
如果 DynamoDB 加密上下文标识您的主键属性,则客户端将在您尝试加密这些属性时引发错误。
对于每种编程语言而言,用于指定属性操作的技术各不相同。此技术还可能特定于使用的帮助程序类。
有关详细信息,请参阅编程语言对应的文档。
材料描述
已加密表项目的材料描述 包含有关如何为表项目加密和签名的信息(如加密算法)。加密材料提供程序 (CMP) 将在汇编用于加密和签名的加密材料时记录材料描述。之后,当它需要汇编加密材料以验证和解密项目时,它将使用材料描述作为指南。
在 DynamoDB 加密客户端中,材料描述引用三个相关元素:
- 请求的材料描述
-
利用一些加密材料提供程序 (CMP),可指定高级选项(如加密算法)。要指明您的选择,请将名称-值对添加到表项目加密请求中 DynamoDB 加密上下文的材料描述属性中。此元素也称为请求的材料描述。请求的材料描述中的有效值由您选择的 CMP 定义。
注意
由于材料描述会覆盖安全默认值,因此建议忽略请求的材料描述,除非有不得已的原因要使用它。
- 实际材料描述
-
加密材料提供程序 (CMP) 返回的材料描述称为实际材料描述。它描述 CMP 在汇编加密材料时使用的实际值。它一般包括请求的描述材料(如有),请求的描述材料有增加和更改。
- 材料描述属性
-
客户端将实际材料描述保存在已加密项目的材料描述属性 中。材料描述属性名称为
amzn-ddb-map-desc
并且其值为实际材料描述。客户端将使用材料描述属性中的值验证和解密项目。
DynamoDB 加密上下文
DynamoDB 加密上下文 为加密材料提供程序(CMP)提供有关表和项目的信息。在高级实施中,DynamoDB 加密上下文可以包括请求的材料描述。
在对表项目进行加密时,DynamoDB 加密上下文将以加密方式绑定到加密的属性值。当您解密时,如果 DynamoDB 加密上下文与用于加密的 DynamoDB 加密上下文不是区分大小写的完全匹配,则解密操作将失败。如果您与项目加密程序直接交互,则必须在调用加密或解密方法时提供 DynamoDB 加密上下文。大多数帮助程序将创建 DynamoDB 加密上下文。
注意
DynamoDB 加密客户端中的 DynamoDB 加密上下文 与 AWS Key Management Service(AWS KMS)和 AWS Encryption SDK 中的加密上下文无关。
DynamoDB 加密上下文可以包含以下字段。所有字段和值均为可选项。
-
表名称
-
分区键名称
-
排序键名称
-
属性名称/值对
提供程序存储
提供程序存储 是返回加密材料提供程序 (CMP) 的组件。提供程序存储可以创建 CMP 或从其他源(如其他提供程序存储)获取它们。提供程序存储将它创建的 CMP 的版本保存在持久性存储中,其中存储的每个 CMP 通过请求者和版本号的材料名称标识。
DynamoDB 加密客户端中的最新提供程序从提供程序存储中获取 CMP,但您可以使用提供程序存储来为任何组件提供 CMP。每个最新提供程序都与一个提供程序存储关联,但一个提供程序存储可以向多台主机中的多个请求者提供 CMP。
提供程序存储将按需创建新版 CMP,然后返回新版本和现有版本。它还将返回指定材料名称的最新版本号。这使请求者知道提供程序存储何时具有它可请求的 CMP 的新版本。
DynamoDB 加密客户端包含 MetaStore,MetaStore 是使用存储在 DynamoDB 中且通过使用内部 DynamoDB 加密客户端加密的密钥创建已包装 CMP 的提供程序存储。
了解更多: