大多数git托管服务和服务器都提供基于ssh密钥的acl。我想知道是否还有每个用户也提供ip访问限制。
使用案例:我有一个构建/测试机器人,我想授予对我测试的存储库的只读访问权限。作为构建过程的一部分,此服务器可能需要访问其他存储库(.e.g子模块),这意味着我们需要为其提供一个可访问所有存储库的全局密钥。
在我看来,在一个小/不太重要的存储库上具有访问权限的开发人员可以提交代码,从构建服务器中显示ssh密钥,然后使用它来访问所有存储库,这是一个很大的安全风险。然而,ip限制将增强常规用户的安全性,也可作为第二因素身份验证。
答案 0 :(得分:0)
您提出的安全模型存在的问题是构建脚本通常能够执行任意代码;正如你所指出的那样,可以利用它来提取读取所有存储库的密钥。
但是,如果是这种情况,那么基于IP的访问限制将无法帮助您。
更好的模型是将代码检查与构建代码分开。查看一个主机上的代码,然后在另一个只能访问该签出代码的沙盒主机上构建它。
你可以通过多种方式来构建这个,所以我不会在这里讨论所有这些,但是一个例子是主机,它可以访问Git存储库,然后scp的代码到实际构建机器。防火墙阻止来自构建机器的任何传出连接;只允许从主服务器进行ssh访问,主服务器将文件复制到位并启动构建过程。
您可以使用虚拟机,沙盒容器等进行许多其他变体。但基本思想是,如果对Git存储库的访问被视为特权,并且构建过程不受信任,那么您永远不会允许构建过程在他们可以访问Git存储库的任何环境中运行,或者他们不应该访问的任何其他内容。