S3存储桶策略可以覆盖IAM策略吗?

时间:2020-08-09 08:40:19

标签: amazon-web-services amazon-s3

  1. 我创建了一个S3存储桶和一个EC2实例。
  2. 我已经为包含AmazonS3ReadOnlyAccess策略的EC2实例赋予了一个角色。
  3. 使用EC2实例中的AWS CLI列出我的S3存储桶中的所有内容
  4. 我创建了一个存储桶策略,以防止对该存储桶上的任何主体进行任何操作:
"Action": "s3:*",
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::ananda-demo-bucket-1/",
      "Principal": "*"

但是,在我的EC2实例中,我仍然可以列出存储桶的内容。这是否意味着我无法使用自定义存储桶策略覆盖AWS IAM策略,或者我创建的存储桶策略是错误的?

2 个答案:

答案 0 :(得分:1)

是的,它确实可以覆盖策略,但是仅在使用拒绝的情况下。如果其中包含“允许”,但IAM策略中包含“拒绝”,则不会被评估为“允许”。

为使您的策略拒绝S3存储桶内的所有操作,存储桶策略中的资源应包括以下内容:

  • arn:aws:s3:::ananda-demo-bucket-1
  • arn:aws:s3:::ananda-demo-bucket-1/*

通过使用主体*进行此操作,您将拒绝访问所有内容,因此您将不再能够从任何资源(包括控制台)与该S3存储桶进行交互,进行如此大的更改之前。尝试限制要拒绝的操作,以便仍可以在控制台中使用S3存储桶的管理。

要在任何权限评估中归纳策略评估逻辑,如果以下任何一项被拒绝,则该操作将被拒绝:

  • 服务控制政策
  • IAM边界
  • 资源政策
  • IAM政策

完整的评估流程如下所示

enter image description here

有关更多信息,请查看AWS文档中的Policy Evaluation Logic页面。

答案 1 :(得分:0)

某些命令在存储桶级下运行,而其他命令在对象级上运行。

尝试一下:

      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": [
         "arn:aws:s3:::ananda-demo-bucket-1",
         "arn:aws:s3:::ananda-demo-bucket-1/*",
      ]
      "Principal": "*"