Amazon-Vpc
適用於單個 VPC 子網的 Amazon AWS IAM 策略
我想創建一個允許使用者部署實例的 IAM 策略,如下所示:
- 他們只能使用 1 個 AMI
- 他們只能部署到 1 個特定的 VPC 子網
- 他們只能使用 1 個特定的 VPC 安全組
此場景在此處的 VPC 文件中得到解決(範例 4):
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_IAM.html#subnet-sg-example-iam
我已經嘗試過我自己的政策版本:
{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:eu-west-1:937821706121:image/ami-141ac363", "arn:aws:ec2:eu-west-1:937821706121:subnet/subnet-733de516", "arn:aws:ec2:eu-west-1:937821706121:network-interface/*", "arn:aws:ec2:eu-west-1:937821706121:volume/*", "arn:aws:ec2:eu-west-1:937821706121:key-pair/*", "arn:aws:ec2:eu-west-1:937821706121:security-group/sg-4aa80f2f" ] }] }
它不起作用。當我嘗試將實例部署為應用此策略的組的成員時,我的權限被拒絕。我需要包含其他一些策略以允許以這種方式部署實例嗎?
基本上,當涉及到設置全域管理或只讀策略之外的任何事情時,IAM 文件是完全不可靠的。
這是我最終開始採用的策略(至少對於子網位):
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:eu-west-1:937821706121:network-interface/*" ], "Condition": { "ArnNotEquals": { "ec2:Subnet": "arn:aws:ec2:eu-west-1:937821706121:subnet/subnet-733de516" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:eu-west-1::image/ami-*", "arn:aws:ec2:eu-west-1:937821706121:network-interface/*", "arn:aws:ec2:eu-west-1:937821706121:instance/*", "arn:aws:ec2:eu-west-1:937821706121:subnet/*", "arn:aws:ec2:eu-west-1:937821706121:volume/*", "arn:aws:ec2:eu-west-1:937821706121:key-pair/*", "arn:aws:ec2:eu-west-1:937821706121:security-group/*" ] } ] }
這需要大量的試驗和錯誤。
基本上,當您想根據特定資源限制使用者時,您需要創建一個語句,首先拒絕執行實例的能力,除非特定 arn 資源滿足條件,然後最後允許它們執行任何操作。
更新:
亞馬遜承認他們的文件不准確:
https://forums.aws.amazon.com/thread.jspa?threadID=160287&tstart=0