3

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

  1. 我们希望每个用户的每个“克隆”或“代码访问”都有大量日志。过去曾发生过第 3 方顾问试图访问公司 IP 的事件,但这些活动被记录下来。到目前为止,当我克隆一个 Git 存储库时,没有日志显示任何此类代码的访问权限。

    • 我必须从哪里获取此信息的日志?

    • 不仅如此,如果某个工程师克隆了 Git 存储库,如果有人试图从中克隆,我们还能获得进一步“克隆”的日志吗?

  2. 在同一个 Git 存储库中,有没有办法控制对某些代码部分的访问?例如,考虑一个以TOP_DIR两个子目录命名的存储库,TOP_DIR/DIR_GLOBAL并且TOP_DIR/DIR_SECURE. 我只想为DIR_SECURE少数团队成员提供读/写访问权限,但对DIR_GLOBAL.

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

4

4 回答 4

3

git 本身完全没有权限管理。

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

通过修改在身份验证后 ssh 移交给 gitolite 时立即调用的可执行文件,可以很容易地扩展 gitolite(触发器? )以记录所有未经授权的访问尝试。sshd/pam 会记录根本没有在 gitolite 注册的人的访问,因为登录时权限被拒绝。

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

于 2012-11-27T14:35:49.907 回答
2

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

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

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

于 2012-11-27T15:04:44.463 回答
0

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

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

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

于 2012-12-18T05:49:32.793 回答
0

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

于 2019-02-26T20:42:15.027 回答