DynamoDB 加密吗?

加密。所有 DynamoDB 数据默认都是静态加密的,使用存放在 AWS Key Management Service(KMS)里的加密密钥,而且加密无法关闭。密钥类型由你选择——AWS 拥有的密钥(默认,免费)、AWS 托管的密钥,或客户托管的密钥——传输中的数据则由 HTTPS/TLS 保护。

静态加密覆盖了什么

加密适用于一张加密表存放在持久介质上的一切:表本身(包括它的主键)、本地和全局二级索引、流、全局表以及备份。注意,如果你的表有排序键,其中一些标记范围边界的排序键会以明文形式存放在表元数据里。

三种密钥选项

  • AWS 拥有的密钥——默认项。由 DynamoDB 拥有和管理,不额外收费。
  • AWS 托管的密钥——存放在你的账户里,由 AWS KMS 管理(会产生 KMS 费用)。
  • 客户托管的密钥——由你创建、拥有和轮换,对访问有完全控制权(会产生 KMS 费用)。

你随时可以从控制台、CLI 或 API 在几种密钥类型之间切换。

「会产生 KMS 费用」到底是多少钱

AWS 只说有这笔费用,把定价留给你自己算,于是大家就假定一个每秒做上百万次请求的数据库要按请求付费。并不是。加密文档说得很具体:"DynamoDB doesn't call AWS KMS for every DynamoDB operation. The key is refreshed once every 5 minutes per caller with active traffic."

这就化成了你可以自己核对的算术。一个持续有流量的调用方每小时刷新 12 次,那么在一个 730 小时的月份里:

  • 请求数:12 × 730 = 8,760 次 KMS 调用,按每 10,000 次 0.03 美元计,等于 0.026 美元
  • 密钥本身:客户托管密钥 每月 1 美元,按小时折算。AWS 托管的密钥没有每月的密钥费,只有请求费。

所以在一张繁忙的表上,一个客户托管密钥大约是每月 1.03 美元,而且随着流量增长,请求那一半几乎纹丝不动。五十个应用实例打同一张表是 438,000 次调用,也就是 1.31 美元。假如 DynamoDB 真的是每次操作都调用 KMS,一张每月服务 2 亿次请求的表就会多出 600 美元。

在你选定客户托管密钥之前,还有一件值得预留预算的事:禁用它或安排删除它,会让表进入 Inaccessible 状态;而如果 DynamoDB 超过七天联系不上这个密钥,表就会被归档成一份按需备份,然后这份备份要向你收费。

对你的应用是透明的

DynamoDB 在你读取时会透明地解密数据。你不需要为了适配加密表改任何代码,查询照常工作,延迟仍在同样的个位数毫秒区间。如果要在数据离开你的应用之前对单个属性值做端到端保护,AWS 还提供通过 AWS Database Encryption SDK 实现的客户端加密。

深入了解

备份同样是加密的——在备份与 PITR 指南里看它们是怎么工作的,用定价计算器估算表的成本(KMS 是单独计费的),并下载 DynoTable 来浏览你那些加密的表——解密由 AWS 在数据抵达任何客户端之前完成。

参考资料

最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。成本一节所用的 KMS 刷新间隔与价格取回于 2026-07-28。

无需控制台即可使用 DynamoDB

一款快速的 DynamoDB 桌面客户端,可运行 DynamoDB 无法执行的真正 SQL——JOINs、GROUP BY、聚合——并支持可视化编辑和运行在你自己的 Bedrock 密钥上的 AI agent。

30 天免费试用,无需信用卡 — 之后为无时间限制的免费版。