AWS账户标识符的影响

时间:2008-09-24 22:09:31

标签: security amazon-web-services amazon-s3 amazon-ec2 amazon-simpledb

我正在使用亚马逊的工具来构建网络应用。我对他们很满意,但我有安全问题。

目前,我正在使用多个EC2实例,S3,SimpleDB和SQS。为了验证对不同服务的请求,您需要包含Access Identifiers(需要登录)。

例如,要从EC2实例上传文件到S3,您的EC2实例需要拥有访问密钥ID 秘密访问密钥

这基本上意味着您的用户名和密码需要在您的实例中。

如果我的某个实例遭到入侵,我的所有亚马逊资产都会受到损害。密钥可用于上传/替换S3和SimpleDB数据,启动和停止EC2实例等。

如何最大限度地减少单个受感染主机的损害?

我的第一个想法是为每个帐户获取多个标识符,以便我可以跟踪所做的更改并快速撤消“黑客”帐户。亚马逊每个帐户不支持多套凭据。

我的第二个想法是创建多个帐户并使用ACL来控制访问。遗憾的是,并非所有服务都支持授予其他帐户访问您的数据的权限。加上你使用的带宽越多越便宜,所以拥有一个帐户是理想的。

有没有人处理过,或至少考虑过这个问题?

4 个答案:

答案 0 :(得分:5)

您可以做的是拥有一个超级锁定的“身份验证服务器”。密钥只存在于这一台服务器上,所有其他服务器都需要请求其权限。您可以将自己的密钥分配给各种服务器,也可以通过IP地址将其锁定。这样,如果服务器受到攻击,您只需从“身份验证服务器”中撤销其密钥。

由于AWS身份验证的工作方式,这是可能的。假设您的网络服务器需要将文件上传到S3。首先,它将生成AWS请求,并将该请求与您的自定义服务器密钥一起发送到“身份验证服务器”。身份验证服务器将对请求进行身份验证,执行加密魔术,并将经过身份验证的字符串返回给Web服务器。然后,网络服务器可以使用它来实际提交请求以及要上传到S3的文件。

答案 1 :(得分:5)

AWS允许您使用Identity and Access Management创建多个用户。这将允许您实现任一场景。

我建议为每个EC2实例定义一个IAM用户,如果相应的EC2实例遭到破坏,这允许您撤销对特定用户(或只是他们的访问密钥)的访问权限,并且还使用细粒度权限来限制哪些API用户可以呼叫以及他们可以访问哪些资源(例如,只允许用户上传到特定的存储桶)。

答案 2 :(得分:3)

此外,AWS IAM角色允许您为EC2实例分配权限,而不必在实例上放置密钥。 请参阅http://aws.typepad.com/aws/2012/06/iam-roles-for-ec2-instances-simplified-secure-access-to-aws-service-apis-from-ec2.html上的博文 大多数SDK都使用角色创建的临时密钥。

答案 3 :(得分:1)

AWS提供“合并结算”,以便在第二个想法中解决您的问题。

https://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&action=consolidated-billing

“合并结算”使您可以通过指定单个付费帐户来合并公司内多个Amazon Web Services(AWS)帐户的付款。您可以查看所有帐户产生的AWS成本的组合视图,以及获取详细信息与您的付款帐户关联的每个AWS账户的成本报告。合并结算还可以降低您的总体成本,因为所有账户的累计使用量可以帮助您更快地达到价格较低的批量等级。“

相关问题