You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:18:03