我有多个VPC,每个环境一个。我希望Dev组中的用户只能在该VPC中启动实例。同样适用于其他环境。怎么做到这一点?现在,我可以限制用户无法停止,基于Tag(Environment = Dev)启动实例。
是否可以制定这样的策略,允许仅在特定VPC或具有特定标记的VPC中启动实例?
答案 0 :(得分:1)
您可以创建像IAM组这样的“开发人员”并拥有此权限:
{
"Version": "2014-11-28",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:Describe*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:< region >::subnet/subnet-00000000",
"arn:aws:ec2:< region >::network-interface/*",
"arn:aws:ec2:< region >::instance/*",
"arn:aws:ec2:< region >::volume/*",
"arn:aws:ec2:< region >::image/ami-*",
"arn:aws:ec2:< region >::key-pair/*",
"arn:aws:ec2:< region >::security-group/*"
]
}
]
}
然后,这足以从AWS CLI发布:
aws ec2 run-instances --key-name yourkey --image-id ami-00000000 --security-group-ids sg-00000000 --instance-type t2.micro --subnet-id subnet-00000000
不要忘记替换区域,帐号,密钥名称,AMI,安全组ID,实例类型,子网ID。
答案 1 :(得分:0)
然后你可以添加:
{
"Sid": "TheseActionsSupportResourceLevelPermissionsWithInstancesAndTags",
"Effect": "Allow",
"Action": [
"ec2:TerminateInstances",
"ec2:StopInstances",
"ec2:StartInstances"
],
"Resource": "arn:aws:ec2:REGION:ACCOUNTID:instance/*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/yourTAG": "yourVALUE"
}
}
}
即使这些是EC2标签而不是VPC,如果你标记你想要的标签或者用标签开始,它仍然可以完美地工作。