Gitlab 利用Server端Hook来锁定文件不被修改

1、背景

研发gitlab CI/CD时,需要编辑一个整个代码仓库统一的CI/CD流程,用于流程与权限的控制。众所周知,Gitlab的CI/CD流程是通过.gitlab-ci.yml文件配置的。通常,如果用户拉出自己的开发分支,那么该yaml文件也会被用户修改,也就是说用户可以完全不用当前的CI/CD流程而重新自定义自己的流程,越权部署代码,存在极大的安全风险。

2、适用场景

需要利用Gitlab的CI/CD功能,保护.gitlab-ci.yml不被普通用户修改;保护其他CI/CD调用到的相关文件不被用户修改。或推广到保护代码仓库中任意文件。

3、方法论

Gitlab目前并没有直接提供锁定或者保护文件相关的功能,经过充分思考与研究后,采用通过配置服务端钩子(Hook onServer),来检查特定文件是否被修改,如有发生,就拒绝接受用户推到远端的代码以保护文件。

4、开发与实践

  • 代码仓库位置
    可能位置1:/home/git/repositories//.git
    可能位置2:/var/opt/gitlab/git-data/repositories//.git
    注意: 代码仓库名称与路径可能被哈希处理了,例如当前测试的gitlab机器上就是这种情况,需要进入@hashed目录,
sh-4.2$ pwd
/var/opt/gitlab/git-data/repositories
sh-4.2$ ls
+gitaly  @hashed
sh-4.2$ cd \@hashed/
sh-4.2$ tree
`-- d4
    `-- 73
        |-- d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.git
        |   |-- branches
        |   |-- config
        |   |-- custom_hooks
        |   |   `-- pre-receive
        |   |-- description
        |   |-- HEAD
        |   |-- hooks
        |   |   |-- applypatch-msg.sample
        |   |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值