NYC*_*yes 6 lambda access-denied amazon-web-services amazon-iam aws-lambda
注意:我通过 IAM 用户控制台帐户执行所有 AWS 配置,该帐户基本上拥有 AWS/Amazon 帐户所有者的所有权限。我将此 IAM 用户称为根帐户。
问题描述:
经正确验证的政策声明如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1111111111111", # <--- Altered for this post.
"Effect": "Allow",
"Action": [
"lambda:GetFunction",
"lambda:ListFunctions",
"lambda:UpdateFunctionCode",
"lambda:UpdateFunctionConfiguration"
],
"Resource": [
"arn:aws:lambda:*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
回到笔记本电脑 CLI,我发出以下命令,该命令生成 AccessDeniedException:
user@linux$ aws lambda list-functions --profile lambda-test
Run Code Online (Sandbox Code Playgroud)
这是例外情况:
An error occurred (AccessDeniedException) when calling the ListFunctions operation: User: arn:aws:iam::<AWS-Account-ID>:user/lambda-test is not authorized to perform: lambda:ListFunctions
Run Code Online (Sandbox Code Playgroud)
我错过了什么?(当然,我做到了。=:))提前致谢!
您可以将两种类型的访问策略与 AWS lambda 结合使用:
1) 基于身份的策略(IAM 策略) 您正在使用的策略是 IAM 策略。如果您阅读此AWS lambda 访问控制概述文档,当您使用基于 IAM 的访问时,目前 AWS 仅支持 * 作为资源。由于“lambda:ListFunctions”无法使用完整的 ARN 进行调用(请参阅本文档了解哪些可以使用 FULL arn 进行调用,哪些可以使用 * 进行调用),因此您需要给出 *.
在当前实现中,Lambda 不支持使用资源 ARN(也称为资源级权限)来识别某些 API 操作的特定资源,因此您必须指定通配符 (*)。
2) 基于资源的策略(Lambda 函数策略)
每个 Lambda 函数都可以具有与其关联的基于资源的权限策略。对于 Lambda,Lambda 函数是主要资源,这些策略称为 Lambda 函数策略。您可以使用 Lambda 函数策略授予跨账户权限,作为将基于身份的策略与 IAM 角色结合使用的替代方法。例如,您只需向 Lambda 函数策略添加权限即可授予 Amazon S3 调用 Lambda 函数的权限,而无需创建 IAM 角色。
更多示例在这里
归档时间: |
|
查看次数: |
10335 次 |
最近记录: |