Bitbucket镜像至Gitlab后启用Go语言SAST(gosec)插件的SOP咨询
Gitlab镜像Bitbucket Go仓库启用gosec SAST标准操作流程
适用场景
针对从Bitbucket镜像同步到Gitlab的Go语言代码仓库,因import路径仍指向Bitbucket导致gosec SAST扫描时出现403报错的问题,可按以下流程操作启用扫描。
操作步骤
步骤1:配置Go模块本地替换规则
无需修改业务代码的import路径,在仓库根目录的go.mod文件末尾添加replace规则,将Bitbucket导入路径指向本地目录,即可让Go工具链优先从本地读取依赖,避免调用Bitbucket API,示例规则:
replace bitbucket.org/你的组织名/你的仓库名 => ./
如有多个子模块依赖,可按需补充对应replace规则。
步骤2:配置CI运行环境变量
进入Gitlab对应仓库的「设置」→「CI/CD」→「变量」页面,添加以下变量调整Go依赖拉取逻辑:
- 新增变量
GOFLAGS,值设为-mod=readonly,强制gosec运行时仅使用本地已存在的依赖文件,不会尝试远程拉取依赖 - 若确实需要拉取Bitbucket依赖,可新增变量
GOPRIVATE,值设为bitbucket.org/*,同时配置NETRC变量值为machine bitbucket.org login 你的Bitbucket用户名 password 你的Bitbucket应用密码,注意该变量需勾选「掩码」选项避免凭证泄露
步骤3:自定义SAST扫描CI配置
在仓库根目录的.gitlab-ci.yml文件中添加以下配置,覆盖默认的gosec扫描逻辑:
include: - template: Security/SAST.gitlab-ci.yml gosec-sast: before_script: - go mod tidy -e # 忽略依赖拉取错误,优先使用本地缓存完成扫描 variables: SAST_GOSEC_EXCLUDED_PATHS: "vendor/*,test/*" # 可按需调整需要排除的扫描路径 GO111MODULE: "on"
步骤4:验证扫描效果
手动触发一次CI流水线,查看gosec-sast任务的运行日志,确认无403报错且安全扫描报告正常生成即可。
注意事项
- 如果仓库开启了Bitbucket到Gitlab的自动定时同步,建议将上述
go.mod修改和.gitlab-ci.yml配置提交到Bitbucket源仓库,避免每次同步后自定义配置被覆盖 - 若不希望修改源仓库内容,可在Gitlab侧配置镜像同步的排除规则,保留CI配置和
go.mod的自定义修改不被同步覆盖
内容的提问来源于stack exchange,提问作者Harshit Gupta
相关产品推荐
相关产品推荐

