我正在调查使用Git进行公司代码管理的可能性。我在这方面有两个问题:
我们希望每个用户的每个“克隆”或“代码访问”都有大量日志。过去发生过第三方顾问试图访问公司的I.P.的事件,但有活动被记录下来。截至目前,当我克隆一个Git存储库时,没有日志显示任何此类代码的访问权限。
我必须在哪里获取此信息的日志?
不仅如此,如果某个工程师克隆了Git存储库,如果有人试图从中克隆,我们仍然可以获得进一步“克隆”的日志吗?
在同一个Git存储库中,有没有办法控制某些代码部分的访问?
例如,考虑一个名为TOP_DIR
的存储库,其中包含两个子目录TOP_DIR/DIR_GLOBAL
和TOP_DIR/DIR_SECURE
。我希望DIR_SECURE
只对少数团队成员提供读/写访问权限,但对DIR_GLOBAL
几乎每个人都有完全读/写权。
这些方面的任何指示都将受到高度赞赏。
答案 0 :(得分:3)
git本身没有权限管理。
你必须使用包装器。 Common是gitolite,它基于ssh并使用私钥身份验证来验证用户。您可以分别根据每个存储库的密钥(即用户)授予权限。
通过在身份验证后将ssh移交给gitolite后立即修改可执行文件,可以很容易地扩展gitolite(triggers?)以记录所有未经授权的访问尝试。完全没有在gitolite注册的人访问将被sshd / pam记录,因为登录后权限被拒绝。
如上所述,git不进行任何身份验证或授权,因此如果您需要基于目录的访问控制,则必须使用子模块,这些子模块有时会表现得很痒,但它们可以满足您的需求。
答案 1 :(得分:2)
您可以使用Git挂钩在中央服务器上实现日志记录。 Gitolite对用户管理有好处,并确保调用任何钩子。使用gitolite,您可以控制谁有权访问哪些repos,而钩子可以记录用户事件。
对于从另一个用户的回购副本克隆回购的人,您总是会遇到问题。 Git是分散的,所以这不是一个万无一失的解决方案,但如果没有用户允许任何人复制他们的回购,你可以确保每个人都使用中央服务器作为开始。
如果挂钩不足,请查看http://sitaramc.github.com/gitolite/triggers.html Gitolite支持“触发器”,它将为您提供有关您可以记录的内容的更多信息。
答案 2 :(得分:0)
感谢各种投入,这就是我最终做的事情: - (1)在服务器上,我创建了3种类型的帐户。 (a)sudo'rs帐户 (b)admin for repository - 用于控制存储库访问的linux组 (c)使用shell = / usr / bin / git-shell的git用户帐户(因此无法直接登录) - 使用相同的linux组添加它们。
密码邮寄给每个团队成员。每当他们访问系统时,ssl库都会在/etc/log/auth_user.log中记录他们的访问权限。这些日志还不够,但有些地方从哪里开始。
为什么我没有选择gitolite:gitolite的目的是控制存储库的选择部分的访问。此外,该产品未经过积极测试(因为我可以看到许多错误仍然存在),因此,它不会记录访问权限,也不能区分黑白克隆或任何其他API。我正在考虑改变git代码以使其更加冗长。
答案 3 :(得分:0)
您可以使用git-measure获取每个用户的统计信息。