10

我正在 AWS Lambda 上编写一个无服务器函数。

在某些情况下,我需要使用kms:GenerateDataKey*权限。

这究竟是什么目的。我检查了 AWS 文档,但它太神秘了。有人可以举一个实际的例子来说明它的用途吗?

4

2 回答 2

10

需要 kms:GenerateDataKey 权限的 Lambda 函数很可能是使用对称数据密钥加密大量数据。

kms:GenerateDataKey用于实现信封加密,即用另一个密钥加密一个密钥的过程。对称密钥算法比公钥算法更快并且产生更小的密文,而公钥算法提供固有的角色分离和更容易的密钥管理。信封加密结合了每种策略的优势。

AWS 中的信封加密

  1. 在 KMS 中创建客户主密钥。尽管 CMK 可用于加密高达 4K 大小的数据,但它主要用于加密/解密数据加密密钥。

  2. 生成数据加密密钥 - 用于使用对称加密算法加密数据。

  3. 使用 CMK 加密数据密钥。

  4. 将加密数据和加密数据密钥存储在一起。

当用户调用kms:GenerateDataKey时,KMS 生成一个数据密钥,使用 CMK 对其进行加密,最后返回明文和加密的数据密钥对(上面的步骤 2 和 3)。

用户负责管理这些密钥。明文数据密钥通常在加密数据后立即丢弃,而加密数据密钥与加密数据一起存储。数据加密密钥必须kms:decrypt 在解密数据之前使用。

于 2019-11-14T10:38:42.853 回答
2

我不熟悉权限本身,但我在文档中发现了这一点:

使用 AWS KMS 中的密钥策略 - AWS 密钥管理服务

kms:GenerateDataKey*– 允许密钥用户成功请求数据加密密钥(数据密钥)以用于客户端加密。密钥用户可以选择接收数据密钥的两份副本——一份以明文形式,另一份使用此 CMK 加密——或仅接收加密形式的数据密钥。

于 2019-11-14T06:07:35.400 回答