2011-03-10 182 views
2

我們從Nirvanix轉移到Amazon S3。Amazon S3中的子帳戶(如Nirvanix)(子帳戶,客戶帳戶)

我需要的是模擬S3存儲的Nirvanix風格child accounts。 (簡而言之,這些提供了具有預定義限制的隔離存儲,併爲每個子用戶提供了單獨的身份驗證,仍由同一個主帳戶管理)。

我們將有100多個用戶,這樣每桶用戶將無法工作(這仍然限制在100?)。

該存儲是直接從桌面應用程序(而不是,例如,通過我們的服務器,雖然有一箇中央服務器,如果有幫助的話)使用。

我們想要一個支付所有費用的單個S3結算帳戶,但我們希望我們的客戶對象彼此安全地分割。

Nirvanix提供了這個開箱即用的(http://developer.nirvanix.com/sitefiles/1000/API.html#_TocCreatingChildAccounts) - 這實際上是我試圖用S3複製的。

我明白如何爲每個子用戶分割對象,例如, 。使用對象的「前綴」符號(如「USER1/object1」,「用戶2/something_else)

我不能工作了:

1)如何設置權限,使每個客戶只能訪問自己的文件?

如果我給的「應用程序」訪問S3存儲,那麼這顯然意味着該應用程序的每個用戶都可以訪問任何人的文件。

好像你可以設置豐富ACL,但我無法理解的是您可以設置權限的「誰」,是否只有AWS用戶?是這樣意味着做到這一點的唯一方法是讓我的客戶都擁有一個AWS賬戶?

如果是這樣,我可以代表他們創建帳戶嗎?例如。通過API調用?

我們當然不能允許每個用戶都通過AWS網站創建一個賬戶(yuck!)。

2)有關爲每個客戶管理配額的最佳方法的任何想法?

這關注我,因爲從我所知道的,我們必須從桌面應用程序限制這一點。這顯然已經成熟了,因爲S3會繼續允許更多的數據。

我想我們也許可以生活在一個我們每天運行的腳本中,這種理智檢查「濫用」的存儲限制,但只是想知道是否有更好的方法。

謝謝大家!

約翰

回答

2

亞馬遜有一個新的測試版服務,稱爲AWS Identity and Access Management (IAM),讓你來細分桶。

在本文檔的using with S3部分,也有描述你的使用情況的例子:

實施例1:允許每個用戶有一個主目錄中的Amazon S3

在這個例子中,我們創建一個策略 ,我們將附加到名爲 Bob的用戶。該政策爲Bob提供訪問 亞馬遜的以下主目錄 S3:my_corporate_bucket/home/bob。 Bob只允許訪問 策略中顯示的 特定的Amazon S3操作,並且只能訪問其主目錄中的對象 。

{ 
    "Statement":[{ 
     "Effect":"Allow", 
     "Action":["s3:PutObject","s3:GetObject","s3:GetObjectVersion", 
     "s3:DeleteObject","s3:DeleteObjectVersion"], 
     "Resource":"arn:aws:s3:::my_corporate_bucket/home/bob/*" 
    } 
    ] 
} 

不幸的是,我不認爲你可以使用IAM目前執行配額限制。

此外,根據您的平臺,您可能需要使用SDK's之一,以簡化與這些服務的交互。

您絕對不希望將標準secret key分發到桌面應用程序中,而無需採取一些嚴肅的預防措施。擁有密鑰的任何用戶都可以完全訪問所有AWS服務。

+0

這很棒我會看看。 – John 2011-03-11 14:03:07

+0

這是完美的 - 謝謝。 – John 2011-03-14 13:18:55

+0

@John。沒問題 – 2011-03-14 13:57:08