0

我在一个 S3 帐户中有来自多个用户的数据。我的桌面应用程序有一个身份验证系统,它让应用程序知道用户是谁以及在 S3 上访问哪个文件夹。但桌面应用程序具有整个 S3 文件夹的访问代码。

有人告诉我这不安全,因为黑客可能会破坏从应用程序到 S3 的请求并使用凭据下载所有数据。

这是真的?如果是这样,我该如何避免呢?(他说我需要 AWS 云中的客户端服务器,但这对我来说并不清楚......)

顺便提一句。我正在使用 Boto python 库来访问 S3。

谢谢

4

2 回答 2

2

我刚发现这个

  1. 不要将您的 AWS 密钥存储在应用程序中。一个坚定的黑客最终将能够找到它。一种想法是,您在某处托管了一个 Web 服务,其唯一目的是使用密钥签署客户端的 S3 请求,然后将这些请求中继到 S3 服务。因此,您可以让您的用户使用您控制的凭据对您的 Web 服务进行身份验证。重申一下:客户直接与 S3 对话,但让他们的请求得到您的“橡皮图章”/批准。

  2. 我不认为 S3 一定是一个平面结构 - 如果您使用文件系统表示法“文件夹/子文件夹/file.ext”作为键。

  3. 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 "

于 2013-04-05T05:01:13.023 回答
1

时间恰好!AWS 昨天刚刚宣布了一项可能对您有所帮助的功能:IAM 策略中的变量

您要做的是为每个用户创建一个 IAM 帐户。这将允许您为每个用户拥有单独的访问密钥和秘密密钥。然后,您将根据用户名将策略分配给您的存储桶,以限制对存储桶的一部分的访问。(我上面链接到的例子就是这个用例的一个很好的例子)。

于 2013-04-05T05:16:46.720 回答