如何限制仅可通过Jenkins流水线执行git tag创建操作
可行方案推荐
1. Git仓库服务端权限管控(优先级最高)
该方案从根源上拦截违规操作,不受客户端环境影响:
- 给所有开发人员的Git账号分配只读权限,仅Jenkins专用服务账号拥有代码推送、标签创建的权限
- 若使用GitLab/GitHub/Gitee等托管平台,可直接配置分支/标签保护规则:
- 禁止所有普通账号直接推送目标分支,仅允许Jenkins服务账号推送
- 配置标签保护规则,仅Jenkins服务账号可创建、推送标签
- 配置服务端
pre-receive钩子,校验所有推送请求的身份与操作类型,非Jenkins服务账号发起的标签创建、代码提交操作直接拦截返回
2. Jenkins侧操作限制
2.1 Master层面管控
- 配置Jenkins角色权限,仅授权人员可触发预设的打标签流水线,禁止普通用户在Jenkins节点执行自定义命令、访问脚本控制台
- 安装命令限制类插件,全局禁用未授权的
git相关命令调用,仅允许预设流水线中的git命令执行 - 统一使用声明式流水线编写构建任务,关闭脚本式流水线的使用权限,避免用户自定义插入违规git命令
2.2 Windows Server 2016 Agent节点管控
- 调整Agent节点的运行用户权限:Jenkins Agent运行的普通用户仅保留工作目录读写权限,删除全局git命令执行权限,仅Jenkins流水线调用的专用服务账号可执行git命令
- 配置Windows组策略的软件限制规则,禁止普通用户直接运行
git.exe,仅允许Jenkins Agent工作目录下的进程调用git程序 - 修改Git安装目录下
git.exe的访问控制列表(ACL),仅开放Jenkins服务账号的执行权限,其余用户禁止执行,参考命令:icacls "C:\Program Files\Git\cmd\git.exe" /grant "jenkins_svc:(RX)" /deny "Users:(RX)"
3. 审计兜底方案
- 开启Git服务端操作日志审计,定期扫描所有标签创建、代码提交的发起账号,发现非Jenkins服务账号的操作立刻触发告警
- 开启Jenkins全操作日志审计,记录所有流水线的触发人、执行内容,方便违规操作回溯
内容的提问来源于stack exchange,提问作者Charles Morin
相关产品推荐
相关产品推荐

