AWS IAM角色多条件任意满足即授权的策略写法是否正确?
结论
你当前的IAM策略写法不符合需求,是错误的。
错误原因
AWS IAM策略的条件判断逻辑遵循以下默认规则:
- 同一条件操作符(比如你这里用的
StringEquals)下的多个键值对,默认是AND关系,必须全部匹配才会触发条件生效 - 你当前的写法要求
a=b、c=d、x=y三个条件同时满足才会授予访问权限,和你“任意一个条件满足即可授权”的需求完全相悖
正确写法示例
你需要使用IAM内置的Or逻辑运算符,将三个独立的判断条件包裹起来,参考写法如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "*", "Condition": { "Or": [ {"StringEquals": {"a": "b"}}, {"StringEquals": {"c": "d"}}, {"StringEquals": {"x": "y"}} ] } } ] }
额外安全建议
你当前的策略配置了Principal: "*"(允许所有身份)和Action: "*"(允许所有操作),权限范围过大,存在严重的安全隐患,实际生产使用时请务必将权限收缩到实际需要的身份和操作范围。
内容的提问来源于stack exchange,提问作者cosmos-1905-14
相关产品推荐
相关产品推荐

