2013-04-05 80 views
0

我在單個S3帳戶內有多個用戶的數據。我的桌面應用程序有一個認證系統,可讓應用程序知道用戶是誰以及要在S3上訪問哪個文件夾。但桌面應用程序具有整個S3文件夾的訪問代碼。從桌面應用程序安全地訪問AWS S3

有人告訴我,這是不安全的,因爲黑客可能會破壞從應用程序到S3的請求,並使用憑據下載所有數據。

這是真的嗎?如果是這樣,我該如何避免它? (他說我需要在AWS雲中的客戶端服務器,但這並不明確...)

btw。我正在使用Boto python庫來訪問S3。

感謝

回答

1

我剛剛發現this

  1. 不要存放在應用中的AWS的密鑰。一個堅定的黑客將能夠找到它。一個想法是,您有一個Web服務託管在某個地方,其唯一目的是使用密鑰來簽署客戶端的S3請求,然後這些請求被中繼到S3服務。因此,您可以讓用戶使用您控制的憑據對您的Web服務進行身份驗證。重新進行:客戶直接與S3交談,但他們的請求已被「橡皮戳」/您的批准。

  2. 我沒有看到S3一定的扁平結構 - 如果你使用的文件系統符號「文件夾/子文件夾/ file.ext」的鑰匙。

  3. 虛榮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

1

完美的時機! AWS昨天剛剛宣佈了一項功能,可能會對您有所幫助:Variables in IAM policies

你會做的是爲每個用戶創建一個IAM帳戶。這將允許您爲每個用戶分配一個訪問密鑰和密鑰。然後,您將根據用戶名將策略分配給您的存儲桶,以限制對存儲桶的一部分的訪問。 (我上面鏈接的例子就是這個用例的很好例子)。