1

我正在尝试限制对自动缩放组创建的任何实例的 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 界面中,它显示错误:

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

Actions/Condition 只能包含一个冒号。

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

知道如何将这些操作限制为 as 组创建的实例吗?

谢谢

4

1 回答 1

2

由于以“aws:”开头的标签仅限于 AWS 内部使用(如此此处所述),因此如果错误表明您无法根据“aws:”执行您打算执行的操作,那将更有意义。在标签中。

但是,由于情况并非如此,而且错误更普遍,这似乎与记录的行为不一致。根据以下陈述,您正在尝试做的事情似乎是合理的,这些陈述来自我在上一段中链接到的页面:

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

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

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

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

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

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

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

如果文档是准确和完整的,那就太好了,所以我建议在 AWS 论坛上发布您的问题,看看您是否得到 AWS 人员的任何关注(假设您没有付费支持合同,在这种情况下,我假设您会使用它)。

另一方面,如果 aws:* 标签超出了我们可以访问的范围,我想我们不能抱怨太多,因为它们显然“不计入您对每个实例 10 个标签的限制”。

可能的解决方法

也许您会在论坛上发帖,但如果是这样,您可能仍然会发现这些标签在设计上或由于政策声明的限制而无法访问,如果是这种情况,那么看起来这可能是解决方法:

您可以定义一个自定义标签来指示该实例是自动扩展组的一部分,然后配置自动扩展组以将标签应用于您的实例。

您现在最多可以向任何 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 实例的卷,但似乎自动缩放不会标记这些卷,所以也许这会满足您的需要。

但是,最后一个想法是,我不确定您想要允许的某些操作是否可以绑定到实例上的标签... ,,,,,, 据我所知,DescribeImages不是 ec2:DescribeKeyPairs, 将与“实例”资源相关。ec2:DescribeSecurityGroupsec2:DescribeAvailabilityZonesec2:DescribeAvailabilityZones

于 2013-11-10T23:39:15.953 回答