【问题标题】:Why Doesn't My AWS S3 Bucket Policy Override My IAM Policy?为什么我的 AWS S3 存储桶策略没有覆盖我的 IAM 策略?
【发布时间】:2012-07-20 17:00:30
【问题描述】:

我的 IAM 帐户中有一个名为“testuser”的用户,他拥有管理员权限,如下所示:

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*"
    }
  ]
}

然后我的 S3 存储桶上有一个拒绝此用户访问的策略,如下所示:

{
  "Statement": [
    {
  "Effect": "Deny",
  "Principal": {
    "AWS": "my-account-id:user/testuser"
  },
  "Action": "s3:*",
  "Resource": "arn:aws:s3:::my-bucket-name/*"
    }
  ]
}

那么,S3 存储桶策略中的显式拒绝应该覆盖 IAM 策略中的允许,对吗?但是当我以 testuser 身份登录时,我仍然可以访问该存储桶中的所有内容 - 我什至可以更改或删除该存储桶(以及所有其他存储桶)的存储桶策略。为什么我的明确否认没有做任何事情?

【问题讨论】:

  • 访问所有内容是指仅列出存储桶内容,或者您​​还可以获取/放置文件吗?
  • 我的意思是一切 - 查看文件、添加文件、查看存储桶策略、编辑存储桶策略等。

标签: permissions amazon-web-services policy bucket amazon-iam


【解决方案1】:

尝试在存储桶策略中为用户 ID 使用完整的 ARN 表单:

"Principal": {
  "AWS":["arn:aws:iam::accountid:user/testuser"]
}

【讨论】:

  • 感谢您的回复 - 不幸的是,这没有任何效果
  • 您指定的策略应该阻止testuser 在存储桶中获取/放置/删除对象,但不会阻止它们列出存储桶内容。为此,您必须在拒绝规则中使用 "Resource": ["arn:aws:s3:::my-bucket-name/*","arn:aws:s3:::my-bucket-name"](因为像 ListBucket 这样的操作由存储桶 ARN 而不是存储桶 /* 控制)。
  • @Ian,即使在 1.5 年多之后,您在上述评论中的解释仍然很好。它只是帮助了我。
  • 如何编写存储桶策略来覆盖该账户中所有用户的 IAM 策略?
猜你喜欢
  • 1970-01-01
  • 2012-11-23
  • 2019-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-08
  • 1970-01-01
相关资源
最近更新 更多