aws策略变量$ {aws:username}返回错误未经授权

时间:2015-02-20 14:42:06

标签: amazon-web-services policy amazon-iam aws-cli

我已经按照aws http://docs.aws.amazon.com/IAM/latest/UserGuide/PolicyVariables.html

的文档进行了操作

和问题Can an aws IAM policy dynamically refer to the logged in username?

为用户创建一个策略,以便在Web控制台/用户下列出自己的凭据,这样他就可以生成自己的密钥。

user/Alpha

{
  "Version": "2012-10-17",
  "Statement": [{
      "Effect": "Allow",
      "Action":["iam:*"],
      "Resource":["arn:aws:iam::{myacctnumber}:user/${aws:username}"]
    }
  ]
}

当我将政策附加到user/Alpha时,然后打开一个新的浏览器并以用户Alpha>登录控制台>用户,我收到错误消息

We encountered the following errors while processing your request
X User: arn:aws:iam::{myacctnumber}:user/Alpha is not authorized to perform: iam ListUsers on resource: arn:aws:iam::{myacctnumber}:user/

请注意,user/未显示友好名称,如$ {aws:username}所示。

我也尝试将政策更改为

{
  "Version": "2012-10-17",
  "Statement": [{
      "Effect": "Allow",
      "Action":["iam:*"],
      "Resource":["arn:aws:iam::{myacctnumber}:user/Alpha"]
    }
  ]
}

但显示相同的错误。

如果我进一步更改资源并使其成为通配符,

 "Resource":["arn:aws:iam::{myacctnumber}:user/*"]

完整的用户列表显示给用户Alpha

我是否需要额外的权限才能让用户只看到自己?

THX 领域

1 个答案:

答案 0 :(得分:0)

控制台在显示用户列表时使用iam:ListUsers API调用。此调用不受资源限制。

因此,如果您提供允许ListUsers调用的策略,控制台将正常运行,例如:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:ListUsers"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

用户更新自己设置的唯一方法是通过AWS Command-Line Interface (CLI)或API调用,因为他们可以避免调用ListUsers