2011-03-10 185 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