管理 AWS EC2 密钥对的最佳实践

信息安全 密钥管理 aws
2021-08-10 17:58:33

我们的组织使用 Amazon Web Services (AWS),并且我们有多个 EC2 实例在不同的子网 (VPC) 中为不同的客户端运行。我们的应用程序正在开发中,我们需要远程(SSH 或 RDP)进入这些实例。

EC2 实例需要密钥对才能获得访问权限(在 Linux 的情况下为 SSH,在 Windows RDP 的情况下为管理员密码)。私钥是物理文件的形式,只能生成一次,下载一次。丢失此文件等同于失去连接到实例的能力。

是否有广泛接受的行业标准最佳实践来管理私钥?

目前我在便携式硬盘驱动器上有一个物理备份(加密),但这在我看来并不是最好的解决方案。大公司采用什么方法来确保他们能够在灾难中幸存下来?

2个回答

关于私钥/公钥的一般管理,SE 上已经有其他已回答的问题:最佳实践是什么:每个主机和用户单独的 ssh-key VS 所有主机的一个 ssh-key?管理密钥对的常用实用策略是什么?

关于 AWS 的具体细节:您可以而且应该在 AWS 之外创建自己的密钥对并将公钥上传到 Amazon。您可以在Amazon EC2 文档中找到为 Linux 和 Windows 系统创建自己的密钥的文档只需确保您使用正确的密钥格式(粘贴到密钥上传表单中的文本应以 开头ssh-rsa)。

如果您添加了其他密钥,则可以在启动新实例时选择它们。您也可以稍后手动添加它们(对于 Linux 系统:将公钥添加到~/.ssh/authorized_keys文件中)。

编辑:您应该遵循@Jedi 在对您的问题的评论中给出的建议:

私钥应该是用户私有的。用户应该拥有自己的密钥和帐户,以实现个性化和可审计性。

不仅是为了个性化和问责制,而且对于当某人离开团队/密钥对被泄露时的密钥撤销。

我写了一堆关于 EC2 和 ssh 的最佳实践。这是链接您可能会发现这很有用。总之:

  1. 每人拥有一个 SSH 密钥
  2. 保护您的 SSH 密钥 - 永远不要共享私钥,如果可能,请加密
  3. 永远不要使用 AWS 生成的密钥
  4. 使用个人登录(用户)ID
  5. 不要向所有人授予 sudo 访问权限
  6. 隐藏非公共实例
  7. 使用 SSH 端口转发和 SSH 代理转发