本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SQS 访问策略语言中明确拒绝和默认拒绝之间的关系
如果 Amazon SQS 政策不直接适用于请求,则该请求会导致默认拒绝。例如,如果用户请求使用亚马逊的权限,SQS但适用于该用户的唯一策略可以使用 DynamoDB,则该请求会导致默认拒绝。
如果未能满足语句中的某个条件,则该请求的结果为默认拒绝。如果满足了语句中的所有条件,那么根据策略中元素的值,该请求的结果可能为允许或显式拒绝。效果如果策略没有指定如何处理未满足某个条件的情况,那么在这种情况下默认结果为默认拒绝。例如,您想要阻止来自南极洲的请求。您编写了策略 A1,只要请求不是来自于南极洲,就接受请求。下图说明了 Amazon 的SQS政策。
如果用户从美国发出请求,那么条件已经满足(该请求不是来自南极洲),则该请求的结果是允许。但是,如果用户从南极洲发出请求,那么条件未满足,该请求的默认结果为默认拒绝。您可以编写策略 A2,显式拒绝来自南极洲的请求,这样结果就变为显式拒绝。下列示意图说明了该策略。
如果用户从南极洲发出请求,那么条件已经满足,则该请求的结果为显式拒绝。
默认拒绝和显式拒绝之间的区别很重要,因为允许可以覆盖前者但不能覆盖后者。例如,策略 B 允许在 2010 年 6 月 1 日到达的请求。下图比较了将此策略与策略 A1 和策略 A2 进行组合的情况。
在场景 1 中,策略 A1 的结果为默认拒绝,策略 B 的结果为允许,因为该策略允许 2010 年 6 月 1 日传入的请求。策略 B 返回的允许结果将覆盖策略 A1 的默认拒绝结果,因此,请求获得允许。
在场景 2 中,策略 B2 的结果为显式拒绝,策略 B 的结果为允许。从策略 A2 发出的显式拒绝将覆盖从策略 B 发出的允许,因此该请求会被拒绝。