在aws中带有冒号的EC2资源标签

时间:2013-11-10 21:13:58

标签: json amazon-web-services amazon-s3 amazon-ec2 amazon

我正在尝试限制自动缩放组创建的任何实例上的EC2操作。该组自动创建具有键“aws:autoscaling:groupName”和值“my_as_group”的标记。因此,我会像我那样设定我的政策:

    {
  "Effect": "Allow",
  "Action": [
            "ec2:DescribeInstances", 
            "ec2:DescribeImages",
            "ec2:DescribeKeyPairs", 
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeAvailabilityZones",
            "ec2:RunInstances", 
            "ec2:TerminateInstances",
            "ec2:StopInstances", 
            "ec2:StartInstances"
  ],
  "Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*", // Yes, in reality I put my real id...
  "Condition": {
    "StringEquals": {
      "ec2:ResourceTag/aws:autoscaling:groupName": "my_as_group"
    }
  }
}

但是在aws.amazon.com上的IAM界面中,它显示错误:

  

我们在处理您的请求时遇到了以下错误:

     

动作/条件只能包含一个冒号。

经过一些测试,我认为它不需要标记键中的冒号......但标记键是由亚马逊自动创建的。

我是否可以将这些操作限制为as组创建的实例?

THX

1 个答案:

答案 0 :(得分:2)

由于以“aws:”开头的标签仅限于AWS内部使用(如herehere所述),如果错误声明您无法执行,则更有意义根据标签中的“aws:”打算做什么。

然而,由于情况并非如此,并且错误更为笼统,这似乎表示与记录的行为不一致。根据以下陈述,做你想做的事情似乎是合理的,这些陈述来自我在前一段中链接到的页面:

  

约束:标记键区分大小写,最多可接受127个Unicode字符。不能以aws开头:

     

最大密钥长度-127个Unicode字符

     

标签对Amazon EC2没有任何语义含义,并严格解释为字符串

如果:在政策文件的ec2:resourcetag中无效,那么这些陈述中的某些内容就不准确或不完整。

当然,根据自动缩放添加的自动生成标记,文档中的下一句似乎也不正确:

  

此外,标签不会自动分配给您的资源。

糟糕,除了在这种情况下它们似乎是,并且文档应该说明,或者应该更明确地说“aws:”标签可能是,但不是其他标签。

如果文档准确完整,那将是件好事,因此我建议在AWS论坛中发布您的问题,看看您是否得到AWS人员的任何关注(假设您没有付费的支持合同,在哪种情况下,我认为你会使用它。

另一方面,我认为如果aws:*标签超出我们可以访问的范围,我们不能抱怨太多,因为它们显然是“do not count against your limit of 10 tags per instance。”

可能的解决方法

也许你会在论坛上发布运气,但如果是这样,你可能仍然会发现这些标签在设计上是不可访问的,或者与政策声明中的限制一致,如果是这样,那么它似乎就是这样可能是解决方法:

您可以定义一个自定义标记,用于指示实例是自动缩放组的一部分,然后配置自动缩放组以将标记应用于实例。

  

您现在可以向任何Auto Scaling组添加最多10个标签。如果您愿意,也可以将标签传播到从您的组启动的EC2实例。

     

- http://aws.typepad.com/aws/2012/01/new-tagging-features-for-auto-scaling-groups.html

听起来很有希望。

  

或者,您可以将Auto Scaling组标签传播到Auto Scaling启动的Amazon EC2实例。您传播到Amazon EC2实例的Auto Scaling组标签可以像任何其他Amazon EC2实例标签一样使用[...]

     

将PropagateAtLaunch标志与as-create-or-update-tags命令一起使用时,您创建的标记将应用于Auto Scaling组启动的新Amazon EC2实例。同样,当您修改标记时,更新后的版本将应用于Auto Scaling组在更改后启动的新实例。使用as-create-or-update-tags命令创建或修改的标记将不适用于在您使用该命令时已在运行的实例。

     

- http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/ASTagging.html

这会处理实例,只要您不担心自定义标记可能被恶意应用于其他实例,以此作为受影响凭据获取对其他资源的不当控制的方式(尽管这意味着恶意方已经可以访问该资源,因此可能不是问题。)

这对于连接到EC2实例的卷没有帮助,但是无论如何自动缩放似乎都没有标记,所以这可能会满足您的需求。

然而,最后的想法是,我不确定您想要允许的某些操作是否可以绑定到实例上的标记... DescribeImagesec2:DescribeKeyPairsec2:DescribeSecurityGroupsec2:DescribeAvailabilityZones, 从我所知道的,ec2:DescribeAvailabilityZones并不是与“实例”资源有关。