带有IAM角色的EC2实例的AccessDenied

时间:2019-04-01 19:24:34

标签: amazon-web-services amazon-ec2 amazon-iam

我具有以下IAM角色:

  • AmazonEC2FullAccess
  • 自定义政策

在我的自定义政策中,我有:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "VisualEditor1",
        "Effect": "Allow",
        "Action": "iam:ListRoles",
        "Resource": "*",
        "Condition": {
            "IpAddress": {
                "aws:SourceIp": "10.0.0.0/16"
            }
        }
    }
]
}

然后,我创建一个新的EC2实例并将其附加到该角色。

我尝试在EC2实例内部执行

aws iam list-roles

但是我得到这个错误:

  

调用ListRoles操作时发生错误(AccessDenied):   用户:arn:aws:sts :: XXXXXXX:assumed-role / My-Role / i-XXXXXX不是   授权执行:资源上的iam:ListRoles:   arn:aws:iam :: XXXXXXX:role /

请问您为什么不起作用?谢谢。

PS:EC2实例的IP为10.0.0.XX

1 个答案:

答案 0 :(得分:1)

IAM API驻留在Internet上。因此,当它收到您的请求时,它将来自实例的IP地址。 IAM从未看到实例的私有IP地址。

理论上,不需要IP地址限制,因为该角色只能在已分配角色的实例上使用。您应该将安全性放在谁可以使用角色(iam:PassRole)上,而不是在哪里可以使用角色。