如何在 Amazon S3 Bucket 上设置公共只读访问?

aed*_*duG 4 amazon-s3 amazon-web-services

我已经发现一对夫妇像在计算器上类似的问题这一个,但他们都已经陈旧,它似乎从那时起事情已经与S3改变。他们添加了这四个令人困惑的设置: 在此处输入图片说明 如果我关闭这些,是否意味着我的存储桶可以被公开写入? 另外我还添加了这个策略:

{
"Version": "2008-10-17",
"Statement": [
    {
        "Sid": "PublicReadForGetBucketObjects",
        "Effect": "Allow",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::REDACTED/*"
    },
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::REDACTED:user/REDACTED"
        },
        "Action": "s3:*",
        "Resource": [
            "arn:aws:s3:::REDACTED",
            "arn:aws:s3:::REDACTED/*"
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

这个 CORS 配置:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>REDACTED</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)

我正在尝试向我在 IAM 中创建的用户授予公共读取访问权限并限制其完全访问权限。 如果有人能确认我的设置是正确的,或者如果他们没有指出我需要正确设置的资源,我将不胜感激。

Joh*_*ein 12

要使对象可公开访问,请使用如下策略:

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"PublicRead",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::examplebucket/*"]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

请注意,使用"Principal": "*",这与您使用 的策略不同"Principal": {"AWS": "*"}

这允许访问对象 ( GetObject),但无法列出存储桶的内容。这将需要ListBucket存储桶本身的权限(没有/*)。

您还需要关闭与存储桶策略相关的两个阻止公共访问设置