NotResource中使用通配符的效果如何?附IAM权限策略示例
NotResource中使用通配符的效果解析
核心结论
在NotResource中使用通配符*时,会直接排除所有AWS资源——因为*能匹配任何资源的ARN(Amazon资源名称)。结合NotResource的逻辑(策略仅作用于不在排除列表中的资源),此时没有任何资源符合"不在排除列表"的条件,对应的Allow或Deny规则也就完全无法生效。
示例策略分析
你给出的策略示例:
{ "Effect": "Allow", "NotAction": [ "iam:*" ], "NotResource": [ "*" ] }
拆解一下逻辑:
NotAction: ["iam:*"]:表示允许除IAM服务所有操作之外的其他所有AWS操作NotResource: ["*"]:表示排除所有资源,没有任何资源能被这个策略覆盖
两者结合后,这个Allow策略实际上不会允许任何操作——因为没有可作用的资源,完全是一个无效的权限策略。
额外说明
NotResource的设计初衷是为了简化策略:当你需要允许/拒绝"除少数特定资源外的所有资源"时,只需要列出这少数排除项,不用挨个罗列大量允许的资源。但如果用*作为排除项,就彻底偏离了这个设计目的,直接让策略失去作用。
内容的提问来源于stack exchange,提问作者Maha
相关产品推荐
相关产品推荐

