

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

# 什么是 AWS 数据库加密 SDK？
<a name="what-is-database-encryption-sdk"></a>


****  

|  | 
| --- |
| 我们的客户端加密库已重命名为 AWS 数据库加密 SDK。本开发人员指南仍提供有关 [DynamoDB 加密客户端](legacy-dynamodb-encryption-client.md)的信息。 | 

 AWS 数据库加密 SDK 是一组软件库，可让您在数据库设计中加入客户端加密。 AWS 数据库加密 SDK 提供记录级加密解决方案。您可以指定哪些字段经过加密，哪些字段包含在确保数据真实性的签名中。加密传输中敏感数据和静态敏感数据有助于确保您的明文数据不会提供给任何第三方，包括 AWS。 AWS 数据库加密 SDK 是根据 Apache 2.0 许可证免费提供的。

本开发人员指南提供了 AWS 数据库加密 SDK 的概念性概述，包括[其架构简介](concepts.md)、[它如何保护您的数据](how-it-works.md)、它与[服务器端加密](client-server-side.md)有何不同之处，以及[为应用程序选择关键组件](configure.md)以帮助您入门的指南。

 AWS 数据库加密软件开发工具包支持*具有*属性级加密功能的 Amazon DynamoDB。

 AWS 数据库加密 SDK 具有以下优点：

**专门针对数据库应用程序而设计**  
您无需成为密码专家即可使用 AWS 数据库加密 SDK。实施包括旨在处理您的现有应用程序的帮助程序方法。  
在创建和配置所需组件后，加密客户端在您将记录添加到数据库时以透明方式加密并签署这些记录，并且在检索记录时验证和解密它们。

**包括安全加密和签名**  
D AWS atabase Encryption SDK 包含安全的实现，即使用唯一的数据加密密钥对每条记录中的字段值进行加密，然后对记录进行签名以防止未经授权的更改，例如添加或删除字段或交换加密值。

**使用来自任何源的加密材料**  
 AWS 数据库加密 SDK 使用[密钥环](concepts.md#keyring-concept)生成、加密和解密保护您的记录的唯一数据加密密钥。密钥环决定加密该数据密钥的[包装密钥](concepts.md#wrapping-key)。  
您可以使用来自任何来源的包装密钥，包括加密服务，例如 [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/)（AWS KMS）或 [AWS CloudHSM](https://docs.aws.amazon.com/cloudhsm/latest/userguide/)。 AWS 数据库加密 SDK 不需要 AWS 账户 任何 AWS 服务。

**支持加密材料缓存**  
[AWS KMS 分层密钥环](use-hierarchical-keyring.md)是一种加密材料缓存解决方案，它使用 AWS KMS 保存在Amazon DynamoDB表中的受保护*分支密钥*，然后在本地缓存用于加密和解密操作的分支密钥材料，从而减少 AWS KMS 调用次数。它允许您在对称加密 KMS 密钥下保护您的加密材料，而无需在 AWS KMS 每次加密或解密记录时都调用。对于需要最大限度地减少调用的应用程序来说， AWS KMS 分层密钥环是一个不错的 AWS KMS选择。

**可搜索的加密**  
您可以设计无需解密整个数据库即可搜索已加密记录的数据库。根据您的威胁模型和查询要求，您可以使用[可搜索的加密](searchable-encryption.md)对已加密数据库执行精确匹配搜索或更自定义的复杂查询。

**支持多租户数据库架构**  
Dat AWS abase Encryption SDK 使您能够使用不同的加密材料隔离每个租户，从而保护存储在共享架构的数据库中的数据。如果您有多个用户在数据库中执行加密操作，请使用其中一个 AWS KMS 密钥环为每个用户提供一个用于其加密操作的不同密钥。有关更多信息，请参阅 [使用多租户数据库](configure.md#config-multitenant-databases)。

**支持无缝架构更新**  
在配置 AWS 数据库加密 SDK 时，您需要提供[加密操作](concepts.md#crypt-actions)，告诉客户端要加密和签名哪些字段，哪些字段需要签名（但不加密），以及要忽略哪些字段。使用 AWS 数据库加密 SDK 保护记录后，您仍然可以[对数据模型进行更改](ddb-update-data-model.md)。您可以在单个部署中更新您的加密操作，例如添加或移除已加密的字段。

## 在开源存储库中开发
<a name="dbesdk-repos"></a>

 AWS 数据库加密 SDK 是在上的开源存储库中开发的 GitHub。您可以使用这些存储库查看代码、阅读和提交问题，并且查找特定于您的实施的信息。

**适用于 DynamoDB 的 AWS 数据库加密 SDK**
+ 上的 [aws-database-encryption-sdk-dynamodb](https://github.com/aws/aws-database-encryption-sdk-dynamodb/) 存储库 GitHub 支持 Java、.NET 和 Rust 中最新版本的 DynamoDB AWS 数据库加密 SDK。

  适用于 DynamoDB 的 AWS 数据库加密 SDK 是 Dafny [的](https://github.com/dafny-lang/dafny/blob/master/README.md)产品，Dafny 是一种验证感知语言，你可以用它来编写规范、实现规范、代码和测试规范。结果为在确保功能正确性的框架中实施适用于 DynamoDB 的 AWS 数据库加密 SDK 功能的库。

## 支持和维护
<a name="support"></a>

 AWS 数据库加密 SDK 使用与 AWS SDK 和工具相同的[维护策略](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html)，包括版本控制和生命周期阶段。作为最佳实践，建议您使用适用于您的数据库实现的 AWS 数据库加密 SDK 的最新可用版本，并在新版本发布时进行升级。

有关更多信息，请参阅《工具参考指南》[AWS SDKs和《工具参考指南》中的 AWS SDKs 和工具维护政策](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html)。

## 发送反馈
<a name="feedback"></a>

我们欢迎您提供反馈！如果您有任何疑问或意见或者要报告问题，请使用以下资源。

如果您在 AWS 数据库加密 SDK 中发现潜在的安全漏洞，请[通知 AWS 安全部门](https://aws.amazon.com/security/vulnerability-reporting/)。不要创建公开 GitHub 问题。

要提供对本文档的反馈，请使用任何页面上的反馈链接。