有没有办法在创建 EC2 实例时强制执行标记?我,e 用户无法启动没有特定标签的实例。我可以根据标签使用该标签来控制特定实例吗?
4 回答
当我为客户工作时,我有一个类似的用例。答案是可以的!
您可以强制用户使用 IAM 策略应用特定标签。
例如,您可以将策略附加到拒绝ec2:RunInstances操作的用户/角色(最好是角色),其条件是检查标签键和值是否不是您所期望的。由于此策略使用双重否定、Deny和StringNotLike ,因此可能会有些混乱,但我相信以这种方式执行标记更容易,因为您可以将此策略添加到具有管理员策略并且仍然有效的角色。
{
"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": "*"
}
}
}
不幸的是,我无法让它在一个块中工作,因为我没有时间优化它。我认为这与ForAllValues,ForAnyValue 有关。
ForAllValues – 如果请求中的每个指定键值与策略中的至少一个值匹配,则条件返回 true。如果请求中没有匹配的键,或者键值解析为空数据集(例如空字符串),它也会返回 true。
ForAnyValue – 如果请求中的任一键值与策略中的任一条件值匹配,则条件返回 true。对于没有匹配的键或空数据集,条件返回 false。
您可以使用 Amazon Config 实现此目的。
Select Rules -> Add Rule -> required tag
您不会阻止某人创建没有标签的实例,但您将能够在配置仪表板中看到它被标记,或者您可以触发 SNS 操作以通过电子邮件通知您。
是的,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"
]
}
}
}
]
}