我是AWS S3的新手,我创建了存储桶,并在其中存储了用户个人资料照片和我们的日常数据备份(频繁上传)。
当我打开S3时
Access: Public is showing
当我打开存储桶时,“权限”标签也会显示为公开。
我的存储桶策略也是公开的
告诉我们创建存储桶的标准和安全实现是什么。
如果我删除公共访问权限,那么用户是否会获得其个人资料照片? 如果我删除公共访问权限,那么“我的数据库备份”将上传还是不上传?
我知道建议使用“私人”选项,但是从“公开”更改为“私人”后,我担心我的照片和数据库备份将无法正常工作。
我的存储桶策略是
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucketname/*"
}
]
}
很明显,这项政策将允许所有人。
任何具有较强知识和专业知识的人,请向我提出一些解决此问题的好方法。任何帮助,支持或建议都非常感谢。
答案 0 :(得分:0)
默认情况下,Amazon S3中的所有对象都是私有的。这意味着只能通过提供AWS凭证来访问它们。很好。
如果您想将对象做成公开,那么任何人都可以访问该对象。上述存储桶政策是公开整个存储桶,因此任何人都可以在存储桶上调用GetObject
。诚然,他们将需要知道对象的名称,因为它们无法列出存储桶的内容,但是对象是可公开访问的。
通常最佳做法是仅在必要时才授予对数据的访问权限。因此,如果您有一个网站希望显示用户个人资料照片,则可以将其公开。但是,您不太可能希望整个世界都可以访问您的数据备份。因此,将整个存储桶公开可能不是一个好主意。
有几种方法可以授予对Amazon S3中对象的访问权限:
如果您有一个显示个人资料图片的应用程序,但又不想公开该个人资料图片,则您的应用程序可以生成一个预签名URL ,该URL提供对私有文件的临时访问宾语。可以在网页上的<img src=.../>
标签中使用此URL。到期后,URL将不再起作用。
因此,最好的方法是将对象保密,除非您有特定的理由将它们公开。使用预签名的URL是提供临时访问的好方法。
请参阅:Share an Object with Others - Amazon Simple Storage Service