客户端加密和服务器端加密 - AWS 数据库加密 SDK

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

客户端加密和服务器端加密

我们的客户端加密库已重命名为 AWS 数据库加密SDK。本开发人员指南仍提供有关 DynamoDB 加密客户端的信息。

Dynam SDK oDB 的 AWS 数据库加密支持客户端加密,即在将表数据发送到数据库之前对其进行加密。但是,DynamoDB 提供服务器端静态加密功能,该功能会在您将表保存到磁盘时以透明方式进行加密并在您访问表时进行解密。

您选择的工具取决于数据的敏感性和应用程序的安全性要求。您可以同时使用SDK适用于 DynamoDB 的 AWS 数据库加密和静态加密。当您将已加密且签名的项目发送到 DynamoDB 时,DynamoDB 不会识别受保护的项目。它仅检测带有二进制属性值的典型表项目。

服务器端静态加密

DynamoDB 支持静态加密,这是一项服务器端加密功能,利用此功能,DynamoDB 可以在将表保存到磁盘时以透明方式进行加密并且在您访问表时进行解密。

当您使用与 DynamoDB 交互时,默认情况下,您的数据在通过连接传输时会进行加密,在 DynamoDB 终端节点解密,然后重新加密,然后 AWS SDK再存储在 DynamoDB 中。HTTPS

  • 默认加密。DynamoDB 在写入所有表时,以透明方式对其进行加密和解密。没有启用或禁用静态加密的选项。

  • DynamoDB 创建和管理加密密钥。每个表的唯一键受 AWS KMS key 保护,该密钥绝不会让 AWS Key Management Service(AWS KMS)处于不加密状态。默认情况下,DynamoDB 在 DynamoDB 服务账户中使用 AWS 拥有的密钥,但您可以在账户中选择一个 AWS 托管式密钥客户托管密钥来保护您的部分或全部表。

  • 所有表数据均已在磁盘上加密。当加密表保存到磁盘时,DynamoDB 会加密所有表数据,包括主键以及本地和全局二级索引。如果表具有排序键,则标记范围边界的一些排序键将以明文形式存储在表元数据中。

  • 与表相关的对象也被加密。只要将 DynamoDB 流全局表备份写入到持久性媒体,静态加密就会保护它们。

  • 您的项目在您进行访问时解密。当您访问表时,DynamoDB 会解密包含目标项目的表的一部分并向您返回明文项目。

AWS 适用于 DynamoD SDK B 的数据库加密

客户端加密为您的数据提供 end-to-end 保护,无论是传输中的数据还是静态数据,从 DynamoDB 的源数据到 DynamoDB 中的存储。您的纯文本数据永远不会泄露给任何第三方,包括。 AWS您可以将适用于 DynamoDB SDK 的 AWS 数据库加密与新的 DynamoDB 表一起使用,也可以将现有的 Amazon DynamoDB 表迁移到版本 3。 适用于 DynamoDB 的 Java 客户端加密库中的 x

  • 您的传输中数据和静态数据均受保护。它永远不会暴露给任何第三方,包括 AWS。

  • 您可以为表项目签名。您可以指示 Dynam SDK oDB 的 AWS 数据库加密来计算表项目的全部或部分签名,包括主键属性。此签名允许您整体检测项目的未经授权的更改,包括添加或删除属性,或者交换属性值。

  • 您可以通过选择密钥环的方式确定如何保护您的数据。您的密钥环决定了哪些包装密钥保护您的数据密钥并最终保护您的数据。使用最安全且对您的任务实用的包装密钥。

  • Dynam SDK oDB 的 AWS 数据库加密不会加密整个表。您可以选择在项目中加密哪些属性。Dynam SDK oDB 的 AWS 数据库加密不会加密整个项目。它不会加密属性名称或主键(分区键和排序键)属性的名称或值。

AWS Encryption SDK

如果您要加密存储在 DynamoDB 中的数据,我们建议使用 DynamoDB 的 AWS 数据库加密。SDK

AWS Encryption SDK 是一个客户端加密库,可帮助您加密和解密通用数据。尽管它可以保护任何类型的数据,但它不适用于结构化数据,如数据库记录。与 DynamoDB SDK 的 AWS 数据库加密不同,它无法提供项目级别的完整性检查,也没有识别属性或阻止加密 AWS Encryption SDK 主密钥的逻辑。

如果您使用 AWS Encryption SDK 来加密表中的任何元素,请记住它与 DynamoDB 的 AWS 数据库加密SDK不兼容。您无法使用一个库进行加密而使用另一个库进行解密。