5

DynamoDB:我们可以同时使用加密和跨区域复制吗?

我们正在为我们的新应用程序评估 DynamoDB。我们的要求是:

  • 静态数据加密
  • 用于灾难恢复的跨区域复制。我们在某个地区的应用程序必须仅依赖该地区的服务

使用 AWS 提供的 Java 库可以单独满足我们的要求。解决方案是:

但是,我们不确定这些解决方案是否可以协同工作。我们担心我们将无法解密跨区域复制的记录。客户端加密解决方案建议使用 KMS 管理的密钥在根处建立密钥层次结构。KMS 是特定于区域的,因此如果我们将记录复制到另一个区域,我们将无法解密它们。加密密钥在其他区域不可访问。

问题是:

  • 密匙在KMS,是不是就不可能解密或跨地域复制记录?
  • 是否有推荐的方法来复制加密的 DynamoDB 记录?有没有人这样做过?
  • 有没有我们应该考虑的替代方案?
4

1 回答 1

5

你说的对。由于 KMS 密钥无法跨区域共享,因此设置将无法正常工作。

假设您正在将数据从区域 R1 复制到 R2,它们分别具有 KMS 密钥 K1 和 K2。我可以建议以下替代方案:

  1. 稍微修改一下库,使其在复制期间使用 K1 解密来自 R1 的数据并使用 K2 重新加密。您会对DynamoDBStreamsRecordTransformer类感兴趣。
  2. 在 R1 和 R2 中导入您自己的密钥材料。在此处查看相关文档。
    • 警告:可能在操作上很痛苦,具体取决于您的用例。

更新:也添加您的想法,以便它可以帮助将来遇到这个问题的任何人:

  1. 创建您自己的纯文本数据密钥(可能使用 KMS 的GenerateRandom API),使用 K1 和 K2(使用Encrypt API)对其进行加密,并将生成的密文与您的数据一起存储在两个区域中。
    • 警告:每次更新都需要跨区域调用。在选项 #1 中,更新是异步的。
于 2016-11-11T08:07:07.857 回答