如何在单体代码库中管理代码库权限?

3
我需要你关于代码库管理和安全方面的建议。我有一个包含以下内容的单体库:
  • 多个后端服务。
  • 前端项目,如着陆页、用户文档和 Web 应用程序。
  • 使用 CDK 描述的基础设施。
我认为让每个开发人员(自由职业者、实习生、前端等)都可以访问整个代码库可能是危险的。
例如,前端自由职业者应该能够执行后端服务而不阅读代码。或者,一位具有 JS 能力的设计师应该只能更新着陆页。
这是否过度了?是否已经有人尝试使用 git subtree 来保留单体库的所有优势并将每个项目拆分到它们自己的仓库中?这样我就可以按仓库设置权限,并在两个级别上使用 CI:
  • 通过单个仓库进行单元和功能测试。
  • 在单体库上进行 e2e 和 CD。
但这并不能解决仅限执行权限的问题。欢迎提供任何建议或资源。
1个回答

3

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

获取和推送协议并未设计用于防止一方从另一个存储库窃取未打算共享的数据。如果您有需要保护免受恶意对等方攻击的私人数据,则最好将其存储在另一个存储库中。这适用于客户端和服务器。

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接