我有多个VPCs,每个环境一个。我希望Dev组中的用户只能在该VPC中启动实例。其他环境也是如此。如何做到这一点?现在,我可以限制用户不能基于Tag(Environment=Dev)停止、启动实例。
有没有可能有这样的策略,只允许在特定的专有网络或带有特定标签的专有网络中启动实例?
您可以创建一个类似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。
然后您可以添加以下内容:
{
"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,但如果您标记您想要的标签或从一开始就使用标签启动,它仍然可以完美工作。