我正在考虑使用基于云的连续部署服务器来为我的应用程序推送生产代码。
因为它是一个基于云的服务器,这要求我给他们一个私有SSH密钥,该密钥可以将适当的文件推送到我的生产服务器。我认为,根据最小特权的原则,这个SSH密钥应该允许登录到一个拥有写权限的锁定用户,只访问几个目录。然后,生产服务器可以使用upstart或其他类型的脚本来检测代码更改并开始运行新代码。
假设我的威胁模型是私有SSH密钥从它们的末端泄漏出来。是否有可能完全减轻这种风险?即使我尽可能地锁定用户,最终由用户推送的代码也将由webserver用户执行(后者拥有更大的权限)。因此,我给出的SSH密钥的任何泄漏似乎都会导致远程代码执行的可能性。
在建立基于云的CI/CD服务器方面有什么最佳实践吗?还是说这只是我必须承担的风险?
发布于 2016-10-15 16:45:16
您可以使用的一个缓解措施是IP限制上传,毕竟,您知道合法上传将从哪里来。这将通过不损害实际服务器(即备份丢失、磁盘复制、只读攻击等)的方法来减少ssh密钥丢失。
您可以进一步减少使用协议--它们将遵循适当的安全措施,在备份数据之前对数据进行加密,定期对服务器进行修补。
我可以想象某种一次性使用令牌,它会被您控制的系统添加到您的源回购项目中,而这种变化正是触发构建的原因。您的has服务器可以在没有有效令牌的情况下拒绝生成,也可以拒绝使用它以前见过的令牌。然而,这可能是过度的,而且要复杂得多。它可能更适合在生产部署前有手动门的CI,而不是CD,如果它通过测试的话。
https://security.stackexchange.com/questions/139807
复制相似问题