想象一下以下的用例:確保S3通過自己的應用程序
你必須託管文件與S3一個大本營風格的應用程序。帳戶都有自己的文件,但存儲在S3上。
因此,開發人員如何確保文件安全,以便賬戶1的用戶無法以某種方式獲取賬戶2的文件?
我們正在談論Rails,如果這是一個幫助。
想象一下以下的用例:確保S3通過自己的應用程序
你必須託管文件與S3一個大本營風格的應用程序。帳戶都有自己的文件,但存儲在S3上。
因此,開發人員如何確保文件安全,以便賬戶1的用戶無法以某種方式獲取賬戶2的文件?
我們正在談論Rails,如果這是一個幫助。
S3支持簽名時間到期的URL,這意味着您可以爲用戶提供一個URL,只有具有該鏈接的用戶才能查看該文件,並且只能在一定時間內發佈。
如果您想限制對這些遠程資源的控制,您可以通過您的應用程序代理這些文件。對於像S3,這可以打敗你正在嘗試做的目的,但它仍然讓你保持數據與亞馬遜和限制訪問。
你應該小心使用這種方法,因爲它可能會導致ruby線程在代理文件時阻塞,這可能會成爲應用程序的真正問題。
它不必由RoR直接代理。下面的HTTP服務器可以配置做代理和回報率將只提供某種安全證書(可能是一個cookie值來測試)。這種設置可能是相當複雜的,取決於所使用的HTTP服務器上,需要訪問的服務器配置,並可能需要額外的幫助(如FastCGI的認證應用程序或一些認證掛鉤)。但是,在某些情況下,性能增益可能是值得的。 – 2010-03-23 19:00:36
我不知道是否一個簡單的代理 - >服務器端重定向將提供足夠的阻止絕大多數閒置衝浪者,而不是去整個豬... – 2010-03-23 20:24:21
即成使用EC2實例
的文件如果您設置S3鬥私,然後啓動EC2實例,您可以通過EC2服務於S3文件,使用EC2實例驗證權限根據您的應用程序的規則。因爲沒有收費EC2從S3轉移到/(同一區域內),你不必加倍亞馬遜你的帶寬消耗成本。
我真的不想有一個桶每個帳戶,因爲我認爲這贏了「T比例特別好... – 2010-03-23 20:23:27
你仍然可以保持所有對象在一個S3桶。 – 2010-03-23 22:00:03
我還沒有解決這個確切的問題。但是,這並不由具有意見阻止我:)
退房康康舞:
它允許自定義授權方案,沒有太多的麻煩。
如果我沒有錯誤s3只是一個存儲引擎。如果用戶從亞馬遜的s3服務器獲取目錄,那麼您將無法限制訪問。我認爲密碼是這個問題的錯誤方法。 – rook 2010-03-23 16:59:11