2017-09-06 158 views
0

我們基本上都採用了以下政策一切訪問幾個用戶:AWS拒絕訪問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>" 
      ] 
     } 
    ] 
} 

我已經取代<REGION> < ACCOUNT-ID >和< VPC-ID >「

策略模擬器正確拒絕訪問(StartInstances,StopInstances等),但是,具有此策略的用戶仍可以創建實例在vpc中。

  1. 爲什麼我的策略不拒絕訪問VPC?據我所知「拒絕」會覆蓋「允許」。

  2. 實現此目的的正確方法是什麼?我已閱讀通過thisthis,但不明白如何限制訪問。

+0

查看「RunInstances」支持的文檔資源。我沒有看到VPC在那裏它應該很重要:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-iam-actions-resources.html –

+0

你能更精確嗎?我能夠使用子網嗎?在_Condition Keys_列中列出了'ec2:Vpc'。 – kev

回答

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中添加了子網,它是可選的。如果需要,您可以添加。

+0

ty,這確實阻止了用戶創建新實例,但不幸的是他仍然能夠關閉和終止實例。 – kev

+0

當我們提到ec2。*時,它將如何啓用終止和關閉權限? – Arora20

+0

我希望用戶*不能*在該VPC中做任何事情*。 – kev

1

這是一個棘手的問題。您必須引用幷包含所有操作,包括支持ec2的recources:Vpc條件並拒絕API操作。對於其他操作,您必須找到API操作中常見的條件,並將這些操作包括在單獨的語句塊中,並通過其他方式否認這些操作。使用標籤或其他東西。

另外,由於用戶具有管理員訪問權限,您必須確保用戶不能分離此拒絕策略並升級權限。

對於使用VPC的其他服務,例如, RDS,這是不可能的。

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