Git 安全性:除了 user.name 和 user.email 之外,还使用 Push Credential Identity 提交
Git Security: Notate Commit with Push Credential Identity in addition to user.name and user.email
我想知道当我们的存储库中有一个提交并且它说它来自 John Smith 时,它确实来自 John Smith。不幸的是,似乎如果我将本地 user.name 和 user.email 设置为我想要的任何值,然后提交它;无论我使用什么凭据将更改推送到存储库,这些值最终都会出现在存储库中。
实际上,我想要的行为是,当 git 从本地存储库推送到远程存储库时,将以某种方式对提交进行标记以指示实际是哪个用户将它们推送到存储库,以及完成此操作的时间戳。
根据我对这个特定问题的阅读,似乎除了简单地添加符号之外的任何事情都可能会产生一些非常有问题的情况(例如,如果我从一个存储库克隆一个存储库,然后 return 它到我的存储库,我可能想记下是什么用户推送了该数据;但我绝对不想替换所有历史记录中的提交者)。因此,我希望记录而不是替换。
我找到了 one post that references server-side hooks on GitLab,但我很好奇是否有人对它的外观有更多的指导,或者这是否可以在 Azure DevOps 或 Github 等托管平台上实现。我愿意接受任何其他可能实现相同目标的建议。理想情况下,我将在 Azure DevOps 存储库中执行此操作;但如果有令人信服的理由,我可以切换平台。
GitHub 和 Azure DevOps 注册推送者和提交者。
在GitHub Enterprise Server that data is available from the Push log.
最重要的是 GitHub 可以跟踪人们的 GPG 密钥或 s/mime 证书以确保提交者是他们所说的人。
然而,由于 Git 的分布式特性,也可以直接从同事的分叉或本地回购或拉取请求中接收提交,据此推送的人可能会推送他们从其他人那里收到的提交。这是 git 世界中的预期行为。
如果您关心提交者的真实性,请让人们使用 GPG 密钥或链接到只有他们有权访问的身份的代码签名证书来签署他们的提交。
对于 Azure DevOps Server,可以创建一个 ISubscriber 服务器插件(一个实现特定接口的 dotnet 程序集)来阻止出于任何原因的提交。对于 Azure DevOps(服务),此类功能不存在。 yiu 可以在这里利用 Axure Pipeline。
对于 GitHub,您可以创建一个 GitHub 操作工作流来阻止拉取请求,以防它包含未签名的提交或提交者与推送者不匹配的提交。
我想知道当我们的存储库中有一个提交并且它说它来自 John Smith 时,它确实来自 John Smith。不幸的是,似乎如果我将本地 user.name 和 user.email 设置为我想要的任何值,然后提交它;无论我使用什么凭据将更改推送到存储库,这些值最终都会出现在存储库中。
实际上,我想要的行为是,当 git 从本地存储库推送到远程存储库时,将以某种方式对提交进行标记以指示实际是哪个用户将它们推送到存储库,以及完成此操作的时间戳。
根据我对这个特定问题的阅读,似乎除了简单地添加符号之外的任何事情都可能会产生一些非常有问题的情况(例如,如果我从一个存储库克隆一个存储库,然后 return 它到我的存储库,我可能想记下是什么用户推送了该数据;但我绝对不想替换所有历史记录中的提交者)。因此,我希望记录而不是替换。
我找到了 one post that references server-side hooks on GitLab,但我很好奇是否有人对它的外观有更多的指导,或者这是否可以在 Azure DevOps 或 Github 等托管平台上实现。我愿意接受任何其他可能实现相同目标的建议。理想情况下,我将在 Azure DevOps 存储库中执行此操作;但如果有令人信服的理由,我可以切换平台。
GitHub 和 Azure DevOps 注册推送者和提交者。
在GitHub Enterprise Server that data is available from the Push log.
最重要的是 GitHub 可以跟踪人们的 GPG 密钥或 s/mime 证书以确保提交者是他们所说的人。
然而,由于 Git 的分布式特性,也可以直接从同事的分叉或本地回购或拉取请求中接收提交,据此推送的人可能会推送他们从其他人那里收到的提交。这是 git 世界中的预期行为。
如果您关心提交者的真实性,请让人们使用 GPG 密钥或链接到只有他们有权访问的身份的代码签名证书来签署他们的提交。
对于 Azure DevOps Server,可以创建一个 ISubscriber 服务器插件(一个实现特定接口的 dotnet 程序集)来阻止出于任何原因的提交。对于 Azure DevOps(服务),此类功能不存在。 yiu 可以在这里利用 Axure Pipeline。
对于 GitHub,您可以创建一个 GitHub 操作工作流来阻止拉取请求,以防它包含未签名的提交或提交者与推送者不匹配的提交。