强制多标签校验的AWS IAM策略是否可以更精简编写
AWS强制EC2创建携带指定标签的IAM策略优化方案
直接给出简化后的合法策略,逻辑和你原有三条Deny的实现完全等价,不会出现校验失效问题:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyEC2CreateWithoutRequiredTags", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "Null": { "aws:RequestTag/Name": "true", "aws:RequestTag/Dept": "true", "aws:RequestTag/Owner": "true" } } } ] }
生效逻辑说明
- 你之前尝试用
ForAllValues/ForAnyValues失败是因为使用场景错误:这两个修饰符仅用于处理请求中携带多组同类型参数的特殊校验场景,强制标签校验不需要用到这类修饰符,反而会导致逻辑匹配异常。 - IAM语法中,同一个条件操作符(这里是
Null)下的多个键值对默认执行逻辑OR判断,只要三个标签中任意一个未在创建请求中传递,就会触发Deny规则,和你原来拆分三条Deny语句的效果完全一致。 - 除了EC2实例本身,如果你还需要同步校验创建EC2时绑定的卷、弹性网卡等资源也必须携带同样的标签,可以在Resource数组中补充对应资源的ARN即可。
内容的提问来源于stack exchange,提问作者Bryan
相关产品推荐
相关产品推荐

