【发布时间】:2020-02-17 01:21:13
【问题描述】:
总结
我们的团队如何禁用单个 git 用户的分支“读取权限”?市场是否为自托管环境提供任何现有工具?还是有其他更好的方法来提供对 git 文件/目录的“禁用读取访问”?
到目前为止,我们认为我们可能更喜欢基于 git-branch 的访问控制,因为 a) 基于分支的控制似乎比 b) 基于目录的控制更好,因为 (a) 似乎可以做任何事情 (b) 可以,等等。
我们意识到这对于一个旨在将一切(在 repo 中)复制到(该 repo 的)克隆的工具 (git) 来说是一项艰巨的任务。我们对此持怀疑态度,但仍然想知道是否存在创造性的解决方案或是否可以发明/发现。
首选功能
适用于任何分支的 RACL(读取访问控制列表),包括适用于任何 git 用户集或组合的无限数量的任何单个分支。
[可选] 与 任何 git repo 客户端/服务器软件集成。这样,我们理论上可以与大多数基于 git 的工具/生态系统集成。但是,如果需要特殊/自定义的 git 工具集,我们将使用它进行探索。
[可选] 无缝 GitLab 集成。我们还没有看到 GitLab 提供此功能。 (我们还没有看到具有“禁用读取”功能的受保护分支。)
[可选] 自托管 git 存储库。我们尽可能为我们的关键项目自托管服务,包括 git。但如果这是目前唯一的方法,我们会考虑使用托管服务。
更多详情
我们尚未对各种自托管功能工具提供商声称的任何功能进行实证测试。 But we've performed a tiny bit of research。我们还没有看到完全声称“残疾人阅读隐私”的功能; Gitolite 可以吗?
市场似乎更多地关注“保护”分支以避免数据丢失情况。相反,通过这次讨论,我更感兴趣的是防止指定用户访问(读取)敏感信息。
可以为每个访问“组/类”创建不同的 git 存储库,但这有很多问题,包括但不限于:
- 随着组织规模的扩大,每个私人信息组合都需要理论上无限数量的存储库。
- 当需要单独的 git 存储库以将它们彼此“隔离”以实现组内隐私时,无法将私有信息与“完整组”信息紧密结合。
在一个公共的、更大的 repo 中启用无限的“私有”git 分支似乎是一条更有效的路径。
【问题讨论】:
-
Git 旨在防止做你想做的事。任何尝试添加读取访问控制的系统都将不得不解决很多问题。
-
知道了@torek。如果这是真的,让我们看看谁可以或如何做。或者想出一些其他的解决方法。对于包含财务、人力资源和其他敏感信息的更广泛的公司文档存储库来说,这是一个很大的问题。 Subversion 做得很好,fwiw。
-
Git 托管解决方案具有每个存储库的访问控制。它可能具有每个分支的 push 控制,但由于 git 是一个分布式系统,因此在客户端计算机上没有本地控制来限制该人可以做什么。如果您想分割部分代码或数据,请不要将它们全部存储在一个存储库中。
-
如果文件不是日常开发所需要的,为什么要和需要的文件存储在同一个仓库中?
-
当然,托管系统可以具有访问控制,不允许对某些分支进行读取/可见性访问,并且通过扩展所有只能通过它们获得的提交,但我还没有看到任何这样的系统到位。它将必须是服务器端的,同样,本地的 git 根本没有访问控制。如果你有 repo,你就可以完全访问你所拥有的一切。可以以不同方式回答的问题是您从服务器得到了什么?
标签: git gitlab git-branch acl readonly