我们正在从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会继续允许更多的数据。
我想我们可能会生活在我们每天运行的脚本中,理智会检查“滥用”的存储限制,但只是想知道是否有更好的方法。
全部谢谢!
约翰
答案 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服务。