我正在开发一个使用Amazon S3作为文件服务器的Web系统。文件直接上传到S3,相应的URL写入HTML页面。例如,我在S3有一个文件,其位置是:
https://myAccount.amazonaws.com/files/abc.png
在我刚才提到的HTML中:
<img src="https://myAccount.amazonaws.com/files/abc.png">
图像将在浏览器中正确显示。但是,为此,我必须将S3上的权限设置为everyone viewable
,这意味着该文件对公众开放。
如何将文件查看权限仅限于我网站的成员,而不是公众?
答案 0 :(得分:1)
有多种方法可以授予对Amazon S3对象的访问权限:
然而,第一个问题是如何定义“我的网站的成员,而不是公众”。我将假设您的意思是“我希望允许访问我的应用程序的人,而不是其他人”,并且您的应用程序知道这些用户,但它们未在IAM中定义。 (IAM仅用于存储将访问您的AWS环境的用户。它不应用于跟踪应用程序的用户。)
对于这种情况,我建议使用签名网址。他们的工作方式是:
因此,您的应用程序将负责确定是否应允许某人访问S3内容,如果允许,将允许通过签名URL进行访问。
有关构建签名URL的详细信息,请参阅:
基本上,它使用与 可以访问某个对象的IAM用户相关联的权限,然后使用该IAM用户的密钥的哈希来“签署”该请求。