Amazon-Ec2

是否可以通過 IAM 限制 EC2 控制台訪問特定 VPC 內的機器?

  • March 6, 2014

我想創建一個具有完全控制台訪問權限(API 也是)的使用者,專門針對我們 AWS 環境中的一個 VPC。

結果應該是,當點擊 EC2 實例時,使用者只會看到指定 VPC 中的機器。

我嘗試了以下操作,但沒有成功:

{
 "Statement": [
   {
     "Sid": "Stmt1393948025170",
     "Action": "ec2:*",
     "Effect": "Allow",
     "Resource": "arn:aws:ec2:*:*:vpc/<vpc-id>"
   }
 ]
}

從亞馬遜支持回來:

不幸的是,目前沒有辦法做到這一點。雖然我們現在確實為 EC2 資源提供資源級權限,(更多資訊在這裡… http://aws.typepad.com/aws/2013/07/resource-permissions-for-ec2-and-rds-resources.html ) 不支持基於特定 VPC 有條件地控制訪問。

他們提到這是因為這個連結:http ://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html#ec2-supported-iam-actions-resources顯示有支持的 EC2 API 操作數量有限,並且沒有一個支持將 VPC 作為 ARN。

“ec2:Describe*”也有一個限制,它根本不能由資源 ARN 指定,也不能有條件地控制。

有一個使用條件語句“ResourceTag/tag-key”的解決方法,大多數 API 呼叫都可以使用它。因此,您可以使用“控制”:“允許”來標記您的實例,並且不要在要附加到相關使用者的策略中包含創建或刪除標籤權限。您的政策如下所示:

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Effect": "Allow",
           "Action": "ec2:Describe*",
           "Resource": "*"
       },
       {
           "Effect": "Allow",
           "Action": [
               "ec2:StartInstances",
               "ec2:StopInstances",
               "ec2:RebootInstances",
               "ec2:TerminateInstances"
           ],
           "Resource": "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*",
           "Condition": {
               "StringEquals": {
                   "ec2:ResourceTag/Control": "Allow"
               }
           }
       }
   ]
}

然後,您可以使用以下命令限制使用者僅在特定 VPC 中啟動實例subnet-id

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Effect": "Allow",
           "Action": "ec2:RunInstances",
           "Resource": [
               "arn:aws:ec2:region:account:instance/*",
               "arn:aws:ec2:region:account:subnet/SUBNET-ID-HERE",
               "arn:aws:ec2:region:account:volume/*",
               "arn:aws:ec2:region:account:network-interface/*",
               "arn:aws:ec2:region:account:key-pair/*",
               "arn:aws:ec2:region:account:security-group/*",
               "arn:aws:ec2:region::image/ami-*"
           ]
       }
   ]
}

希望這可以幫助。

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