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