Amazon Simple Queue Service
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

Amazon SQS Access Policy Language中显式拒绝和默认拒绝之间的关系

如果 Amazon SQS 策略不直接应用于请求,该请求的结果为默认拒绝。例如,如果用户请求使用 Amazon SQS 的权限,但应用于该用户的唯一策略可使用 DynamoDB,则该请求的结果为默认拒绝

如果未能满足语句中的某个条件,则该请求的结果为默认拒绝。如果满足了语句中的所有条件,那么根据策略中元素的值,该请求的结果可能为允许显式拒绝效果如果策略没有指定如何处理未满足某个条件的情况,那么在这种情况下默认结果为默认拒绝。例如,您想要阻止来自南极洲的请求。您编写了策略 A1,只要请求不是来自于南极洲,就接受请求。下列示意图说明了 Amazon SQS 策略。

 架构概述

如果用户从美国发出请求,那么条件已经满足 (该请求不是来自南极洲),则该请求的结果是允许。但是,如果用户从南极洲发出请求,那么条件未满足,该请求的默认结果为默认拒绝。您可以编写策略 A2,显式拒绝来自南极洲的请求,这样结果就变为显式拒绝。下列示意图说明了该策略。

 架构概述

如果用户从南极洲发出请求,那么条件已经满足,则该请求的结果为显式拒绝

默认拒绝显式拒绝之间的区别很重要,因为允许可以覆盖前者但不能覆盖后者。例如,策略 B 允许在 2010 年 6 月 1 日到达的请求。下图比较了将此策略与策略 A1 和策略 A2 进行组合的情况。

 覆盖

在场景 1 中,Policy A1 的结果为默认拒绝,Policy B 的结果为允许,因为该策略允许 2010 年 6 月 1 日传入的请求。Policy B 返回的允许结果将置换 Policy A1 的默认拒绝结果,因此,请求获得允许。

在场景 2 中,Policy B2 的结果为显式拒绝,Policy B 的结果为允许。从 Policy A2 发出的显式拒绝将覆盖从 Policy B 发出的允许,因此该请求会被拒绝。