Amazon S3中的子帐户(如Nirvanix)(子帐户,客户帐户)

时间:2011-03-10 09:13:45

标签: amazon-s3 cloud cloud-hosting

我们正在从Nirvanix迁移到Amazon S3。

我需要的是为S3存储模拟Nirvanix样式child accounts

(简而言之,这些提供了具有预定义限制的独立存储,并为每个子用户提供单独的身份验证,仍由同一主帐户管理)。

我们将拥有超过100个用户,因此每个用户无法使用(这仍然限制在100?)。

存储直接从桌面应用程序使用(例如,不通过我们的服务器使用,但如果有帮助,则有一个中央服务器)。

我们想要一个单一的S3结算帐户来支付所有费用,但我们希望我们的客户对象可以安全地相互分割。

Nirvanix开箱即用(http://developer.nirvanix.com/sitefiles/1000/API.html#_TocCreatingChildAccounts) - 这基本上就是我试图用S3复制的。

我了解如何为每个子用户细分对象,例如使用对象的“前缀”表示法(例如“USER1 / object1”,“USER2 / something_else”。

我无法解决的问题:

1)如何设置权限,以便每个客户只能访问他的文件?

如果我给“应用程序”访问S3存储,那么这显然意味着该应用的每个用户都可以访问任何人的文件。

您似乎可以设置丰富的ACL,但我无法理解的是“谁”可以设置权限。它只是AWS用户吗?这是否意味着唯一的方法是让我的客户各自拥有一个AWS账户?

如果是,我可以代表他们创建帐户吗?例如。通过API调用?

我们当然不能允许每个用户通过AWS网站创建一个帐户(哎呀!)。

2)有关管理每位客户配额的最佳方法的想法吗?

这让我很担心,因为据我所知,我们必须从桌面应用程序中限制它。这显然是滥用的成熟因为S3会继续允许更多的数据。

我想我们可能会生活在我们每天运行的脚本中,理智会检查“滥用”的存储限制,但只是想知道是否有更好的方法。

全部谢谢!

约翰

1 个答案:

答案 0 :(得分:2)

亚马逊有一项名为AWS Identity and Access Management (IAM)的新测试版服务,可让您对存储分区进行细分。

在文档的using with S3部分中,有一些示例描述了您的用例:

  

示例1 :允许每个用户在Amazon S3中拥有主目录

     

在此示例中,我们创建了一个策略   我们将附加到名为的用户   鲍勃。该策略授予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服务。