如何允许AWS用户仅通过ID或TAG在一个VPC中启动实例?

时间:2014-09-11 06:21:10

标签: amazon-web-services amazon-iam

我有多个VPC,每个环境一个。我希望Dev组中的用户只能在该VPC中启动实例。同样适用于其他环境。怎么做到这一点?现在,我可以限制用户无法停止,基于Tag(Environment = Dev)启动实例。

是否可以制定这样的策略,允许仅在特定VPC或具有特定标记的VPC中启动实例?

2 个答案:

答案 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,如果你标记你想要的标签或者用标签开始,它仍然可以完美地工作。