我在一个 S3 帐户中有来自多个用户的数据。我的桌面应用程序有一个身份验证系统,它让应用程序知道用户是谁以及在 S3 上访问哪个文件夹。但桌面应用程序具有整个 S3 文件夹的访问代码。
有人告诉我这不安全,因为黑客可能会破坏从应用程序到 S3 的请求并使用凭据下载所有数据。
这是真的?如果是这样,我该如何避免呢?(他说我需要 AWS 云中的客户端服务器,但这对我来说并不清楚......)
顺便提一句。我正在使用 Boto python 库来访问 S3。
谢谢
我在一个 S3 帐户中有来自多个用户的数据。我的桌面应用程序有一个身份验证系统,它让应用程序知道用户是谁以及在 S3 上访问哪个文件夹。但桌面应用程序具有整个 S3 文件夹的访问代码。
有人告诉我这不安全,因为黑客可能会破坏从应用程序到 S3 的请求并使用凭据下载所有数据。
这是真的?如果是这样,我该如何避免呢?(他说我需要 AWS 云中的客户端服务器,但这对我来说并不清楚......)
顺便提一句。我正在使用 Boto python 库来访问 S3。
谢谢
我刚发现这个:
不要将您的 AWS 密钥存储在应用程序中。一个坚定的黑客最终将能够找到它。一种想法是,您在某处托管了一个 Web 服务,其唯一目的是使用密钥签署客户端的 S3 请求,然后将这些请求中继到 S3 服务。因此,您可以让您的用户使用您控制的凭据对您的 Web 服务进行身份验证。重申一下:客户直接与 S3 对话,但让他们的请求得到您的“橡皮图章”/批准。
我不认为 S3 一定是一个平面结构 - 如果您使用文件系统表示法“文件夹/子文件夹/file.ext”作为键。
S3 支持虚 URL,请参阅http://docs.amazonwebservices.com/AmazonS3/2006-03-01/VirtualHosting.html - 基本上 URL“ http://s3.amazonaws.com/mybucket/myfile.ext ”变为“ http://mybucket.s3.amazonaws.com/myfile.ext ” 然后您可以在您的 DNS 中设置一个 CNAME ,将“www.myname.com” 映射到 “mybucket.s3.amazonaws.com” 这会导致“ http://www.myname.com/myfile.ext "
时间恰好!AWS 昨天刚刚宣布了一项可能对您有所帮助的功能:IAM 策略中的变量。
您要做的是为每个用户创建一个 IAM 帐户。这将允许您为每个用户拥有单独的访问密钥和秘密密钥。然后,您将根据用户名将策略分配给您的存储桶,以限制对存储桶的一部分的访问。(我上面链接到的例子就是这个用例的一个很好的例子)。