首页 文章

如果实例ID与IAM策略中的实例ID不匹配,则限制IAM角色附加到EC2实例

提问于
浏览
1

我正在尝试创建IAM策略,该策略限制将IAM角色传递给EC2实例,如果实例id不等于 i-1234567890abcd

策略中没有错误,但此策略也没有任何影响 . 如果我从以下策略中删除 Condition ,它可以工作,但它限制了要附加到任何EC2实例的角色 .

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": ["iam:PassRole"],
      "Resource": ["arn:aws:iam::000000000000:role/MyEC2InstanceSpecificRole"],
      "Condition": {
        "ArnNotEquals": {
          "ec2:SourceInstanceARN": "arn:aws:ec2:us-east-1:000000000000:instance/i-1234567890abcd"
        }
      }
    }
  ]
}

1 回答

  • 0

    我怀疑这是不可能的 .

    Granting a User Permissions to Pass a Role to an AWS Service文档说明:

    要将角色(及其权限)传递给AWS服务,用户必须具有将角色传递给服务的权限 . 这有助于管理员确保只有经过批准的用户才能使用授予权限的角色配置服务 . 要允许用户将角色传递给AWS服务,您必须向用户的IAM用户,角色或组授予PassRole权限 . 当用户将角色ARN作为参数传递给使用该角色为服务分配权限的任何API时,该服务将检查该用户是否具有iam:PassRole权限 . 要限制用户仅传递已批准的角色,可以使用IAM策略语句的Resources元素过滤iam:PassRole权限 .

    同样在Using an IAM Role to Grant Permissions to Applications Running on Amazon EC2 Instances它说:

    PassRole不是与RunInstances或ListInstanceProfiles相同的API动作 . 相反,只要角色ARN作为参数传递给API(或控制台代表用户执行此操作),AWS就会检查该权限 . 它可以帮助管理员控制哪些用户可以传递哪些角色 .

    PassRole 的正常用例是确保用户不再授予AWS服务以允许他们自己使用的权限 . 它试图避免非Admin用户将Admin角色传递给服务的情况,然后使用该服务来访问通常不允许访问的资源 . 例如,启动具有Admin角色的Amazon EC2实例,以便他们可以登录到该实例并发出他们通常无权使用的Admin命令 .

    上述文档建议评估 PassRole 权限以确认其 permission to pass a certain role to a certain service ,而不是该服务将如何使用角色本身(例如,然后将其分配给EC2实例以生成STS凭证) .

相关问题