【问题标题】:S3 Boto 403 Forbidden Unless Access Given to "Any Authenticated AWS User"S3 Boto 403 禁止访问,除非授予“任何经过身份验证的 AWS 用户”的访问权限
【发布时间】:2017-04-18 00:14:33
【问题描述】:

我正在使用 Python 和 Boto 将图像上传到 S3。如果我添加“任何经过身份验证的 AWS 用户”的被授权者并授予该被授权者上传/删除的权限,我可以让它工作。但是,我从文档和该站点上的几个不同帖子的印象是,这实际上将允许任何经过身份验证的 AWS 用户,而不仅仅是那些经过我的帐户身份验证的用户,来访问我不想要的存储桶。但是,如果我只向帐户所有者授予上传/删除权限,我将无法上传文件 (403),即使我像这样进行身份验证:

s3 = boto.connect_s3(aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY)

im = Image.open(BytesIO(urllib.urlopen(self.url).read()))
filename = self.url.split('/')[-1].split('.')[0]
extension = self.url.split('.')[-1]
out_im2 = cStringIO.StringIO()
im.save(out_im2, im.format)
key = bucket.new_key(filename + "." + extension)
key.set_contents_from_string(out_im2.getvalue(), headers={
    "Content-Type": extension_contenttype_mapping[extension], 
})
key.set_acl('public-read')
self.file = bucket_url + filename + "." + extension

在这种情况下我做错了什么?

【问题讨论】:

    标签: python django amazon-web-services amazon-s3 boto


    【解决方案1】:

    如果不是我正在寻找的答案,我至少找到了答案。我创建了一个特定于此存储桶的用户,并将该用户添加到具有 AmazonS3FullAccess 权限的组中,我也必须创建该权限。然后我修改了我的 boto 请求,以便他们使用这个用户而不是帐户的所有者,我添加了这个存储桶策略:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::111111111111:root"
                },
                "Action": "s3:*",
                "Resource": [
                    "arn:aws:s3:::media.example.com",
                    "arn:aws:s3:::media.example.com/*"
                ]
            }
        ]
    }
    

    这对我有用,虽然我不知道存储桶策略是否是解决方案的一部分,我仍然不知道为什么当我以所有者用户身份尝试时它不起作用。然而,无论如何,这是更正确、更安全的做事方式。

    【讨论】:

      猜你喜欢
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 2019-06-28
      • 2020-09-27
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      相关资源
      最近更新 更多