最佳实践:AWS EC2 私钥

最佳实践:AWS EC2 私钥

我一直在努力处理 AWS 私钥问题,因为我试图确保我的所有 AWS 凭证安全、可靠且井然有序。我应该对多个 EC2 实例使用同一个 AWS 密钥,还是每个实例都应该有自己的唯一私钥?

我一直在寻找与此相关的最佳实践。如果您能另外解释一下原因,我将不胜感激。

我一直倾向于为每个实例提供唯一的私钥,以区分安全性。

提前致谢!

答案1

只是为了扩展@steenhulthin 的回答。

我认为最好将 EC2 生成的密钥对视为实例的主密钥,并且它是可选的。它不是用于管理用户级访问的系统。

我相信最佳做法如下

我需要远程登录实例吗?

是的:使用密钥对创建 EC2 实例

我认为最佳做法是为每个实例创建一个 EC2 密钥对。如果密钥对被泄露,则暴露范围仅限于该实例。但是,每个实例的密钥对可能难以管理,如果是这种情况,请找到某种合乎逻辑的方法对实例进行分组,并为每个组使用一个密钥对。例如按角色或角色和应用程序分组。

不:创建没有密钥对的 EC2 实例。

这显然更安全,因为您不会丢失或泄露密钥。实例本身无法通过常规方法访问。遵循此方法需要实例管理/配置完全自动化(Chef、Puppet 等),并且成本更高。总的来说,这会使实例更加安全,这一点尚有争议,并且取决于您的自动化配置方式。

管理 EC2 密钥对的最佳实践是什么? 这是我目前还没有很好答案的问题。

您是否需要允许人类远程访问实例? 正如@steenhulthin 所建议的,为每个用户创建本地用户帐户或使用一些集中式身份验证和授权。

此外,您还可以维护一个用于远程管理访问(SSH 或 RDP)的专用实例,仅向公共访问(IP 地址方面)开放该实例,并将所有其他实例上的 SSH 和/或 RDP 限制到管理站。

答案2

我认为这个问题可能更适合serverfault.com。

话虽如此:如果您单独处理实例,我认为为每个实例创建密钥对没有任何意义。我认为密钥对应该按用户创建。

如果多个用户应该访问机器,我会在 ec2 实例上添加一个新的密钥对,如下所述:https://forums.aws.amazon.com/message.jspa?messageID=185184这里对密钥对的生成过程进行了更详细的说明:http://seabourneinc.com/2011/01/19/change-key-pairs-on-aws-ec2-instance/

答案3

我写了一篇关于 SSH 最佳实践的文章,包括密钥管理、端口转发和代理转发。你可能会觉得它很有用。以下是关联

可以做的一些好事有:

  1. 每个人拥有一个 SSH 密钥
  2. 保护你的 SSH 密钥 - 切勿共享私钥,尽可能加密
  3. 切勿使用 AWS 生成的密钥
  4. 使用单独的登录(用户)ID,不要使用通用登录。

文章还提到了与 SSH 和用户访问相关的其他事项。

相关内容