【问题标题】:Can S3 bucket-policy override IAM policy?S3 存储桶策略可以覆盖 IAM 策略吗?
【发布时间】:2020-08-09 08:40:19
【问题描述】:
  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 策略,或者我创建的存储桶策略有误?

【问题讨论】:

  • 您的Principal 为空。你能显示实际的策略和实例角色吗?
  • 简单规则:如果 IAM 和存储桶策略中的任何内容被拒绝,则它被拒绝。否则,如果其中任何一个允许,则允许。

标签: amazon-web-services amazon-s3


【解决方案1】:

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

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

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

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

为了在任何权限评估中概括策略评估逻辑,如果有任何来自以下之一的拒绝,则该操作将被拒绝:

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

完整的评估流程如下所示

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

【讨论】:

    【解决方案2】:

    一些命令在桶级运行,而另一些在对象级运行。

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 2019-02-26
      • 2012-07-20
      • 2012-11-23
      • 1970-01-01
      • 2023-03-29
      • 2016-12-23
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多