【问题标题】:AccessDenied for EC2 Instance with attached IAM Role附加 IAM 角色的 EC2 实例的 AccessDenied
【发布时间】:2019-08-23 00:52:06
【问题描述】:

我有以下 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

【问题讨论】:

  • 这不是 IAM 看到的 IP。您可以通过删除 IP 地址条件来确认它。并且也许改为使用您的 EC2 实例的公共 IP 来满足您的条件。
  • 您想通过添加 IP 限制来控制什么?您是否担心该角色被其他地方或其他人使用?
  • 谢谢你们,这很有意义,而且有效!

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


【解决方案1】:

IAM API 存在于互联网上。因此,当它收到您的请求时,它将来自实例的 IP 地址。 IAM 永远不会看到实例的私有 IP 地址。

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

【讨论】:

  • 有道理,因为 iam 代表 WHO,而安全组代表 from WHERE。
猜你喜欢
  • 2020-09-02
  • 2021-07-24
  • 2021-03-01
  • 2018-07-09
  • 1970-01-01
  • 2017-10-01
  • 2022-01-13
  • 1970-01-01
  • 2016-11-21
相关资源
最近更新 更多