aws-lambda - AWS Lambda 的 KMS 解密权限
问题描述
我无法解决,文档也不是很有帮助。
我有一个需要使用 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
askey-id
在 KMS 控制台中被称为。
解决方案
- 检查 lambda 函数是否在 Key 所在的同一区域运行。
- 你能检查一下策略的语法吗?它应该类似于下面的示例:
Policies:
- KMSDecryptPolicy:
KeyId: 'arn:aws:kms:us-west-2:<account>:key/<key>'
- 检查您机器中的 SAM CLI 版本:)
推荐阅读
- java - 游戏对象(手机屏幕)上的 Libgdx TouchListner
- javascript - Chartist.js - 向 Y 轴添加刻度线(不是值)
- c++ - 在 linux 上使用 c++ 库
- python - conda 和 python shell 脚本
- arrays - Bash 运行显式路径有效,但变量路径无效
- spring - SQL 状态 [99999];错误代码 [17004];无效的列类型;嵌套异常是 java.sql.SQLException: Invalid column type
- javascript - 在 VueJs 组件中使用 ChartJs
- linux - rcs -u motd 破锁
- java - Spring Boot 自动创建数据库表
- c# - "值不能为空。\r\n参数名称:文本"