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

DynamoDB: can we use encryption and cross-region replication together?

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

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

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

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

问题是:

你是对的。照原样,设置将不起作用,因为 KMS 密钥无法跨区域共享。

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

  1. 稍微修改库,使其在复制过程中使用 K1 解密来自 R1 的数据并使用 K2 重新加密。您会对 DynamoDBStreamsRecordTransformer class.
  2. 感兴趣
  3. 在 R1 和 R2 中导入您自己的密钥 material。检查相关文档 here
    • 警告:操作上可能会很痛苦,具体取决于您的用例。

更新:也加上你的想法,这样它可以帮助以后遇到这个问题的人:

  1. 创建您自己的纯文本数据密钥(可能使用 KMS 的 GenerateRandom API), encrypt it using both K1 and K2 (using the Encrypt API),并将生成的密文与您的数据一起存储在两个区域中。
    • 注意:跨区域调用每次更新。在选项 #1 中,更新是异步的。