AWS SCP中ForAllValues限定符理解误区求助
关于SCP中ForAllValues限定符的理解与问题排查
你的理解本身没有错误:ForAllValues:StringEquals 的逻辑就是——当请求中所有记录类型都属于指定的 ["A", "AAAA"] 列表时,Condition 计算为 true,触发Deny规则;如果请求中存在至少一个不属于该列表的记录类型(比如你创建的CNAME),Condition 计算为 false,这条Deny规则不会生效。
实际创建CNAME被拦截,大概率是其他原因导致的,常见可能性包括:
- 请求隐含包含A/AAAA类型记录:比如你在同一个Route53变更请求里,除了CNAME还误添加了A/AAAA记录,或者控制台的某些默认操作附带了这类记录,此时请求的记录类型集合包含A/AAAA,触发了Deny。
- 存在其他Deny策略:账号A可能还附加了其他SCP,或者账号内的IAM策略中存在对
route53:ChangeResourceRecordSets的Deny规则,这些规则独立于你提供的SCP,导致操作被拦截。 - 请求参数验证偏差:可以通过AWS CloudTrail查看对应的
ChangeResourceRecordSets请求日志,检查requestParameters里的changeBatch字段,确认实际发送的记录类型是否符合预期。
建议你先通过CloudTrail确认请求的实际参数,再排查账号的其他SCP和IAM策略,定位真正的拦截原因。
内容的提问来源于stack exchange,提问作者moeman
相关产品推荐
相关产品推荐

