AWS账户标识符的影响
我正在使用亚马逊的工具来构建Web应用程序。我对他们很满意,但我有一个安全问题。AWS账户标识符的影响
现在,我使用多个EC2实例,S3,SimpleDB和SQS。为了验证对不同服务的请求,请包括您的Access Identifiers(需要登录)。
例如,从EC2实例文件上传到S3,您的EC2实例需要有您访问密钥ID和你访问密钥。
这基本上意味着您的用户名和密码需要在您的实例中。
如果我的某个实例遭到入侵,我的所有Amazon资产都会受到影响。密钥可用于上传/替换S3和SimpleDB数据,启动和停止EC2实例等。
如何最小化单个受损主机的损害?
我的第一个想法是为每个帐户获取多个标识符,以便我可以跟踪所做的更改并快速撤销“黑客”帐户。亚马逊不支持每个帐户的多组凭据。
我的第二个想法是创建多个帐户并使用ACL来控制访问。不幸的是,并非所有服务都支持授予其他帐户访问您的数据的权限。此外,带宽越多,使用的带宽就越便宜,因此全部都通过一个帐户是理想的。
有没有人处理过,或者至少想过这个问题?
你可以做的是拥有一个超级锁定的'验证服务器'。密钥只存在于这台服务器上,所有其他服务器都需要向其请求许可。您可以将自己的密钥分配给各个服务器,并通过IP地址将其锁定。这样,如果服务器遭到入侵,您只需从“身份验证服务器”撤销密钥。
由于AWS身份验证的工作方式,这是可能的。假设您的网络服务器需要将文件上传到S3。首先,它将生成AWS请求,并将该请求连同您的自定义服务器密钥一起发送到“验证服务器”。身份验证服务器将对请求进行身份验证,执行加密魔术,并将经过身份验证的字符串返回给网络服务器。网络服务器然后可以使用它来实际提交请求以及文件上传到S3。
AWS提供了“综合计费”,可以在第二个思路中解决您的问题。
“合并结算,您可以合并多个Amazon Web Services的支付(AWS)公司内通过指定一个付费帐户帐户。你可以看到所有帐户发生的AWS费用的组合视图,以及获取与您的付款账户相关的每个AWS账户的详细成本报告。综合账单还可以降低您的总体成本,因为所有账户的累计使用可以帮助您更快地达到价格更低的卷层级“。
AWS允许您使用Identity and Access Management创建多个用户。这将允许你实现你的任何场景。
我建议限定每个EC2实例的IAM用户,这可以让你如果相应的EC2实例损害撤销访问特定用户(或只是他们的访问密钥),还可以使用细粒度的权限来限制哪些API用户可以打电话以及他们可以访问哪些资源(例如,只允许用户上传到特定存储区)。
是的,IAM是要走的路。 IAM权限可以进一步精确到只有确切的实例需要做的事情(上传或读取特定存储桶中的数据等)。 – 2011-08-09 10:40:55
此外,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使用由角色创建的临时密钥。
“滚动您自己的”这种身份验证服务器很可能会导致意外的和不被察觉的安全漏洞。 AWS现在(但在第一次提问时没有回来)有设施来管理这个问题带来的风险。特别是,IAM角色(如@ cudds的回答所描述的)非常适合这个问题。 – 2013-06-22 13:27:04