Amazon-Web-Services

用於限制對一個 VPC 的訪問的 IAM 策略

  • July 11, 2018

我正在嘗試將使用者限制為單個 VPC。我通過控制對 Amazon VPC 資源的訪問並提出了以下策略,但它不起作用。有人可以指出其中的錯誤嗎?

我應該提到,在我在模擬設置中的條件鍵下設置 VPC ARN 後, IAM 策略模擬器似乎認為該策略很好。

(我已將區域、帳戶和 vpc-id 替換為策略中的實際值。)


{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Effect": "Allow",
           "Action": [
               "ec2:*Vpc*",
               "ec2:*Subnet*",
               "ec2:*Gateway*",
               "ec2:*Vpn*",
               "ec2:*Route*",
               "ec2:*Address*",
               "ec2:*SecurityGroup*",
               "ec2:*NetworkAcl*",
               "ec2:*DhcpOptions*",
               "ec2:RunInstances",
               "ec2:StopInstances",
               "ec2:StartInstances",
               "ec2:TerminateInstances",
               "ec2:Describe*"
           ],
           "Resource": "*",
           "Condition": {
               "StringEquals": {
                   "ec2:Vpc": "arn:aws:ec2:region:account:vpc/vpc-id"
               }
           }
       }
   ]
}

謝謝。

您很可能需要按照範例 5 重構您的IAM策略。在控制對 Amazon VPC 資源的訪問中將實例啟動到特定 VPC中:

{
  "Version": "2012-10-17",
  "Statement": [{
     "Effect": "Allow",
     "Action": "ec2:RunInstances",
     "Resource": "arn:aws:ec2:region:account:subnet/*",
       "Condition": {
        "StringEquals": {
           "ec2:Vpc": "arn:aws:ec2:region:account:vpc/vpc-1a2b3c4d"
           }
     }
  },
  ...
  ]
}

也就是說,可用資源(及其粒度)特定於每個 API 操作,因此對於手頭的範例,RunInstances適用於特定子網中的 EC2 資源,而這又是 VPC 的一部分;因此,您需要定位子網,但可以通過上述IAM 策略條件ec2:Vpc的屬性進一步限制可能的子網集。

引用自:https://serverfault.com/questions/568775