DynamoDB 如何使用 AWS KMS
Amazon DynamoDB 是一种完全托管的可扩展式 NoSQL 数据库服务。DynamoDB 与 AWS Key Management Service (AWS KMS) 集成以支持静态加密服务器端加密功能。
利用静态加密,DynamoDB 可以透明方式对 DynamoDB 表中的所有客户数据进行加密,包括其主键及本地和全局二级索引,只要该表已保存到磁盘。(如果表具有排序键,则标记范围边界的一些排序键将以明文形式存储在表元数据中。) 当您访问表时,DynamoDB 会以透明方式解密表数据。您无需更改应用程序即可使用或管理加密表。
此外,在将 DynamoDB 流、全局表和备份保存到持久性媒体时,静态加密可以保护这些对象。有关本主题中表的语句也适用于这些对象。
将对所有 DynamoDB 表进行加密。没有为新表或现有表启用或禁用加密的选项。默认情况下,在 DynamoDB 服务账户中的 AWS 拥有的客户主密钥 (CMK) 下对所有表进行加密。不过,您可以选择用于在账户中的适用于 DynamoDB 的 AWS 托管 CMK 下对部分或所有表进行加密的选项。静态加密不支持客户托管 CMK。
使用 CMK 和数据密钥
DynamoDB 静态加密功能使用一个 AWS KMS 客户主密钥 (CMK) 和一个数据密钥层次结构来保护您的表数据。在将 DynamoDB 流、全局表和备份写入持久性媒体时,DynamoDB 使用相同的密钥层次结构来保护这些对象 。
- 客户主密钥 (CMK)
-
静态加密功能在 AWS KMS 客户主密钥 (CMK) 下保护 DynamoDB 表。默认情况下,它使用 AWS 托管 CMK,但 DynamoDB 支持用于在 AWS 账户中的适用于 DynamoDB (
aws/dynamodb
) 的 AWS 托管 CMK下对部分或所有表进行加密的选项。您可以在创建或更新表时为表选择 CMK,并且可以为每个表做出不同的选择。静态加密功能不支持使用客户托管的 CMK。如果您需要以下任意功能,请使用 AWS 托管 CMK:
-
您可以查看 CMK 及其密钥策略。(您无法更改密钥策略。)
-
您可以通过在 AWS CloudTrail 日志中检查针对 AWS KMS 的 DynamoDB API 调用来审计 DynamoDB 表的加密和解密。
不过,AWS 拥有的 CMK 是免费的。对于每个 API 调用,AWS 托管 CMK 会产生费用。
可通过以下方式随时更改表的 CMK:在 DynamoDB 控制台中或使用 UpdateTable 操作。在更改 CMK 时,DynamoDB 会生成新的表密钥。然后,它使用新的表密钥来重新加密数据加密密钥。
无论您选择哪种 CMK,使用 CMK 创建表密钥的过程都是相同的。
-
- 表密钥
-
DynamoDB 对表使用 CMK 来生成和加密表的唯一数据密钥(也称作表密钥)。该表密钥将在加密表的生命周期内保留。
表密钥用作密钥加密密钥。DynamoDB 使用此表密钥来保护用于加密表数据的数据加密密钥。DynamoDB 会为表中的每个底层结构生成唯一的数据加密密钥,但多个表项目可能受相同的数据加密密钥的保护。