4

我正处于为我们的用户编写AWS应用程序的早期阶段,该应用程序将使用他们的 AWS 资源运行我们的研究算法。例如,我们的代码需要启动运行我们的“worker”应用程序的EC2实例,访问RDS数据库,并创建访问SQS队列。AWS Java SDK示例(我们用Java 编写)使用 AwsCredentials.properties 文件来存储访问密钥 ID 和秘密访问密钥,这对于示例来说很好,但对于我们的用户来说显然是不可接受的,他们本质上是让我们可以访问他们的所有资源。代表他们运行我们的系统的干净方法是什么?我发现了AWS Identity and Access Management (IAM)这似乎是为了这个目的(我还没有弄清楚),尤其是。AWS 账户之间的跨账户访问这篇文章听起来很简单:

使用 amazon IAM 服务创建一组仅有权执行脚本所需任务的密钥。 http://aws.amazon.com/iam/

但是,其他帖子(例如,在 IAM 中,我可以限制一组用户仅访问/启动/终止某些 EC2 AMI 或实例吗?)建议将 IAM 与 EC2 一起使用是有限制的。

任何建议都会非常有帮助!

4

1 回答 1

1

关于 RDS 和 EC2 的关键限制是,虽然您可以限制对某些 API 操作的访问,但没有资源级别的限制。例如,使用 IAM S3 策略,您可以限制用户只能对某些存储桶执行某些操作。您可以为 EC2 编写一个策略,说明允许用户停止实例,但不能说明您只能停止某些实例。

另一种选择是让他们通过Security Token Service为您提供临时凭证。另一个变体是使用新的 IAM 角色服务。有了这个,一个实例就有了一组与之关联的策略。您无需提供 AwsCredentials.proprties 文件,因为 SDK 可以从元数据服务获取凭证。

最后一个选项可能是合并计费。如果您使用他们的 AWS 资源的原因仅仅是因为计费,那么设置一个从他们的账户计费的新账户。这些帐户彼此隔离,因此您不能例如意外删除它们的实例。同样,您无法访问他们的 RDS 快照之类的东西(通过 mysql(而不是 AWS api)访问 RDS 实例将取决于实例的安全组)。您当然可以将其与之前的选项结合使用——它们可以为您提供仅允许您在该隔离帐户中执行某些操作的凭据。

于 2012-07-05T21:01:44.723 回答