如何创建IAM策略以根据子网名称标记控制对Amazon EC2资源的访问?

时间:2017-11-10 01:05:29

标签: amazon-web-services amazon-iam subnet vpc

我需要限制特定用户角色在任何VPC中的公共子网中执行任何EC2实例操作。有没有办法通过利用子网标签来实现这一目标?我知道如何使用EC2资源标签来控制对EC2资源的访问,如下面的代码片段,但在我的情况下,我需要将其基于vpc或子网标签。是否有像我可以利用的vpc:ResourceTag条件?

{
                "Effect" : "Allow",
                "Action" : "ec2:*",
                "Resource" : "*",
                "Condition" : {
                     "StringEquals" : {
                          "ec2:ResourceTag/UserName" : "${aws:username}"
                     }

enter image description here

2 个答案:

答案 0 :(得分:0)

我不确定你的意思是"子网标签"但是看起来你不能使用IAM来限制基于子网类型(即公共与私有)。这是有道理的,因为您可以通过添加或删除路由轻松更改子网类型。

如果您需要阻止某些用户对某些EC2实例执行操作,请在EC2实例上使用标记,并根据标记使用允许或拒绝规则。从blog宣布:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "ec2:StartInstances",
        "ec2:StopInstances",      
        "ec2:RebootInstances",
    "ec2:TerminateInstances"
      ],
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/critical":"true"
        }
      },
      "Resource": [
        "arn:aws:ec2:your_region:your_account_ID:instance/*"

      ],
      "Effect": "Deny"
    }
  ]
}

为了使其更加安全,请务必拒绝编辑或删除标签!

答案 1 :(得分:0)

@Chris感谢您为我提供的建议:我使用了以下声明,但无法将实例启动到我标记的公共子网中

import { NavController, App, Config } from 'ionic-angular';

constructor(public app:App,public navCtrl: NavController,
  public config: Config) {}

ionViewDidEnter(){
  this.config.set('tabsHideOnSubPages', false)
  let nav = this.app.getRootNav();
  nav.setRoot(LoginPage);
}