如何用单线程管理代码库权限?



我需要你关于代码库管理和安全的建议。我有一个单变量,它包含:

  • 多个后端服务。
  • 前端项目,如登陆页面、用户文档和web应用程序。
  • CDK描述的基础设施。

我认为让每个职位的每个开发人员(自由职业者,实习生,前端…)访问所有的代码库可能是危险的。

例如,前端自由职业者应该能够执行后端服务,而无需阅读代码。或者一个在JS能力的设计师应该能够只更新登陆页。

是过度杀伤吗?有没有人已经尝试过使用git subtree来保持一个单一的项目和它的所有优点,并在他们的存储库中分割每个项目?这样我就可以通过存储库设置权限,并在2个级别上使用CI:

  • 单个repo的单元和功能测试。
  • 单线程e2e和CD。

但是它不能解决只执行权限的问题。欢迎提供建议或资源。

gitnamespaces(7)中所述,可以读取存储库的用户可以读取其中的所有内容:

读取和推送协议不是为了防止一方从另一方存储库窃取不打算共享的数据而设计的。如果您需要保护私有数据免受恶意对等体的攻击,最好的选择是将其存储在另一个存储库中。这对客户端和服务器都适用。

如果您需要单独的访问控制,您将需要有单独的存储库。您可以使用git subtree将这些存储库合并到一个单orepo中,但是当然,任何对单orepo具有读访问权限的人都将对它的每个部分具有读访问权限。

此外,提供对存储库的仅执行访问是不可能的。对于解释型语言,要求用户具有读取文件的权限,因为解释器必须读取它。即使对于编译语言,大多数现代操作系统也需要读取权限才能执行二进制文件。您可以在CI中提供二进制文件作为工件,供没有访问该存储库的人使用,前提是您使用的是编译语言,但这将是一个麻烦,并且专门的用户仍然可以反编译二进制文件。

我应该指出,大多数大公司处理这个问题的方式是使用单独的存储库进行单独访问,并使用保密协议或其他法律机制来确保代码不被暴露。毕竟,您信任您的员工能够写出原创的、高质量的、没有恶意的代码(想必您正在补偿他们并相应地对待他们)。因此,允许开发人员访问他们需要处理的项目的整个源代码,同时也信任他们不会将其暴露给其他人,这通常是合理的。

最新更新