AWS IAM ARN和通配符

时间:2019-08-25 12:31:33

标签: amazon-web-services amazon-iam

https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html的AWS IAM ARN文档中,我可以看到如下所示的通配符用法,这非常令人困惑。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ManageRichardAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:*AccessKey*",
                "iam:GetUser"
            ],
            "Resource": "arn:aws:iam::*:user/division_abc/subdivision_xyz/Richard"
        },
        {
            "Sid": "ListForConsole",
            "Effect": "Allow",
            "Action": "iam:ListUsers",
            "Resource": "*"
        }
    ]
}

在第一条语句"Resource": "arn:aws:iam::*:user/division_abc/subdivision_xyz/Richard"中,为什么我们不指定帐号而只用通配符“ *”代替-我知道在S3的上下文中此留空,但在这里是通配符-这里的通配符到底是什么意思?通配符似乎赋予它类似“任何帐户”的含义,但这不正确吗?

另外,对于第二条语句"Resource": "*",这是否意味着任何资源的ListUsers?这没有任何意义-应该不是像arn:aws:iam::123456789012:这样的东西来指示此AWS账户(123456789012)的列表用户吗?

1 个答案:

答案 0 :(得分:1)

假设查询确实有效(我没有测试它们):

  • 是的,省去帐号是“小”危险,因为这也将允许具有此策略的用户管理其他帐户中同名用户的访问密钥,但是接收方帐户不会接受该请求,因此很安全。
  • ListUsers命令实际上并不需要很多参数(只是一个前缀),因此实际上是“全有或全无” API调用。请注意,它仅适用于请求用户列表,没有其他要求。 (也就是说,没有调用“ ListUsers for a resource”的概念。)

请参阅:Actions, Resources, and Condition Keys for Identity And Access Management - AWS Identity and Access Management