如何让我的S3存储桶不公开?

时间:2017-12-20 14:02:16

标签: amazon-web-services amazon-s3 acl

我在s3.eu-central-1.amazonaws.com/my-bucket-123上有一个公共的桶。 我可以通过浏览器访问它,即使我没有通过身份验证;它显示了一个xml页面,其中包含指向我文件的所有链接,即使我在存储桶中有这个策略:

  {
      "Version": "2012-10-17",
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "AWS": "*"
              },
              "Action": "s3:ListBucket",
              "Resource": "arn:aws:s3:::my_bucket123"
          },
          {
              "Effect": "Allow",
              "Principal": {
                  "AWS": "*"
              },
              "Action": [
                  "s3:PutObject",
                  "s3:GetObject",
                  "s3:DeleteObject"
              ],
              "Resource": "arn:aws:s3:::my_bucket123/*"
          }
      ]
  }

我认为这项政策可能会以错误的方式设置。

我想要的是

a)使其成为非公开的

b)允许我的python脚本通过API使用它,无论IP地址如何。该脚本使用标准的cli" aws s3"亚马逊的实用程序和API密钥。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

默认情况下,所有S3存储桶和对象都是私有的。现在,您正在使用带有“Principal”的存储桶策略:{“AWS”:“*”}这使其成为“公共”。通常,如果我们想要访问另一个AWS账户或获得更细化的权限,我们应该使用存储桶策略。如果您尝试从同一帐户访问存储桶,则可能不需要存储桶策略。

因此,要将其设为私有,您只需delete the bucket policy并通过IAM提供必要的许可,例如如果您的脚本使用的是IAM用户的访问密钥,则应将IAM permission policy(例如S3FullAccess)附加到用户。

此外,"Sid"是策略中使用的可选标识符,因此您可以在IAM / S3存储桶策略中使用任何内容甚至省略它。