Decision making Tree

AWS的权限判断循环以下原则:

  • 默认情况下,所有权限被拒绝。例如添加一个用户,不给他绑定任何权限,这时用户没有任何权限。
  • 然后评估所有绑定的权限
  • 如果在权限中有明确的deny语句,则该部分优先级最高。
  • 如果没有明确的deny语句,会寻找allow部分。这些权限全部允许。

整个流程如下:

Evaluation flow chart

所以,有两种拒绝方式,一种是显式拒绝(Explict Deny),另一种是隐式拒绝(Deny by Default)。

  • 如果不给用户分配某项服务权限,那么用户就不能使用这个服务。这是隐式拒绝

  • 如果明确声明禁止用户使用某项服务。则用户也不能使用这个服务,这是显式拒绝

跨帐号场景

跨帐号场景跟单帐号不一样。

例如,单帐号场景中,用户A想要访问某个S3, 则有两种方式:

  • 一种是identity based,在IAM里为他加一条policy可以访问S3;
  • 或者使用Resource-based,在S3的bucket policy中添加一条权限,允许用户A访问。

上面满足任意一条即可。

但在跨帐号场景中,上面两个条件都要满足:

image-20230815214826785