ec2角色vs ec2角色以及用于s3访问的临时密钥

问题描述 投票:0回答:1

所以我在ec2上运行了一个需要访问s3的标准Rails应用程序。我目前正在使用长期访问键,但旋转键是一个痛苦,我想摆脱这一点。看来我有两个备选方案:

一,用具有访问s3存储桶的适当权限的角色标记ec2实例。这似乎很容易设置,但没有任何访问密钥似乎有点安全威胁。如果有人能够访问服务器,那么停止访问s3将非常困难。 Example

二,我可以“假设角色”使用ruby SDK和STS类从角色获取临时访问密钥,并在rails应用程序中使用它们。我很困惑如何设置它,但可能想出来。但是,这似乎是一种非常安全的方法,因为即使有人访问您的服务器,临时访问密钥也会使得长期访问s3数据变得更加困难。 General methodology of this setup.

我想我的主要问题是我应该选择哪个?现在哪个是行业标准?有没有人有建立STS的经验?

真诚感谢您对此问题的帮助和进一步了解!

ruby-on-rails amazon-web-services amazon-s3 amazon-ec2 aws-sdk
1个回答
0
投票

您问题中的所有方法都需要AWS Access Keys。这些键可能不明显,但它们就在那里。一旦他们在EC2实例内部访问而不是终止实例,就无法阻止他人。 (还有其他选择,但这是用于取证)

您当前正在实例上存储长期密钥。强烈建议不要这样做。建议的“最佳实践”方法是使用IAM角色并分配仅具有所需权限的角色。 AWS开发工具包将从实例的元数据中获取凭据。

您正在考虑使用STS。但是,您需要凭据才能调用STS以获取临时凭证。 STS是一项优秀的服务,但旨在将短期临时凭证分发给其他人 - 例如您的Web服务器通过STS创建凭证以便在有限的情况下交给您的用户,例如访问S3上的文件或发送你想到STS的错误在于,一旦坏人可以访问你的服务器,他就会窃取你调用STS的密钥,从而无需调用STS。

总之,请遵循保护服务器的最佳实践,例如NACL,安全组,最小权限,最小安装软件等。然后使用IAM角色并为EC2实例分配最低权限。不要忘记始终将数据备份到访问密钥无法访问的位置的价值。

© www.soinside.com 2019 - 2024. All rights reserved.