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

我正在build立一个标准的AWS VPC结构:一个公有子网,一些私有子网,每个ELB上的主机等。操作networking访问将通过ssh堡垒主机或openvpn实例。

一旦在networking上(堡垒或openvpn),pipe理员使用ssh访问个别实例。

从我可以告诉所有的文件似乎取决于一个单一的用户与sudo权利和一个单一的公共ssh密钥。 但那真的是最好的做法吗? 让每个用户以自己的名字访问每个主机是不是更好?

所以我可以部署帐户和ssh公钥到每个服务器,但是这很快变得难以pipe理。

人们如何build议pipe理用户帐户? 我看过:

  • IAM:它看起来不像IAM有自动分配帐户和ssh密钥到VPC实例的方法。
  • IAM通过LDAP:IAM没有LDAP API
  • LDAP:设置我自己的LDAP服务器(当然是冗余的)。 比起在每个主机上进行pipe理,特别是在我们成长的过程中,还是要pipe理好一点痛苦。
  • 共享ssh密钥:依靠VPN /堡垒来跟踪用户活动。 我不喜欢它,但…

人们推荐什么?

注意:我把这个意外地发布在StackOverflow中。

IAM严格用于创build/修改/销毁AWS资源。 这与授予ssh访问您的服务器无关。 如果您的用户确实需要访问AWS API,那么是的,绝对要给他们IAM用户。

关于创build用户,部署密钥等。只需使用configurationpipe理系统即可。 我为此使用Ansible,这是一件轻而易举的事情。 我可以将我的用户,密钥和sudo权限部署到单个服务器,就像我可以轻松部署到1000台服务器一样。

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

Userify.compipe理用户帐户,SSH密钥和sudoangular色。

使用AWS的用户数据(在实例启动的“高级”选项卡下)进行部署非常简单,或者在用户自定义组的UserData脚本中,或者在手动启动实例时,都可以很方便地进行部署,这是非常棒的,login(或者你可以将一行代码粘贴到你的服务器控制台中,但是这并不是那么有趣)

它也支持厨师和类似的东西,每个用户(开发人员/pipe理员等)都有自己的networkinglogin来更新密钥。 这是非常痛苦的。