为什么我的AWS S3存储桶策略不会覆盖我的IAM策略?

Das*_*tor 9 permissions policy bucket amazon-web-services amazon-iam

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

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

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

{
  "Statement": [
    {
  "Effect": "Deny",
  "Principal": {
    "AWS": "my-account-id:user/testuser"
  },
  "Action": "s3:*",
  "Resource": "arn:aws:s3:::my-bucket-name/*"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

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

Ian*_*rts 10

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

"Principal": {
  "AWS":["arn:aws:iam::accountid:user/testuser"]
}
Run Code Online (Sandbox Code Playgroud)

  • 您指定的策略应该阻止`testuser`获取/放置/删除存储桶中的对象,但是不会阻止它们列出存储桶内容.为此,你必须使用"资源":["arn:aws:s3 ::: my-bucket-name/*","arn:aws:s3 ::: my-bucket-name"]`拒绝规则(因为像`ListBucket`这样的操作是由桶ARN而不是桶/*控制的). (10认同)