Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

Amazon S3 如何对请求授权

当 Amazon S3 收到请求 (例如,存储桶或对象操作) 时,它首先验证请求者是否拥有必要的权限。Amazon S3 对所有相关访问策略、用户策略和基于资源的策略 (存储桶策略、存储桶 ACL、对象 ACL) 进行评估,以决定是否对该请求进行授权。以下是一些示例方案:

  • 如果请求者是 IAM 用户,则 Amazon S3 必须确定该用户所属的父 AWS 账户已授予该用户执行操作的必要权限。此外,如果请求是要执行存储桶操作 (例如,请求列出存储桶内容),则 Amazon S3 必须验证存储桶拥有者是否已为请求者授予执行该操作的权限。

    注意

    要针对某一资源执行特定操作,IAM 用户需要从其所属的父 AWS 账户以及拥有该资源的 AWS 账户双方获得权限。

  • 如果请求是要针对存储桶拥有者未拥有的对象执行某一操作,则除了确保请求者拥有来自对象拥有者的权限外,Amazon S3 还必须检查存储桶策略以确保存储桶拥有者未对该对象设置显式拒绝。

    注意

    存储桶拥有者 (支付账单者) 可以显式拒绝对存储桶中的对象的访问,而不论谁拥有该对象。存储桶拥有者还可以删除存储桶中的任何对象。

为了确定请求者是否拥有执行特定操作的权限,Amazon S3 会在收到请求时按顺序执行以下操作:

  1. 在运行时将所有相关访问策略 (用户策略、存储桶策略、ACL) 转换为一组策略以进行评估。

  2. 通过以下步骤评估生成的策略集。在每个步骤中,Amazon S3 都会基于特定上下文机构来评估上下文中的策略子集。

    1. 用户上下文 – 在用户上下文中,用户所属的父账户是上下文机构。

      Amazon S3 对父账户拥有的策略子集进行评估。该子集包括父级附加到该用户的用户策略。如果父级也拥有请求中的资源 (存储桶、对象),则 Amazon S3 还会同时评估相应资源策略 (存储桶策略、存储桶 ACL 和对象 ACL)。

      用户必须从父账户获得执行该操作的权限。

      只有在 AWS 账户中的用户发出请求的情况下,此步骤才适用。如果请求是使用 AWS 账户的根凭证发出的,则 Amazon S3 跳过此步骤。

    2. 存储桶上下文 – 在存储桶上下文中,Amazon S3 评估拥有该存储桶的 AWS 账户所拥有的策略。

      如果请求是针对存储桶操作发出的,则请求者必须拥有来自存储桶拥有者的权限。如果请求是针对对象发出的,则 Amazon S3 会评估由存储桶拥有者拥有的所有策略,以检查存储桶拥有者是否未显式拒绝对该对象的访问。如果设置了显式拒绝,则 Amazon S3 不对请求授权。

    3. 对象上下文 – 如果请求是针对对象发出的,则 Amazon S3 对由对象拥有者拥有的策略子集进行评估。

以下各部分进行了详细说明并提供了示例:

建议您首先阅读介绍性主题,这些主题讲解了用于管理对 Amazon S3 资源的访问的选项。有关更多信息,请参阅 Amazon S3 资源访问权限管理介绍。然后再通过以下主题了解有关特定访问策略选项的更多信息。

本页内容: