我在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密钥。
我该怎么做?
答案 0 :(得分:0)
默认情况下,所有S3存储桶和对象都是私有的。现在,您正在使用带有“Principal”的存储桶策略:{“AWS”:“*”}这使其成为“公共”。通常,如果我们想要访问另一个AWS账户或获得更细化的权限,我们应该使用存储桶策略。如果您尝试从同一帐户访问存储桶,则可能不需要存储桶策略。
因此,要将其设为私有,您只需delete the bucket policy并通过IAM提供必要的许可,例如如果您的脚本使用的是IAM用户的访问密钥,则应将IAM permission policy(例如S3FullAccess)附加到用户。
此外,"Sid"是策略中使用的可选标识符,因此您可以在IAM / S3存储桶策略中使用任何内容甚至省略它。