我是 AWS CLI 的新手,但有一件事让我有点困扰,那就是我需要将我的凭证存储在一个文件中。我buckets
在 S3 上有几个凭证,我为我的应用程序创建了一个帐户,该帐户只能访问这个存储桶。但是,如果我的服务器被黑客入侵,攻击者可以轻松读取我的.aws/credentials
文件并破坏我的存储桶中的所有内容。然后,我的公司就会陷入巨大的麻烦,因为我们非常依赖 AWS!有什么建议可以提高这种情况的安全性吗?
我完全理解,如果我的服务器被黑客入侵,并且具有 sudo 访问权限,我的机会就很小,但是,我想尽可能地使其更加困难,以防止任何损害。
答案1
问题 1:
我需要将我的凭证存储在一个文件中
如果您的服务器是 EC2 实例,则您不必将凭据存储在文件中。
相反,请在您的 EC2 实例中使用 IAM 角色和实例配置文件。执行此操作时,请勿为 AWS CLI 配置凭证。当您使用 CLI 执行命令时,CLI 将在服务器外收集临时凭证并使用它们。
http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html
如果您这样做,那么如果有人未经授权访问服务器,他们就无法拿走任何凭证文件。要造成任何损害,他们必须在服务器上进行操作。
问题 2:
为防止存储桶损坏,请启用存储桶版本控制。这样,如果有人删除和/或更改对象,您仍可以访问旧版本。
另外,如果你确实需要删除对象,那么请启用 MFA 删除。启用后,需要删除对象时必须使用 MFA。如果不使用 MFA 设备,则禁止删除对象。
对于任何访问存储桶的人,请授予他们最低权限。谨慎盲目允许s3:*
。如果他们只需要读取对象,只需授予他们s3:GetObject
。
答案2
你应该进行异地备份。每天(例如)你都会将所有数据复制到不同位置的不同提供商,以便在发生灾难时可以从中恢复。