我为SaaS供应商添加了一个IAM角色,该供应商具有只读访问权限,但可以创建Lambda函数。
最初,他们为Lambda请求了广泛的权限:
"Statement": [
{
"Action": [
"lambda:CreateFunction",
"lambda:DeleteFunction",
"lambda:InvokeFunction",
"lambda:UpdateFunctionCode",
"lambda:UpdateFunctionConfiguration"
],
"Effect": "Allow",
"Resource": "*"
},
我不愿意允许通过这种方式访问他们不拥有的资源,即我们的业务关键功能。
当我向他们提出这个问题时,他们说他们的所有职能都将以他们的公司名称作为前缀(例如company_prefix
),所以我认为我可以做到这一点:
...
"Resource": "arn:aws:lambda::<account>:function:company_prefix*"
...
这行不通吗?是否可以通过这种方式限制Lambda函数权限?
答案 0 :(得分:3)
是的,IAM确实为Lambda支持resource-level permissions。
我在新的IAM用户上测试了您的政策的变体。对于与通配符匹配的Lambda函数名称,我成功了。对于不匹配的函数名称,我得到了AccessDeniedException
。
我没有测试所有列出的Lambda动作(仅为GetFunctionConfiguration
,因为它很容易测试),因此请进行测试以确保它满足您的需求。
注意:进行此测试时,您需要耐心等待,因为IAM政策更改并非总是立即生效。