Git Logs and Control per user

问题描述 投票:3回答:4

我正在调查使用Git进行公司代码管理的可能性。我在这方面有两个问题:

  1. 我们希望每个用户的每个“克隆”或“代码访问”都有大量日志。过去发生过第三方顾问试图访问公司的I.P.的事件,但有活动被记录下来。截至目前,当我克隆一个Git存储库时,没有日志显示任何此类代码的访问权限。 我必须在哪里获取此信息的日志? 更重要的是,如果某个工程师克隆了Git存储库,如果有人试图从中克隆它们,我们还能获得进一步“克隆”的日志吗?
  2. 在同一个Git存储库中,有没有办法控制代码的某些部分的访问?例如,考虑一个名为TOP_DIR的存储库,它包含两个子目录:TOP_DIR/DIR_GLOBALTOP_DIR/DIR_SECURE。我想在DIR_SECURE上只向少数团队成员提供读/写访问权限,但对DIR_GLOBAL几乎每个人都有完整的读/写权限。

这些方面的任何指针都将受到高度赞赏。

git version-control git-submodules
4个回答
3
投票

git本身没有权限管理。

你必须使用包装器。常见的是gitolite,它基于ssh并使用私钥验证来验证用户。您可以分别根据每个存储库的密钥(即用户)授予权限。

扩展gitolite(triggers?)以记录所有未经授权的访问尝试很容易,通过修改可执行文件,一旦ssh在验证后移交给gitolite,就会调用它。由于在登录时拒绝了许可,sshd / pam会记录未通过gitolite注册的人访问。

如上所述,git不进行任何身份验证或授权,因此如果您需要基于目录的访问控制,则必须使用子模块,这些子模块有时会表现得很痒,但它们可以满足您的需求。


2
投票

您可以使用Git挂钩在中央服务器上实现日志记录。 Gitolite对用户管理有好处,并确保调用任何钩子。使用gitolite,您可以控制谁有权访问哪些repos,而钩子可以记录用户事件。

对于从另一个用户的回购副本克隆回购的人,您总是会遇到问题。分散,所以这不是一个万无一失的解决方案,但如果没有用户允许任何人复制他们的回购,你可以确保每个人都使用中央服务器一个开始。

如果钩子不够,请查看http://sitaramc.github.com/gitolite/triggers.html Gitolite确实支持“触发器”,它将为您提供有关您可以记录的内容的更多信息。


0
投票

感谢各种输入,这就是我最终做的事情: - (1)在服务器上,我创建了3种类型的帐户。 (a)sudo'ers帐户(b)admin for repository - linux group控制存储库访问(c)git用户帐户shell = / usr / bin / git-shell(因此无法直接登录) - 添加它们与相同的Linux组。

密码邮寄给每个团队成员。每当他们访问系统时,ssl库都会在/etc/log/auth_user.log中记录他们的访问权限。这些日志还不够,但有些地方从哪里开始。

为什么我没有选择gitolite:gitolite的目的是控制存储库的选择部分的访问。此外,该产品未经过积极测试(因为我可以看到许多错误仍然存​​在),因此,它不会记录访问权限,也不能区分黑白克隆或任何其他API。我正在考虑改变git代码以使其更加冗长。


0
投票

您可以使用git-measure来获取每个用户的统计信息。

© www.soinside.com 2019 - 2024. All rights reserved.