DynamoDB 如何使用 AWS KMS

Posted cloudrivers

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 会为表中的每个底层结构生成唯一的数据加密密钥,但多个表项目可能受相同的数据加密密钥的保护。

技术图片

以上是关于DynamoDB 如何使用 AWS KMS的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AWS JavaScript SDK (dynamoDB) 处理 UnprocessedItems?

AWS SDK JavaScript v3 / 如何在 dynamoDB 扫描命令中使用 ExpressionAttributeNames?

如何使用 AWS DynamoDB 实现国际化?

如何使用 node.js 从`AWS dynamodb` 获取/扫描所有项目

如何使用多个索引查询 AWS DynamoDB?

如何使用IoT规则将数据从AWS IoT发送到AWS DynamoDB v2