管理EC2上的实例间访问



我们正在亚马逊EC2上建立我们的IT基础设施。假设设置如下:X台生产服务器Y台临时服务器日志整理和监视服务器生成服务器显然,我们需要让各种服务器相互通信。一个新的构建需要被scp到一个临时服务器。日志整理器需要从生产服务器中提取日志。我们很快意识到我们在管理访问密钥时遇到了麻烦。每个服务器都有自己的密钥对,可能还有自己的安全组。我们最终将*.pem文件从一台服务器复制到另一台服务器,这有点嘲弄安全性。构建服务器拥有临时服务器的访问密钥,以便通过ssh进行连接并推送新的构建。临时服务器同样具有生产实例的访问密钥(gump!)我在网上做了一些广泛的搜索,但没有找到任何人谈论处理这个问题的明智方法。设置与我们相似的人是如何处理这个问题的?我们知道我们目前的工作方式是错误的。问题是,什么是正确的方式?感谢你的帮助!感谢

[更新]我们的情况很复杂,因为至少构建服务器需要从外部服务器(特别是github)访问。我们正在使用Jenkins,提交后挂钩需要一个可公开访问的URL。@rook提出的堡垒方法在这种情况下失败了。

处理对EC2实例集合的访问的一个非常好的方法是使用堡垒主机。

您在EC2上使用的所有机器都应该禁止SSH访问开放的互联网,除了堡垒主机。创建一个名为"堡垒主机"的新安全策略,并且只允许端口22从堡垒传入所有其他EC2实例。EC2集合使用的所有密钥都位于堡垒主机上。每个用户对堡垒主机都有自己的帐户。这些用户应该使用受密码保护的密钥文件向堡垒进行身份验证。一旦他们登录,他们就应该可以访问他们工作所需的任何密钥。当某人被解雇时,你会将其用户帐户删除到堡垒中。如果用户从堡垒复制密钥,那也没关系,因为除非他们第一次登录到堡垒,否则他们无法登录。

创建两组密钥对,一组用于您的暂存服务器,另一组用于生产服务器。您可以为开发人员提供临时密钥,并将生产密钥保密。

我会把新的构建放在S3上,并在盒子上运行一个perl脚本,从S3存储桶中提取最新的代码,并将它们安装到相应的服务器上。这样,您就不必每次都手动将所有构建scp到其中。您还可以使用某种连续的构建自动化工具来自动化这个过程,这些工具将分别构建和转储构建到S3存储桶中。希望这能有所帮助。。

最新更新