# 访问控制机制

Amazon S3 访问控制策略的逻辑和顺序,如下图:

访问控制机制

策略最小权限法则:

  • 默认情况下是拒绝
  • 然后评估所有适用的策略,如果在所有适用的策略中有明确的拒绝,最终就是拒绝。
  • 如果在所有适用的策略中没有明确的拒绝,但是存在允许,那么最终就是允许。
  • 如果在所有适用的策略中没有明确的拒绝,也不存在允许,那么最终就是拒绝(默认是拒绝)。

主要包括以下方面:

  • 用户策略的检查:检查上级账户是否被授予权限
  • 存储桶权限策略检查:检查存储桶所有者是否已授予权限
  • 执行对象访问策略检查(ACL):查找策略中明确的运行

策略执行:任何策略中明确的拒绝均会覆盖所有允许条件。

# 访问控制策略处理流程

访问控制策略处理流程

在上面的访问控制策略流程中,针对第二步,其实至少经历了4步策略的判断。

首先是 IAM policies 判断,第二步是 S3 存储桶策略判断,然后是 S3 VPC 端点策略判断,最后是针对 S3 存储桶下面存储的对象的访问控制判断。

通过这样一层层的嵌套判断,可以帮助用户设定基于管理层,基于具体的存储对象的详细的访问策略设置。

# 访问场景

# 由存储桶拥有者请求的存储桶操作

由存储桶拥有者请求的存储桶操作

在此示例中,存储桶拥有者使用 AWS 账户的根凭证发送存储桶操作请求。

这种情况比较简单,因为存储桶是策略的拥有者,直接可以判断,如果授权了,就可以授权访问。如果没有授权就拒绝访问。

# IAM 用户请求存储桶操作,其父 AWS 账户也是存储桶拥有者

IAM 用户请求存储桶操作,其父 AWS 账户也是存储桶拥有者

首先进行用户策略检查,因为其父账户和存储桶拥有者是同一个账户。在经过 用户策略 检查后,有权限访问存储桶,再进行 存储桶策略 检查。如果授权了,就可以授权访问。如果没有授权就拒绝访问。

# IAM 用户请求存储桶操作,其父 AWS 账户不是存储桶拥有者

IAM 用户请求存储桶操作,其父 AWS 账户不是存储桶拥有者

首先父账户也会进行用户策略检查。在经过 用户策略 检查后,有权限访问存储桶,再进行 存储桶策略 检查。如果授权了,就可以授权访问。如果没有授权就拒绝访问。

# 参考

更新时间: 6/17/2020, 2:07:07 AM