【问题标题】:KMS Decrypt Permissions for AWS LambdaAWS Lambda 的 KMS 解密权限
【发布时间】:2020-05-06 20:43:26
【问题描述】:

我无法解决,文档也不是很有帮助。

我有一个需要使用 KMS 解密值的 lambda。我正在使用 sam 来部署我的 lambda。最初我尝试添加策略声明

            - Effect: Allow
              Action:
                - kms:Decrypt
              Resource:
                - 'arn:aws:kms:us-west-2:<account>:key/<key>' 

但这不起作用,因为(据我了解)我需要告诉 KMS 该资源允许执行此操作。我试图通过创建一个 IAM 角色来解决此问题,我可以将其附加到一个 lambda 资源,该资源是 AWSLambdaBasicExecutionRole,并带有我的密钥策略。

创建我的新角色后,尝试添加关键用户时它不会显示在 KMS 中,尽管其他角色会显示。我在以 IAM 用户身份登录控制台时创建了该角色,但我的角色有一个包含根账户 ID 的 arn。

如果 sam/cloudformation 将我的资源 arn 添加到 KMS 密钥策略中,aws sam 对 KMS 没有任何了解,我宁愿通过 iam 中的角色来完成。

编辑:运行时我得到的错误是

{"errorType":"AccessDeniedException","errorMessage":"The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access.","code":"AccessDeniedException","message":"The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access."

我作为key 使用的值在KMS 控制台中被称为key-id

【问题讨论】:

  • 政策声明看起来很好,你怎么知道它不起作用?有任何错误信息吗?你也可以分享在你的 Lambda 中运行的代码吗?
  • 也是&lt;key&gt;中的key/&lt;key&gt;密钥别名或密钥ID?
  • 谢谢我用错误信息和密钥来自哪里更新了我的问题
  • 你能发布整个 SAM YAML 文件吗?
  • + 在您的 Lambda 中运行的代码

标签: aws-lambda aws-kms


【解决方案1】:
  1. 检查 lambda 函数是否在 Key 所在的同一区域运行。
  2. 您能检查一下策略的语法吗?它应该类似于下面的示例:
      Policies:
        - KMSDecryptPolicy:
            KeyId: 'arn:aws:kms:us-west-2:<account>:key/<key>'
  1. 还要检查您机器中的 SAM CLI 版本 :)

【讨论】:

猜你喜欢
  • 2022-01-01
  • 2019-11-18
  • 1970-01-01
  • 2020-10-21
  • 1970-01-01
  • 2020-03-31
  • 2017-11-18
  • 2020-06-30
  • 2019-10-14
相关资源
最近更新 更多