AWS拒绝访问VPC

时间:2017-09-06 02:37:53

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

我们有一些用户基本上可以使用以下策略访问所有内容:

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

有没有办法限制对所选VPC的访问?

我尝试创建以下策略并将其附加到用户(通过组):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1504660000000",
            "Effect": "Deny",
            "Action": [
                "ec2:*"
            ],
            "Resource": [
                "arn:aws:ec2:<REGION>:<ACCOUNT-ID>:vpc/<VPC-ID>"
            ]
        }
    ]
}

我已经替换了&lt; REGION&gt; &LT; ACCOUNT-ID&GT;和&lt; VPC-ID&gt;&#34;。

策略模拟器正确拒绝访问(StartInstances,StopInstances等)。然而,附加了此策略的用户仍然可以在vpc中创建EC2实例。

  1. 为什么我的政策不拒绝访问VPC?据我所知&#34; Deny&#34;覆盖&#34;允许&#34;。

  2. 实现这一目标的正确方法是什么?我已阅读thisthis,但不了解它将如何限制访问。

2 个答案:

答案 0 :(得分:2)

这是一个棘手的问题。您必须引用并包含所有操作,包括支持ec2:Vpc条件的recource,并拒绝API操作。对于其他操作,您必须找到API操作中常见的条件,并将这些操作包含在单独的语句块中,并通过其他方式拒绝这些操作,例如:使用标签或其他东西。

此外,由于用户具有AdministratorAccess,您必须确保用户无法分离此拒绝策略并升级该权限。

对于使用VPC的其他服务,例如RDS,这是不可能的。

[1] http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-iam-actions-resources.html

答案 1 :(得分:1)

在这里,你不想在一个VPC中给予ec2许可。因此,您应该将vpc视为条件和资源,如ec2。

请看下面的代码 -

{
  "Effect": "Deny",
  "Action": "ec2:*",
  "Resource": "arn:aws:ec2:region:account:subnet/*",
    "Condition": {
     "StringEquals": {
        "ec2:Vpc": "arn:aws:ec2:region:account:vpc/vpc-1a2b3c4d"
        }
   }
}

解释 - 这里我们拒绝对特定vpc下的ec2的权限。这里我在ec2中添加了子网,它是可选的。如果需要,您可以添加。