我在为客户工作时也遇到过类似的用例。答案是是的你可以 !
您可以强制用户通过 IAM 策略应用特定标签。
例如,您可以将策略附加到用户/角色(最好是角色),以拒绝ec2:运行实例带有条件的操作,检查标签键和值是否不是您所期望的。这可能有点令人困惑,因为该策略使用双重否定,Deny and 字符串不相似但我相信以这种方式强制执行标记更容易,因为您可以将此策略添加到具有管理员策略并且仍然有效的角色。
{
"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": "*"
}
}
}
不幸的是我无法让它在一个块中工作,因为我没有时间优化它。我认为这与为所有价值, 对于任何值.
为所有价值– 如果请求中的每个指定键值与策略中的至少一个值都匹配,则条件返回 true。如果请求中没有匹配的键,或者键值解析为空数据集(例如空字符串),它也会返回 true。
对于任何值– 如果请求中的任何一个键值与策略中的任何一个条件值匹配,则条件返回 true。对于没有匹配键或空数据集,条件返回 false。