DynamoDB 加密客户端的工作原理 - AWS 数据库加密 SDK

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

DynamoDB 加密客户端的工作原理

注意

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

DynamoDB 加密客户端专门设计为保护存储在 DynamoDB 中的数据。库包含可以直接扩展或使用的安全实施。大多数元素由抽象元素表示,因此可以创建和使用兼容的自定义组件。

为表项目加密和签名

负责对表项目进行加密、签名、验证和解密的项目加密程序是 DynamoDB 加密客户端的核心。它取得表项目信息,以及要加密和签名的项目说明,它将从您选择并配置的加密材料提供程序获取加密材料和加密材料的使用说明。

下图显示了此流程的高级视图。

对 DynamoDB 加密客户端中的项目进行加密和签名

要对表项目进行加密和签名,DynamoDB 加密客户端需要:

  • 表的相关信息。它从提供的 DynamoDB 加密上下文获取有关表的信息。某些帮助程序从 DynamoDB 获取必需信息并创建 DynamoDB 加密上下文。

    注意

    DynamoDB 加密客户端中的 DynamoDB 加密上下文 与 AWS Key Management Service(AWS KMS)和 AWS Encryption SDK 中的加密上下文无关。

  • 要加密和签名的属性。它从提供的属性操作获取此信息。

  • 加密材料,包括加密密钥和签名密钥。它从您选择并配置的加密材料提供程序 (CMP) 获取这些信息。

  • 为项目加密和签名的说明。CMP 会将加密材料(包括加密和签名算法)使用说明添加到实际材料描述

项目加密程序将使用所有这些元素为项目加密和签名。此外,项目加密程序将两个属性添加到项目:包含加密和签名说明(实际材料描述)的材料描述属性以及包含签名的属性。可以直接与项目加密程序交互,或使用与项目加密程序交互的帮助程序功能以实施安全默认行为。

结果是包含已加密和已签名数据的 DynamoDB 项目。

验证和解密表项目

这些组件还一起运行来验证和解密项目,如下图所示。

对 DynamoDB 加密客户端中的项目进行验证和解密

要验证和解密项目,DynamoDB 加密客户端要相同的组件、配置相同的组件或专门为解密项目设计的组件,如下所示:

  • 来自 DynamoDB 加密上下文的有关表的信息

  • 要验证和解密的属性。它将从属性操作获取这些属性。

  • 您选择和配置的加密材料提供程序(CMP)中的解密材料,包括验证和解密密钥

    已加密项目不包括为它加密所使用的 CMP 的任何记录。您必须提供相同的 CMP、配置相同的 CMP 或设计为解密项目的 CMP。

  • 有关如何加密项目和为项目签名的信息,包括加密和签名算法。客户端将从项目的材料描述属性中获取这些信息。

项目加密程序将使用所有这些元素验证和解密项目。它还将删除材料描述和签名属性。结果是明文 DynamoDB 项目。