静态加密:工作原理 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

静态加密:工作原理

Amazon DynamoDB 静态加密使用 256 位高级加密标准 (AES-256) 加密数据,防止未经授权访问基础存储,帮助保护您的数据。

静态加密集成 Amazon Key Management Service (Amazon KMS),管理用于加密表的加密密钥。

创建新表或切换现有表的加密密钥时,可以选择以下 Amazon KMS keys 之一:

  • Amazon 拥有的密钥 – 默认加密类型。此密钥归 DynamoDB 拥有(不另外收费)。

  • Amazon 托管式密钥 – 密钥存储在您的账户中,由 Amazon KMS 管理(收取 Amazon KMS 费用)。

  • 客户管理的密钥 – 密钥存储在账户中,由您创建、拥有和管理。您对 KMS 密钥拥有全部控制权(收取 Amazon KMS 费用)。

Amazon 拥有的密钥

Amazon 拥有的密钥 不存储在 Amazon 账户中。它们是 Amazon 拥有和管理的用于多个 Amazon 账户的 KMS 密钥集合的一部分。Amazon 服务可以使用 Amazon 拥有的密钥 保护数据。

您无法查看、管理或使用 Amazon 拥有的密钥,或者审计其使用情况。但是无需执行任何工作或更改任何计划即可保护用于加密数据的密钥。

使用 Amazon 拥有的密钥,无需支付月费或使用费,它们不会计入账户的 Amazon KMS 配额。

Amazon 托管式密钥

Amazon 托管式密钥 是由与 Amazon KMS集成的 Amazon 服务代表您在账户中创建、管理和使用的 KMS 密钥。您可以查看账户中的 Amazon 托管式密钥、查看其密钥策略以及在 Amazon CloudTrail 日志中审核其使用情况。但是无法管理这些 KMS 密钥或更改其权限。

静态加密自动集成 Amazon KMS,用于为 DynamoDB (aws/dynamodb) 管理加密表的 Amazon 托管式密钥。如果创建加密 DynamoDB 表时 Amazon 托管式密钥 不存在,Amazon KMS 将自动创建新密钥。此密钥将用于未来创建的加密表。Amazon KMS 将安全、高可用性硬件和软件结合起来,提供可针对云扩展的密钥管理系统。

有关管理 Amazon 托管式密钥 权限的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的授权使用 Amazon 托管式密钥

客户托管密钥

客户托管密钥是在您的 Amazon 账户中由您创建、拥有和管理的 KMS 密钥。您可以完全控制这些 KMS 密钥,包括建立和维护其密钥策略、IAM policy 和授权;启用和禁用它们;轮换加密材料;添加标签;创建用于引用的别名;以及计划删除。有关管理客户管理型密钥权限的更多信息,请参阅客户管理型密钥策略

如果指定客户托管密钥作为表级加密密钥,DynamoDB 表、本地和全局二级索引以及流将使用同一客户托管密钥加密。按需备份使用创建备份时指定的表级加密密钥进行加密。更新表级加密密钥不会更改与现有按需备份关联的加密密钥。

将客户托管密钥的状态设置为禁用或计划删除,将使所有用户和 DynamoDB 服务无法加密或解密数据以及对表执行读写操作。DynamoDB 必须有权访问加密密钥,确保您可以继续访问表并防止数据丢失。

如果禁用客户托管密钥或计划删除,则表状态将变为无法访问。为了确保可以继续使用表,必须在七天内提供对指定加密密钥的 DynamoDB 访问权限。一旦服务检测到您的加密密钥无法访问,DynamoDB 会立即向您发送电子邮件通知以提醒您。

注意
  • 如果 DynamoDB 服务无法访问客户托管密钥超过七天,则表将被存档,无法再访问。DynamoDB 为表创建按需备份,并收取费用。可以使用此按需备份将数据还原到新表。要还原,必须启用表上最后一个客户托管密钥,DynamoDB 必须具有访问权限。

  • 如果用于加密全局表副本的客户托管密钥无法访问,DynamoDB 将从副本组删除此副本。检测到客户托管密钥无法访问 20 小时后,副本将不会被删除,停止从该区域复制。

使用 Amazon 托管式密钥 的注意事项

Amazon DynamoDB 无法读取表数据,除非可以访问 Amazon KMS 账户中存储的 KMS 密钥。DynamoDB 使用封装加密和密钥层次结构加密数据。您的 Amazon KMS 加密密钥用于加密此密钥层次结构的根密钥。有关更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的信封加密

可以使用 Amazon CloudTrail 和 Amazon CloudWatch Logs 跟踪 DynamoDB 代表您发送到 Amazon KMS 的请求。有关更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的监控 DynamoDB 与 Amazon KMS 的交互

DynamoDB 不会为每个 DynamoDB 操作调用 Amazon KMS。每 5 分钟为每个有活跃流量的客户端连接刷新一次密钥。

确保您配置 SDK 反复使用连接。否则,将遇到 DynamoDB 延迟,必须为每个 DynamoDB 操作重新建立新的 Amazon KMS 缓存条目。此外,可能需要面对更高 Amazon KMS 和 CloudTrail 成本。例如,要使用 Node.js SDK 执行此操作,可以创建开启 keepAlive 的新 HTTPS 代理。有关更多信息,请参见 Amazon SDK for JavaScript 开发人员指南在 Node.js 中配置 maxSockets