kms:GenerateDataKey在AWS中的用途是什么

时间:2019-11-14 05:54:53

标签: amazon-web-services aws-kms

我正在AWS Lambda上编写无服务器功能。

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

这的确切目的是什么。我检查了AWS文档,但它太神秘了。有人可以举一个使用它的实际例子吗?

2 个答案:

答案 0 :(得分:0)

我不熟悉权限本身,但是我在文档中找到了它:

来自Using Key Policies in AWS KMS - AWS Key Management Service

  

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

答案 1 :(得分:0)

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

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

AWS中的信封加密

  1. 在KMS中创建客户主密钥。即使CMK可以用于加密最大4K的数据,它也主要用于加密/解密数据加密密钥。

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

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

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

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

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