6

有没有办法在创建 EC2 实例时强制执行标记?我,e 用户无法启动没有特定标签的实例。我可以根据标签使用该标签来控制特定实例吗?

4

4 回答 4

3

当我为客户工作时,我有一个类似的用例。答案是可以的!

您可以强制用户使用 IAM 策略应用特定标签。

例如,您可以将策略附加到拒绝ec2:RunInstances操作的用户/角色(最好是角色),其条件是检查标签键和值是否不是您所期望的。由于此策略使用双重否定、DenyStringNotLike ,因此可能会有些混乱,但我相信以这种方式执行标记更容易,因为您可以将此策略添加到具有管理员策略并且仍然有效的角色。

    {
        "Sid": "ConditionalEC2creationName",
        "Effect": "Deny",
        "Action": "ec2:RunInstances",
        "Resource": "arn:aws:ec2:*:*:instance/*",
        "Condition": {
            "StringNotLike": {
                "aws:RequestTag/Name": "*"
            }
        }
    },
    {
        "Sid": "ConditionalEC2creationEnv",
        "Effect": "Deny",
        "Action": "ec2:RunInstances",
        "Resource": "arn:aws:ec2:*:*:instance/*",
        "Condition": {
            "StringNotLike": {
                "aws:RequestTag/Env": "*"
            }
        }
    }

不幸的是,我无法让它在一个块中工作,因为我没有时间优化它。我认为这与ForAllValuesForAnyValue 有关

ForAllValues – 如果请求中的每个指定键值与策略中的至少一个值匹配,则条件返回 true。如果请求中没有匹配的键,或者键值解析为空数据集(例如空字符串),它也会返回 true。

ForAnyValue – 如果请求中的任一键值与策略中的任一条件值匹配,则条件返回 true。对于没有匹配的键或空数据集,条件返回 false。

于 2018-09-28T21:46:34.577 回答
2

您可以使用 Amazon Config 实现此目的。

Select Rules -> Add Rule -> required tag

您不会阻止某人创建没有标签的实例,但您将能够在配置仪表板中看到它被标记,或者您可以触发 SNS 操作以通过电子邮件通知您。

于 2018-01-24T16:13:30.063 回答
1

是的,您必须使用“ec2:CreateAction”条件来限制创建资源(实例/卷)时创建的标签,并使用“aws:RequestTag”条件来控制创建资源所需的标签键值。

这里有示例策略,有关更多信息,请参阅博客

于 2018-01-24T21:45:09.687 回答
0

是的,EC2 Creation 很可能带有从标签值中进行选择的选项,试一试

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringNotLike": {
                    "aws:RequestTag/Env": [
                        "Dev",
                        "Prod"
                    ]
                }
            }
        }
    ]
}
于 2020-07-22T07:13:36.553 回答