【问题标题】:Amazon s3 – 403 Forbidden with Correct Bucket PolicyAmazon s3 – 使用正确的存储桶策略禁止 403
【发布时间】:2015-07-23 16:26:42
【问题描述】:

我正在尝试使用以下存储桶策略使我存储在我的 s3 存储桶中的所有图像都可以公开阅读。

{
"Id": "Policy1380877762691",
"Statement": [
    {
        "Sid": "Stmt1380877761162",
        "Action": [
            "s3:GetObject"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::<bucket-name>/*",
        "Principal": {
            "AWS": [
                "*"
            ]
        }
    }
]

}

我有 4 个其他类似的 s3 存储桶具有相同的存储桶策略,但我不断收到 403 错误。

当我尝试将存储桶的内容迁移到新帐户时,此存储桶中的图像是使用 s3cmd 同步传输的。

我能看到的唯一区别是

  1. 我使用的是具有管理员访问权限的 IAM 用户,而不是 root 用户
  2. 文件没有 “被授予者:每个人都打开/下载文件”权限 文件,文件在旧存储桶中的东西

【问题讨论】:

  • 要记住的一件事是,如果您有被授权者每个人都在对象上打开/下载,则您不需要 any 存储桶策略来使其工作,因此您的现有的政策实际上可能是错误的,没有做任何有用的事情。

标签: amazon-web-services amazon-s3 permissions s3cmd


【解决方案1】:

如果您希望每个人访问存储桶中的 S3 对象,则主体应为“*”,即,如下所示:

{
"Id": "Policy1380877762691",
"Statement": [
    {
        "Sid": "Stmt1380877761162",
        "Action": [
            "s3:GetObject"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::<bucket-name>/*",
        "Principal": "*"
        }
    }
]

}

来源:http://docs.aws.amazon.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#Principal

【讨论】:

  • 刚刚尝试过,同样的问题 - 403 错误访问被拒绝。我已经尝试了该策略的几种不同排列,但均无济于事。
  • 这很奇怪。我对我的一些 S3 存储桶有类似的政策,它确实有效。我能发现的唯一区别是您的存储桶策略中没有“版本”:“2012-10-17”。也许试试看?
  • 同样,在我的其他存储桶上,该策略有效。似乎在桶之间的转移中丢失了一些东西。除了被授予者:每个对象的每个人的权限之外,没有其他配置不同。
【解决方案2】:

我设法通过再次运行 s3cmd 命令解决了这个问题,但在它的末尾添加了--acl-public。似乎解决了我的问题

【讨论】:

    【解决方案3】:

    我知道这是一个老问题,但对于遇到此问题并使用 AWS 控制台工作的人来说。转到 AWS S3 控制台中的存储桶:

    1. 打开权限选项卡。
    2. 打开公共访问设置。
    3. 点击编辑

    然后在编辑页面:

    1. 取消选中阻止新的公共存储桶策略(推荐)
    2. 如果存储桶具有公共策略,则取消选中阻止公共和跨账户访问(推荐)
    3. 点击保存

    注意

    请注意,这将使您的存储桶互联网上的任何人都可以访问,即使他们没有 AWS 帐户,他们仍然可以访问存储桶和存储桶的内容。 请小心处理!

    【讨论】:

    • +1:在我禁用“阻止公共和跨账户访问”后修复了我的问题。另一个选项“阻止新的公共存储桶策略”已被禁用以允许保存策略。我是 AWS 新手,但它帮助我在静态网站设置方面取得了一些进展
    【解决方案4】:

    来自 AWS 文档
    http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html

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

    不确定这里的顺序或属性是否重要。我会试试这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-10
      • 2023-02-26
      • 2023-03-31
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 2013-12-21
      • 2017-10-14
      相关资源
      最近更新 更多