如何跨多个实例管理 AWS VPC ssh 访问帐户和密钥?

如何跨多个实例管理 AWS VPC ssh 访问帐户和密钥?

我正在设置一个标准的 AWS VPC 结构:一个公共子网、一些私有子网、每个子网上的主机、ELB 等。操作网络访问将通过 ssh 堡垒主机或 openvpn 实例进行。

一旦进入网络(堡垒或 openvpn),管理员就可以使用 ssh 访问各个实例。

据我所知,所有文档似乎都依赖于具有 sudo 权限和单个公共 ssh 密钥的单个用户。但这真的是最佳做法吗?让每个用户以自己的名称访问每个主机不是更好吗?

因此我可以向每个服务器部署账户和 ssh 公钥,但这很快就变得难以管理。

人们建议如何管理用户帐户?我查看过:

  • IAM:IAM 似乎没有自动将账户和 ssh 密钥分发给 VPC 实例的方法。
  • 通过 LDAP 进行 IAM:IAM 没有 LDAP API
  • LDAP:设置我自己的 LDAP 服务器(当然是冗余的)。管理起来有点麻烦,但还是比在每个主机上都管理要好,尤其是当我们发展壮大的时候。
  • 共享 ssh 密钥:依靠 VPN/堡垒来跟踪用户活动。我不喜欢它,但是...

人们推荐什么?

注意:我将此帖从 StackOverflow 中意外发布的内容中移出。

答案1

IAM 仅用于访问创建/修改/销毁 AWS 资源。它与授予对服务器的 SSH 访问权限无关。如果您的用户需要访问 AWS API,那么是的,绝对要给他们 IAM 用户。

关于创建用户、部署密钥等,只需使用配置管理系统即可。我为此使用 Ansible,这很容易。我可以将我的用户、他们的密钥及其 sudo 权限部署到单个服务器,就像部署到 1000 台服务器一样容易。

无论您做什么,在任何情况下都不要允许使用共享帐户、共享密钥等。

答案2

Userify.com管理用户账户、SSH 密钥和 sudo 角色。

使用 AWS 的用户数据(在实例启动的高级选项卡下)进行部署非常容易,或者将其粘贴在自动扩展组的用户数据脚本中,或者在您手动启动实例时使用,这非常棒,因为它在您登录之前就可以工作。(或者您可以将单行代码粘贴到您的服务器控制台中,但这并不那么有趣......)

它还支持 Chef 和类似的东西,每个用户(开发人员/管理员/等)都有自己的 Web 登录名来更新密钥。这非常轻松。

相关内容