AWS IAM 角色策略资源限制

AWS IAM Role Policy Resource Restriction

我对 AWS 比较陌生,正在尝试了解角色策略的工作原理。我已经阅读了非常全面的 AWS 文档,但我应用的策略仍然没有达到我的预期...让我解释一下

我正在尝试授予对角色的访问权限,以便在假定角色时,它可以使用 lambda

我创建了一个名为 "deployer" 的角色。
然后我将以下政策附加到该角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Action": "lambda:*"
            "Resource": "arn:aws:iam::<account_id>:role/deployer"
        }
    ]
}

我在这里的期望是政策说...指定的资源(部署者角色)是 "Allowed" 对 Lambda 服务执行任何操作

但是,当我在前端切换到该角色时,我在 Lambda 仪表板中收到以下错误:

You are not authorized to perform: lambda:GetAccountSettings.

我找到的唯一解决方案是在策略中通配 Resource 属性...然而,这否定了试图限制仅访问该角色的目的

符合我要求的政策示例

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Action": "lambda:*"
            "Resource": "*"
        }
    ]
}

有人可以向我解释一下这里到底发生了什么吗?我显然不明白 Resource 属性的用途...对我来说,第二个政策说任何资源都可以用 Lambda 做任何事情...

谢谢

您试图在资源属性中定义应用策略的角色 - 这不是资源属性的用途。资源属性与您希望用户能够调用的 Lambda 函数相关。

要将此策略分配给角色,只需按上述方式创建策略(适当定义您的 Lambda 资源,如果您真的想将此应用到所有 Lambda 函数,它可以是通配符)然后将策略分配给IAM 控制台中的角色。

有关定义资源的详细信息,请参阅 here

改变

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Action": "lambda:*"
            "Resource": "arn:aws:iam::<account_id>:role/deployer"
        }
    ]
}

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Action": "lambda:*"
            "Resource": "arn:aws:lambda:<region>:<account_number>:function:my-awesome-lambda-function"
        }
    ]
}