

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

# Amazon QLDB 静态加密：工作原理
<a name="encryption-at-rest.how-it-works"></a>

QLDB *静态加密* 静态加密使用 256 位高级加密标准（AES-256）来加密数据。这有助于保护您的数据，防止对底层存储进行未经授权的访问。默认情况下，存储在 QLDB 分类账中的所有数据都是静态加密。服务器端加密是透明的，这意味着不需要对应用程序进行更改。

静态加密与 AWS Key Management Service (AWS KMS) 集成，用于管理用于保护 QLDB 账本的加密密钥。在创建新账本或更新现有账本时，您可以选择以下类型的 AWS KMS ​​：
+ *AWS 拥有的密钥* – 默认加密类型。此密钥归 QLDB 拥有（不另外收费）。
+ *客户托管的密钥* - 此密钥存储在您的 AWS 账户 中，由您创建、拥有和托管。您可以完全控制钥匙（AWS KMS 收费）。

**Topics**
+ [AWS 拥有的密钥](#encryption-at-rest.aws-owned)
+ [客户托管密钥](#encryption-at-rest.customer-managed)
+ [Amazon QLDB 如何使用授权 AWS KMS](#encryption-at-rest.grants)
+ [恢复 AWS KMS中的授权](#encryption-at-rest.restoring-grants)
+ [使用静态加密时的注意事项](#encryption-at-rest.considerations)

## AWS 拥有的密钥
<a name="encryption-at-rest.aws-owned"></a>

AWS 拥有的密钥 没有存储在你的 AWS 账户。它们是 KMS 密钥集合的一部分，这些密钥 AWS 拥有并管理多个密钥 AWS 账户。 AWS 服务 可以 AWS 拥有的密钥 用来保护您的数据。

您无需创建或管理 AWS 拥有的密钥。但是，您无法查看 AWS 拥有的密钥、跟踪或审核它们的使用情况。您无需支付月费或使用费 AWS 拥有的密钥，也不会计入您账户的 AWS KMS 配额。

有关更多信息，请参阅 *AWS Key Management Service 开发人员指南*中的 [AWS 拥有的密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)。

## 客户托管密钥
<a name="encryption-at-rest.customer-managed"></a>

客户托管密钥是您 AWS 账户 自己创建、拥有和管理的 KMS 密钥。您对 KMS 密钥拥有全部控制权。仅支持对称加密 KMS 密钥。

使用客户托管密钥可获得以下功能：
+ 使用密钥策略、IAM policy 和授权以控制对 KMS 密钥的访问
+ 启用和禁用密钥
+ 轮换密钥的加密材料
+ 创建密钥标签和别名
+ 安排删除 KMS 密钥
+ 导入您自己的密钥材料或使用您拥有和托管的自定义密钥存储
+ 使用 AWS CloudTrail 和 Amaz CloudWatch on Logs 来跟踪 QLDB 代表您发送 AWS KMS 的请求

有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

客户托管的密钥每[次 API 调用都会产生费用](https://aws.amazon.com/kms/pricing/)，而 AWS KMS 配额适用于这些 KMS 密钥。有关更多信息，请参阅[AWS KMS 资源或请求限额](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)。

当您将一个客户管理的密钥指定为账本的 KMS 密钥时，日记账存储和索引存储中的所有账本数据都会受到相同的客户管理的密钥保护。

**无法访问客户托管的密钥**

如果您禁用客户托管密钥、计划删除密钥或撤销对密钥的授权，则分类账加密状态将变为 `KMS_KEY_INACCESSIBLE`。在这种状态下，分类账会受损，不接受任何读取或写入请求。无法访问的密钥会阻止所有用户和 QLDB 服务加密或解密数据，也无法在分类账中执行读写操作。QLDB 必须有权访问加密密钥，确保您可以继续访问表并防止数据丢失。

**重要**  
在您恢复对密钥的授权或重新启用已禁用的密钥之后，受损分类账会自动返回至活动状态。  
但是，删除客户托管的密钥是*不可逆的*。删除密钥后，您将无法再访问使用该密钥保护的分类账，**数据将永久无法恢复**。

要检查账本的加密状态，请使用 AWS 管理控制台 或 [DescribeLedger](ledger-management.basics.md#ledger-management.basics.describe)API 操作。

## Amazon QLDB 如何使用授权 AWS KMS
<a name="encryption-at-rest.grants"></a>

QLDB 需要*授权*，才能使用客户托管密钥。当您创建受客户托管密钥保护的账本时，QLDB 会通过向发送请求来[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)代表您创建授权。 AWS KMS中的授权 AWS KMS 用于授予 QLDB 访问客户中的 KMS 密钥的权限。 AWS 账户有关更多信息，请参阅 *AWS Key Management Service 开发人员指南*中的[使用授权](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)。

QLDB 无服务器需要授权，才能将客户托管的密钥用于以下 AWS KMS 操作：
+ [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)— 验证指定的对称加密 KMS 密钥是否有效。
+ [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)— 生成唯一的对称数据密钥，QLDB 使用该密钥对账本中的静态数据进行加密。
+ [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) - 解密客户托管式密钥加密的数据。
+ [加密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) - 使用您的客户托管密钥将明文加密为密文。

您可以随时撤消针对授权的访问权限，也可以移除服务访问客户托管密钥的权限。如果这样做，密钥将无法访问，QLDB 将无法访问受客户托管密钥保护的任何分类账数据。在这种状态下，分类账受损，在您恢复对密钥的授权之前，分类账不接受任何读取或写入请求。

## 恢复 AWS KMS中的授权
<a name="encryption-at-rest.restoring-grants"></a>

要恢复对客户托管密钥的授权并恢复对 QLDB 中分类账的访问权限，您可以对分类账进行更新并指定相同的 KMS 密钥。有关说明，请参阅 [更新现有分类账的 AWS KMS key](encryption-at-rest.using-cust-keys.md#encryption-at-rest.using-cust-keys.update)。

## 使用静态加密时的注意事项
<a name="encryption-at-rest.considerations"></a>

在 QLDB 中使用静态加密时，请注意以下事项：
+ 所有 QLDB 分类账数据上都启用了服务器端静态加密，无法禁用。无法仅加密分类账中的子集。
+ 静态加密仅加密持久存储介质上的静态数据。如果正在传输的数据或正在使用的数据担心数据安全，则可能需要采取额外措施：
  + *传输中的数据*： 中的所有数据都在传输中加密。默认情况下，与 QLDB 的通信将使用 HTTPS 协议，通过安全套接字层（SSL）/传输层安全性（TLS）加密保护网络流量。
  + *使用中的数据*：正在使用的数据：在将数据发送到 QLDB 之前，使用客户端加密来保护您的数据。

要了解如何为分类账实现客户托管密钥，请继续 [在 Amazon QLDB 中使用客户托管的密钥](encryption-at-rest.using-cust-keys.md)。