使用案例:我们正在开发Web应用程序,客户端已要求我们使用AWS S3存储图像。在应用程序中,Everyone将拥有自己的帐户并将上传自己的图像,一些上传的图像将公开。
根据我的理解,我们可以通过使用预先编写的URL来上传图像。但我面临的问题是,如何限制对其他用户的图像访问。
答案 0 :(得分:1)
您可以使用已签名的网址和已签名的Cookie来投放私人内容。如果您无法更改应用程序,使用私人链接可能不可行,签名的cookie可以帮助您。此外,CloudFront还提供了进一步的安全性和效率改进,请查看http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html
上的文档答案 1 :(得分:1)
使用Amazon S3有两种基本方法:
在第一种情况下,只有您的应用程序可以访问存储在S3中的数据/文件。它必须检索内容并将其提供给用户。这是Web服务器的传统方法。
在第二种情况下,您可以生成包含对存储在S3中的文件的引用的HTML页面。例如,如果图像出现在网页中,则{{1}}参数将指向Amazon S3 URL。然后,该文件将从S3提供,而无需通过您的Web服务器。
这可以通过使用预签名URL来增强,这些URL是有时间限制的URL,可以访问存储在Amazon S3中的私人内容。它的工作原理如下:
预签名网址包含:
预签名URL只需几行代码即可创建,无需调用AWS API。
底线:保持所有图片都是私密的。您的应用程序确认每个用户即时访问图像的权限,然后生成URL以授予限时访问权限。
答案 2 :(得分:0)
如果您计划实施细粒度的访问控制,您可以遵循多种方法。作为第一步,您需要为每个用户提供唯一的空间来上传内容。这可以是存储桶中的存储桶或路径前缀(您将其视为目录)。
通常我建议使用每个用户的路径前缀对用户空间进行分区,这样您就可以使用IAM角色或创建具有所需细粒度访问控制的预签名URL,以便特定用户可以访问自己的空间。