从桌面应用程序安全地访问AWS S3
我在单个S3帐户内有多个用户的数据。我的桌面应用程序有一个认证系统,可让应用程序知道用户是谁以及要在S3*问哪个文件夹。但桌面应用程序具有整个S3文件夹的访问代码。从桌面应用程序安全地访问AWS S3
有人告诉我,这是不安全的,因为黑客可能会破坏从应用程序到S3的请求,并使用凭据下载所有数据。
这是真的吗?如果是这样,我该如何避免它? (他说我需要在AWS云中的客户端服务器,但这并不明确...)
btw。我正在使用Boto python库来访问S3。
感谢
我刚刚发现this:
不要存放在应用中的AWS的密钥。一个坚定的黑客将能够找到它。一个想法是,您有一个Web服务托管在某个地方,其唯一目的是使用密钥来签署客户端的S3请求,然后这些请求被中继到S3服务。因此,您可以让用户使用您控制的凭据对您的Web服务进行身份验证。重新进行:客户直接与S3交谈,但他们的请求已被“橡皮戳”/您的批准。
我没有看到S3一定的扁平结构 - 如果你使用的文件系统符号“文件夹/子文件夹/ file.ext”的钥匙。
虚荣URL由S3支持见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”然后你可以设置一个CNAME在您的DNS映射“www.myname.com”到“mybucket.s3.amazonaws .com“,结果为”http://www.myname.com/myfile.ext“
完美的时机! AWS昨天刚刚宣布了一项功能,可能会对您有所帮助:Variables in IAM policies。
你会做的是为每个用户创建一个IAM帐户。这将允许您为每个用户分配一个访问密钥和密钥。然后,您将根据用户名将策略分配给您的存储桶,以限制对存储桶的一部分的访问。 (我上面链接的例子就是这个用例的很好例子)。