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

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

我在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地址如何。该脚本使用Amazon的标准cli“aws s3”实用程序和API密钥。

我怎样才能做到这一点?

amazon-web-services amazon-s3 acl
1个回答
0
投票

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

因此,为了使其成为私有,您可以通过IAM获得delete the bucket policy并给予必要的许可,例如如果您的脚本使用IAM用户的访问密钥,则应将IAM permission policy(例如S3FullAccess)附加到用户。

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

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