2

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

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

我创建了一个名为“部署者”的角色。
然后,我将以下策略附加到该角色:

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

我的期望是策略说......指定的资源(部署者角色)是“允许”对 Lambda 服务执行任何操作

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

您无权执行:lambda:GetAccountSettings。

我发现的唯一解决方案是在策略中使用通配符 Resource 属性...但是这否定了尝试限制仅访问该角色的目的

做我想做的事的政策示例

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

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

谢谢

4

2 回答 2

2

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

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

有关定义资源的更多信息,请参见此处

于 2018-05-23T20:02:35.240 回答
2

改变

{
    "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"
        }
    ]
}
于 2018-05-23T20:13:22.643 回答