2

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

我需要的是模拟 Nirvanix 样式的子帐户用于 S3 存储。

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

我们将拥有超过 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 将继续允许更多数据。

我想我们可能可以忍受每天运行一个脚本来检查“滥用”的存储限制,但只是想知道是否有更好的方法。

谢谢大家!

约翰

4

1 回答 1

2

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

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

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

在此示例中,我们创建了一个将附加到名为 Bob 的用户的策略。该策略允许 Bob 访问 Amazon 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来简化您与这些服务的交互。

You absolutely don't want to distribute your standard secret key in a desktop application without taking some serious precautions. Any user with your secret key could have full access to all your AWS services.

于 2011-03-11T11:25:04.253 回答