Amazon-Ec2
是否可以通過 IAM 限制 EC2 控制台訪問特定 VPC 內的機器?
我想創建一個具有完全控制台訪問權限(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-*" ] } ] }
希望這可以幫助。