创建一个 IAM 策略,允许除 IAM 之外的所有内容(PassRole 除外)

创建一个 IAM 策略,允许除 IAM 之外的所有内容(PassRole 除外)

我正在尝试修改 IAM 策略,以便用户可以将 IAM 角色与允许对我们的 S3 存储桶具有只读权限的 EC2 实例关联。

我们的团队使用 AWS 进行了大量研发,因此我不愿意限制对除 IAM 之外的任何 AWS 服务的访问,因为这将允许提升权限。

我已经使用了这个问题添加 iam:PassRole,但该策略在模拟器中验证失败。

{
"Statement": [
    {
        "Effect": "Allow",
        "NotAction": "iam:*",
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": "iam:PassRole",
        "Resource": "arn:aws:iam::ACCOUNTID:role/MYROLE"
    }
]
}

如果我将第二条语句的资源更改为"Resource": "*"验证成功,并且模拟器显示 PassRole 被明确允许,则 IAM 中的所有其他内容都被隐式拒绝,而 S3 中的所有内容都被明确允许。

我对命名角色做错了什么?允许所有人使用 PassRole 会带来哪些安全隐患(我假设策略模拟器没有撒谎)。有没有更好的方法来实现我想要的?

答案1

对我来说,这似乎是 Policy Simulator 中的一个错误。甚至亚马逊自己也宣布了和你一样的政策在他们的例子中。模拟器会抱怨,但实际上将此策略附加到用户身上效果很好。

我对命名角色做错了什么?

据我所知,什么也没有。

允许所有人都使用 PassRole 会带来什么安全隐患(我假设策略模拟器没有撒谎)。

那么,您将允许iam:PassRole任何角色执行该操作。这基本上意味着具有此策略的用户将能够启动附加了任何 IAM 角色的 EC2 实例。我上面链接的 AWS 文档

或者,您可以通过在此策略中将资源指定为“*”来授予 IAM 用户访问您所有角色的权限。但是,请考虑使用您的角色(现有角色或您稍后将创建的角色)启动实例的用户是否可能被授予他们不需要或不应该拥有的权限。

相关内容