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

ana*_*nda 1 amazon-s3 amazon-web-services

  1. 我创建了一个 S3 存储桶和一个 EC2 实例。
  2. 我已将一个角色附加到包含策略的 EC2 实例AmazonS3ReadOnlyAccess
  3. 使用 EC2 实例中的 AWS CLI 列出我的 S3 存储桶的所有内容
  4. 我创建了一个存储桶策略,阻止该存储桶上的任何主体执行任何操作:
"Action": "s3:*",
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::ananda-demo-bucket-1/",
      "Principal": "*"
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*ams 6

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

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

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

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

为了在任何权限评估中推广策略评估逻辑,如果存在以下任一情况的拒绝,则操作将被拒绝:

  • 服务控制政策
  • IAM边界
  • 资源政策
  • 身份管理政策

完整的评估流程如下所示

在此输入图像描述

有关更多信息,请查看AWS 文档中的策略评估逻辑页面。