我收到错误“拒绝访问”,即使我拥有该存储桶并拥有所有权限

问题描述 投票:0回答:2

当我遇到“拒绝访问”错误时,我试图授予对匿名用户的只读访问权限,即使它是我的存储桶并且我拥有所有权限。

我尝试编辑主体看起来像这样:

"Principal": {
        "AWS": [
            "arn:aws:iam::123123123123:user/myuid"
        ]

但后来我得到了一个不完整的json错误。

这是亚马逊使用的一个例子,我编辑过以迎合我:

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::examplebucket/*"]
    }
  ]
} 

它应该使桶公开,所以所有人都可以查看我的网站,但由于访问被拒绝,这不会发生。

json amazon-web-services amazon-s3
2个回答
1
投票

如果您希望授予对特定IAM用户的访问权限,则应该向该IAM用户添加策略(不使用存储桶策略)。

如果您希望授予“任何人”访问权限(无需身份验证),那么您应该创建一个Bucket Policy,例如:

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::examplebucket/*"]
    }
  ]
}

另外,请务必关闭Amazon S3 Block Public Access,否则在尝试访问内容时会收到Access Denied错误。


0
投票

您的IAM策略应该将s3:GetBucketPolicy and s3:PutBucketPolicy设置为IAM帐户的权限操作。

您的政策应如下所示:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:GetBucketPolicy",
        "s3:PutBucketPolicy"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::awsexamplebucket/*"
    }
  ]
}

你可以在这里查看故障排除文档:https://aws.amazon.com/premiumsupport/knowledge-center/s3-access-denied-bucket-policy/

© www.soinside.com 2019 - 2024. All rights reserved.