Gee*_*cks 5 amazon-web-services amazon-iam aws-lambda
你们和我一样对 AWS 感到沮丧吗?(IAM - 明白了吗?它的双关语......)
查看这个 IAM 政策——就在几个月前——它是 100% 有效并且运行良好。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt123456",
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": [
"arn:aws:lambda:ca-central-1:99999:function:test",
"arn:aws:lambda:us-east-1:99999:function:test",
"arn:aws:lambda:us-east-2:99999:function:test",
"arn:aws:lambda:us-west-1:99999:function:test",
"arn:aws:lambda:us-west-2:99999:function:test"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
如果您今天将此2017 年有效策略粘贴到 IAM 控制台编辑器中,您将被告知:
此策略不授予任何权限。要授予访问权限,策略必须具有具有适用资源或条件的操作
现在,您可以亲眼看到,给出了 5 个非常具体的“适用资源”。那么这里给出了什么?这些 AWS 男孩和女孩对我们所有现有的 IAM Lambda 政策做了什么?结果我们仍然安全吗?
因此,假设您刚刚创建了一个新的 Lambda fn,并且您想授予一个 单个用户权限以运行该特定 fn 而没有其他. 如果您从头开始并使用新控制台,那么您可以有效地构建接近的所有内容:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "lambda:InvokeFunction",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
所以我们这里有一个大问题,不是吗?那个小星号意味着这个策略可以在整个账户中运行任何 Lambda fn(我已经证明了这一点)。由于您不能再在权限 Lambda:InvokeFunction 中指定资源,因此此权限对于我们的用例来说毫无用处。
可是等等!还有另一个 Lambda 权限,称为 Lambda:Invoke,有了这个权限,你CAN指定,像这样的控制台编辑特定的资源:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "lambda:Invoke",
"Resource": "arn:aws:lambda:us-east-1:99999:function:test"
}
]
}
Run Code Online (Sandbox Code Playgroud)
嗯,这看起来很不错不是吗?!我的意思是,也许 AWS 只是将权限名称从 InvokeFunction 更改为 Invoke。哎呀,那还不错,当然不值得在 SO 上提出这个创纪录的长问题,对吗?嘿,是的,好吧,别像我做的那样,以为你要得分了,就浑身沾沾自喜。欢迎来到这个新地狱:
错误:用户:arn:aws:iam::99999:user/PersistentDumbass 无权执行:lambda:InvokeFunction 资源:arn:aws:lambda:us-east-1:99999:function:test
什么?
好的,首先,我们没有调用AWS 开发工具包中名为“InvokeFunction”的函数,而是调用了“Invoke”。其次,我们确实将此政策附加到我们的用户。第三,我们等了一个小时以确保这不是传播问题,并检查了相对无用的AWS 服务健康仪表板- 即使 us-east-1 关闭,它也一直是绿色的。网飞。
如此神童,我召唤您浏览 AWS 现在已过时的文档和糟糕的命名选择,为我们应该允许一个用户调用一个特定函数的“当前方式”创建一个答案。
AWS 通过论坛向我发送了以下内容:
嗨极客,
我们已将此识别为 IAM 控制台中的错误。我们正在努力解决这个问题。请继续使用 lambda:InvokeFunction 并在资源元素中指定函数。您的初始政策应该继续有效。请不要在您的策略中使用 lambda:Invoke。在 IAM 控制台中修复此问题后,我会更新您。
当亚马逊人使用他们的论坛时,这是美好的一天。不过,我仍将继续使用 AWS-CLI。
这个“答案”将 100% 像 AWS 控制台现在一样混乱,而且没有办法绕过它。正如 Michael - sqlbot 在他的评论中所回避的那样,他最近对新 AWS Lambda 控制台的体验并不好,他想知道该策略是否正常,但控制台错误地将其报告为“未授予权限”。他是部分正确的。但问题更深。这是我在“2018 Lambda IAM 权限”中得到的最好的证明,因为他们匆忙推出了一个不太出色的产品:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "iam:CreatePolicy", "iam:DeletePolicy " ], "资源": "*" } ] }
aws iam create-policy --policy-name myPolicyName --policy-document file://policy.json
有一些细微的差异会让你疯狂测试。
这个有问题的控制台和不一致的文档花费了我 6 多个小时的努力。我希望这个问答能让你免于悲伤。
| 归档时间: |
|
| 查看次数: |
2912 次 |
| 最近记录: |