我们正在亚马逊EC2上设置我们的IT基础设施。假设这样的设置:X生产服务器,Y临时服务器,日志整理和监控服务器构建服务器,显然,我们需要让不同的服务器相互通信。新的构建需要通过scp传输到临时服务器。日志收集器需要从生产服务器拉取日志。我们很快意识到我们在管理访问密钥方面遇到了麻烦。每台服务器都有自己的密钥对,也可能有自己的安全组。我们最终将*.pem文件从一个服务器复制到另一个服务器,这有点像是对安全性的嘲弄。构建服务器拥有中间服务器的访问密钥,以便通过ssh连接并推送新的构建。临时服务器同样具有生产实例的访问密钥(gulp!)我在网上做了一些广泛的搜索,但没有真正找到任何人谈论一个明智的方法来处理这个问题。与我们的设置类似的人是如何处理这个问题的?我们知道我们目前的工作方式是错误的。问题是--什么是正确的方式?感谢您的帮助!谢谢
更新我们的情况是复杂的,因为至少需要从外部服务器(特别是github)访问构建服务器。我们使用的是Jenkins,post提交钩子需要一个可公开访问的URL。@rook建议的堡垒方法在这种情况下失败了。
发布于 2012-04-03 10:14:49
处理对EC2实例集合的访问的一个非常好的方法是使用Bastion Host。
除堡垒主机外,您在EC2上使用的所有机器都应禁止SSH访问开放的互联网。新建一个名为堡垒主机的安全策略,只允许堡垒的22端口进入所有其他EC2实例。EC2集合使用的所有密钥都存放在堡垒主机上。每个用户在堡垒主机上都有自己的帐户。这些用户应使用受密码保护的密钥文件进行堡垒身份验证。一旦他们登录,他们应该可以访问他们需要做他们的工作的任何密钥。当有人被解雇时,你将他们的用户账户移至堡垒。如果用户从堡垒复制密钥,这并不重要,因为除非他们首先登录到堡垒,否则他们无法登录。
发布于 2012-04-03 15:13:42
创建两组密钥对,一组用于临时服务器,另一组用于生产服务器。您可以将临时密钥提供给开发人员,并保留生产密钥的私密性。
我会将新的构建放到S3上,并在机器上运行一个perl脚本,以便从S3存储桶中提取最新的代码,并将它们安装到各自的服务器上。这样,您就不必每次都手动将所有构建内容scp到其中。您还可以使用某种连续构建自动化工具自动执行此过程,这些工具将分别构建构建并将构建转储到您的S3存储桶中。希望这能帮上忙..
https://stackoverflow.com/questions/9981968
复制相似问题