亚马逊SNS访问策略的关键概念 - Amazon Simple Notification Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

亚马逊SNS访问策略的关键概念

以下章节介绍了您需要了解的概念,以便使用访问策略语言。它们都按逻辑顺序介绍,您需要了解的第一项术语在清单最前面。

权限

权限是指允许或不允许访问某种特殊资源的概念。权限基本遵循这种形式:“如果 D 适用时,那么 A 被允许或未被允许向 C 执行 B”。例如,只要 Jane (A) 使用HTTP协议 (D),她就有权将 (B) 发布到 topicA (C)。每当 Jane 向 TopicA 发布信息时,服务器会检查她是否有权限或该请求是否满足权限中所规定的条件。

语句

语句是指对用访问策略语言编写的单个权限的正式说明。您通常编写的语句是一个更大的容器式文档,被称为策略(见下一概念),的一部分。

Policy

策略是一个文档(使用访问策略语言编写),充当存放一个或多个语句的容器。例如,策略中可能包含两个语句:一个语句规定 Jane 可以使用电子邮件协议进行订阅,另一个语句规定 Bob 不能向主题 A 发布消息。如下图所示,等效的场景将具有两个策略,一个策略规定 Jane 可以使用电子邮件协议进行订阅,另一个策略规定 Bob 不能向主题 A 发布消息。

比较了在 Amazon 中组织政策声明的两种方式SNS。在左边,单个策略(策略 A)包含两个语句。在右边,相同的两个语句被分成两个策略,每个策略包含一个语句。该图说明了这两种方法在权限的定义和强制执行方面是等同的。

政策文件中只允许使用ASCII字符。你可以利用aws:SourceAccount和解决aws:SourceOwner需要插入其他包含非ASCII字符 AWS ARNs的服务的场景。请参阅 aws:SourceAccount 与 aws:SourceOwner 之间的差异。

Issuer

发布者是指编写策略以授予资源权限的人。发行者(顾名思义)始终是资源所有者。 AWS 不允许 AWS 服务用户为他们不拥有的资源创建策略。如果 John 是资源所有者,则在 John 提交他为授予该资源权限而编写的策略时,将 AWS 验证他的身份。

主体

委托人是指在策略中获取权限的个人和多个人。委托人是“如果 D 适用的情况下,那么 A 可以对 C 执行 B ”语句中的 A。在策略中,您可将委托人设置为“任何人”(即,您可指定一个通配符代表所有人)。您这样操作,例如,如果您不想根据请求者的实际身份限制访问,那么您可以根据其他的识别特征,例如请求者的 IP 地址。

操作

操作是委托人可以执行的活动。操作是“如果 D 适用的情况下,那么 A 可以对 C 执行 B”语句中的 B。通常,操作只是请求中的操作 AWS。例如,Jane SNS 使用向亚马逊发送请求Action=Subscribe。在一个策略中您可指定一个或多个操作。

资源

资源是委托人请求访问的数据元。在表述“在满足 D 的情况下,A 拥有对 C 执行 B 的许可”中,C 即指资源。

条件与密钥

条件是任何有关权限的限制条件和具体内容。条件是“如果 D 适用的情况下,那么 A 可以对 C 执行 B”语句中的 D。说明条件的策略部分可能是整个部分最详细且最复杂的内容。普通条件与以下项目相关:

  • 日期和时间(例如,请求必须在指定日期前到达)

  • IP 地址(例如,请求者的 IP 地址必须属于特定CIDR范围)

一个密钥是设置访问限制指定的特性。例如,访问日期和时间。

您需使用条件密钥一起明确说明限制。下列示例可帮助您以最简单的方式了解如何实际实施限制:若您要在 2010 年 5 月 30 日之前限制访问,则使用名为 DateLessThan 的条件。您可以使用名为 aws:CurrentTime 的密钥并将其设置为 2010-05-30T00:00:00Z。 AWS 定义您可以使用的条件和键。 AWS 服务本身(例如,Amazon SQS 或 AmazonSNS)也可能定义特定于服务的密钥。有关更多信息,请参阅 Amazon SNS API 权限:操作和资源参考

请求者

请求者指向一个 AWS 服务发出请求并要求访问某个特定资源的人。请求者向 AWS 发送的请求基本表述为:“在满足 D 的情况下,您是否允许我对 C 执行 B?”

评估

评估是 AWS 服务根据适用的策略确定是否应拒绝或允许传入请求的流程。有关评估逻辑的信息,请查见评估逻辑

效果

效果是指在评估期间您希望一个策略语句返回的结果。当您在一个策略中编写语句时,您需指定该值,可能值为拒绝允许

例如,您可以编写一个策略,并声明拒绝所有来自南极洲地区的请求(效果相当于:如果请求是使用为南极洲配置的 IP 地址发出的,则拒绝该请求)。同样地,您可以编写一个策略,其中声明允许所有并非来自南极洲地区的请求(效果=如果请求不是来自南极洲地区,则允许)。虽然这两个语句看似执行相同的操作,但是在访问策略语言逻辑上,它们是不同的。有关更多信息,请参阅 评估逻辑

尽管仅可指定两个效果值(“允许”或“拒绝”),但在执行策略评估时,却可能产生三种不同的结果,即:默认拒绝允许显式拒绝。有关更多详细,参见以下概念和 评估逻辑

默认拒绝

默认拒绝是从一个策略中没有允许或显式拒绝的默认结果。

允许

假设任何声明的条件已满足,效果=允许的语句会产生允许。例如:若在 2010 年 4 月 30 日下午 1:00 之前收到请求,则请求将获得允许。“允许”可置换所有“默认拒绝”,但无法置换“显式拒绝”。

显式拒绝

假设任何声明的条件已满足,效果=拒绝的语句会产生显式拒绝。例如:拒绝来自南极洲的所有请求。不管其他什么策略会允许,所有来自南极洲地区的请求都会被拒绝。