向同一帐户中的IAM用户授予AWS IAM角色权限

时间:2018-12-19 20:02:16

标签: amazon-web-services amazon-s3 amazon-iam aws-iam

我有一个具有s3只读权限的AWS角色。我已经为AWS用户配置了aws cli。因此,我想使用同一用户浏览aws cli中的s3文件。 我所做的是 为角色arn:aws:iam::<1234...>:role/test-role添加了对root用户的信任关系,以便我可以将其授予所有iam用户

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<1234..>:root",
        "Service": "s3.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

然后,我向用户添加了一个策略以承担上述角色。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt12345",
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": "arn:aws:iam::<1234...>:role/test-role"
        }
    ]
}

当我尝试列出时,出现权限被拒绝错误。

aws s3 ls

An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied

我确保该角色具有完整的s3读取权限,如下所示。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": "*"
        }
    ]
}

有人可以指导问题出在哪里吗?

1 个答案:

答案 0 :(得分:1)

如果使用的是CLI,则需要具有正确凭据的配置文件。

您应该将凭据保存在.aws / credentials文件中,例如:

[myprofile]
aws_access_key_id =  ... access key ...
aws_secret_access_key = ... secret access key …

然后,您可以将假定角色的配置文件添加到.aws / config文件,例如:

[profile test-role]
source_profile=myprofile
role_arn = arn:aws:iam::<1234...>:role/test-role

最后,您在运行CLI命令之前将AWS_PROFILE设置为test-role

SET AWS_PROFILE=test-role
aws s3 ls

我本来会发布link to the AWS documentation,但此网站不赞成仅链接的答案。