Amazon DynamoDB Encryption Client 概念 - AWS 数据库加密 SDK

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

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,也可以使用库 CMPs 中的众多自定义 CMP 之一。大多数 CMPs 都适用于多种编程语言。

项目加密程序

项目加密程序是为 DynamoDB 加密客户端执行加密操作的低级别组件。它从加密材料提供程序 (CMP) 请求加密材料,然后使用 CMP 返回的材料为表项目加密和签名,或验证和解密表项目。

可以直接与项目加密程序交互或使用库提供的帮助程序。例如,适用于 Java 的 DynamoDB 加密客户端包含可与 DynamoDBMapper 一起使用的 AttributeEncryptor 帮助程序类,而不是直接与 DynamoDBEncryptor 项目加密程序交互。Python 库包含与项目加密程序交互的 EncryptedTableEncryptedClientEncryptedResource 帮助程序类。

属性操作

属性操作告知项目加密程序将对项目的每个属性执行哪些操作。

属性操作值可以是以下任何值:

  • 加密和签名 – 加密属性值。在项目签名中包含属性(名称和值)。

  • 仅签名 – 在项目签名中包含属性。

  • 不执行任何操作 – 不为属性加密或签名。

对于可能存储敏感数据的任何属性,请使用 Encrypt and sign (加密和签名)。对于主键属性(分区键和排序键),使用 Sign only。不会为材料描述属性和签名属性签名或加密。无需为这些属性指定属性操作。

仔细选择属性操作。如有怀疑,请使用 Encrypt and sign (加密和签名)。一旦使用 DynamoDB 加密客户端来保护表项,就无法在不冒签名验证错误风险的情况下更改属性的操作。有关详细信息,请参阅更改数据模型

警告

请勿加密主键属性。它们必须保留为明文,以便 DynamoDB 查找项目而无需运行全表扫描。

如果 DynamoDB 加密上下文标识您的主键属性,则客户端将在您尝试加密这些属性时引发错误。

对于每种编程语言而言,用于指定属性操作的技术各不相同。此技术还可能特定于使用的帮助程序类。

有关详细信息,请参阅编程语言对应的文档。

材料描述

已加密表项目的材料描述 包含有关如何为表项目加密和签名的信息(如加密算法)。加密材料提供程序 (CMP) 将在汇编用于加密和签名的加密材料时记录材料描述。之后,当它需要汇编加密材料以验证和解密项目时,它将使用材料描述作为指南。

在 DynamoDB 加密客户端中,材料描述引用三个相关元素:

请求的材料描述

某些加密材料提供程序 (CMPs) 允许您指定高级选项,例如加密算法。要指明您的选择,请将名称-值对添加到表项目加密请求中 DynamoDB 加密上下文的材料描述属性中。此元素也称为请求的材料描述。请求的材料描述中的有效值由您选择的 CMP 定义。

注意

由于材料描述会覆盖安全默认值,因此建议忽略请求的材料描述,除非有不得已的原因要使用它。

实际材料描述

加密材料提供者 (CMPs) 返回的材料描述称为实际材料描述。它描述 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 加密上下文可以包含以下字段。所有字段和值均为可选项。

提供程序存储

提供商存储是返回加密材料提供者 (CMPs) 的组件。提供商商店可以创建 CMPs 或从其他来源(例如其他提供商商店)获取它们。提供商存储将其创建的 CMPs 版本保存在永久存储中,其中每个存储的 CMP 都由请求者的材料名称和版本号标识。

DynamoDB 加密客户端中的最新提供程序来自提供程序存储,但您可以使用提供程序存储为 CMPs 任何组件提供该提供程序。 CMPs 每个最新提供程序都与一个提供商存储相关联,但一个提供商存储可以 CMPs 向多个主机的多个请求者提供服务。

提供商商店按需创建新版本,并返回新版本和现有版本。 CMPs 它还将返回指定材料名称的最新版本号。这使请求者知道提供程序存储何时具有它可请求的 CMP 的新版本。

DynamoDB 加密客户端包括 MetaStore一个,它是一个提供商存储,它使用存储在 DynamoDB 中并使用内部 DynamoDB 加密客户端加密的密钥创建 Wr CMPs apped。

了解更多: