我具有以下IAM角色:
在我的自定义政策中,我有:
{
"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
答案 0 :(得分:1)
IAM API驻留在Internet上。因此,当它收到您的请求时,它将来自实例的IP地址。 IAM从未看到实例的私有IP地址。
理论上,不需要IP地址限制,因为该角色只能在已分配角色的实例上使用。您应该将安全性放在谁可以使用角色(iam:PassRole
)上,而不是在哪里可以使用角色。