KMS 的多区域策略

Multi region strategy for KMS

我正在尝试为使用 dynamodb 全局表的 lambda 实施多区域策略。

我想使用 KMS 对 userId 和 pin 进行客户端加密。如何为 KMS 实施 多区域策略。我发现这个例子谈论的是相同的 https://aws.amazon.com/blogs/security/how-to-use-the-new-aws-encryption-sdk-to-simplify-data-encryption-and-improve-application-availability/

这是否意味着我必须在我部署 lambda 的所有区域中创建 KMS 密钥(延迟)?

问题1:如果是这样,如果我在MultipleProviderFactory中提供多个区域,它使用哪个密钥来加密数据,它使用哪个区域来解密数据?

问题 2:如果我必须加密大于 4096Kb 的数据,这会有什么变化?

加密SDK的思路是使用信封加密。因此,每次您加密消息或数据时,SDK 都会为该消息生成一个随机数据密钥,并使用它来加密消息 body。然后它使用您的所有提供者加密密钥本身,并将这些加密密钥包含在消息的 header 中。

只要可以从 header 中解密其中任何一种形式的密钥,SDK 就可以检索数据密钥并使用它来解密消息 body。

所以第一个问题:它用所有的加密并用其中的任何一个解密。我不知道它如何选择解密提供者的实际逻辑,但它可能只是按照它们在 MultipleProviderFactory 中定义的顺序。

另一个:您可以加密超过 4KB(猜测“4096Kb”是错字)而无需任何更改,因为 body 在本地使用 AES encrypted/decrypted。 4KB 限制仅适用于负载 to/from KMS,它只是数据密钥。