如何在Azure DevOps的Git仓库中防止用户身份伪造?
问题:Azure DevOps Git中如何防止身份伪造并满足审计需求?
在Azure DevOps的Git仓库中,很容易伪造其他用户身份,平台默认没有相关防护机制:
- 修改提交者可执行以下命令:
git config --global user.email "foo@bar.baz" git config --global user.name "foo" - 修改作者可执行:
git commit --author="foo <foo@bar.baz>"
Azure DevOps允许直接推送这类伪造后的提交,默认不会验证提交声明的作者是否为实际提交人。虽然推送操作会记录当前执行者,但如果仓库迁移到其他Azure DevOps项目,原有推送信息会丢失——因为迁移是由执行迁移的用户完成推送的。
出于审计需求,需要明确知晓谁修改了哪些代码,请问最佳实现方案是什么?在Azure DevOps Git环境中是否可行?还是需要更换版本控制系统?
可行解决方案(无需更换版本控制系统)
1. 启用提交签名验证
Azure DevOps支持Git提交签名验证,要求所有提交必须使用GPG或SSH签名,且签名密钥必须与用户的Azure DevOps账户关联。这能确保提交的作者/提交者身份经过官方验证,无法随意伪造。
操作路径:项目仓库「设置」→「仓库」→「策略」,开启「要求提交签名」,并关联团队成员的验证密钥。
2. 配置分支保护策略
强制所有代码变更通过Pull Request(PR)提交,禁止直接推送至核心分支:
- 设置PR必须经过至少一位指定审核者批准;
- 开启「要求构建成功」「要求关联工作项」等附加验证规则;
- 即便提交作者被伪造,PR的创建者、审核者、合并者信息都会被完整记录在PR历史中,可追溯实际执行人。
3. 启用组织级审计日志
Azure DevOps提供完整的审计日志功能,可记录所有仓库操作(包括推送、PR创建/合并、分支修改等):
- 在组织设置的「审计」页面开启日志记录,日志会留存所有操作的执行者、时间、操作内容;即便仓库迁移,组织级审计日志也能保留关键操作记录;
- 支持导出日志进行长期归档,满足合规审计要求。
4. 使用官方工具迁移仓库
如果需要迁移仓库,优先使用Azure DevOps官方迁移工具(如Azure Repos迁移工具),而非手动推送。官方工具会尽可能保留原始提交的关联元数据,同时迁移过程的操作也会被审计日志记录,减少关键信息丢失。
内容的提问来源于stack exchange,提问作者realbart
相关产品推荐
相关产品推荐

