用一套扫描替换 Semgrep、Trivy 和 Gitleaks 脚本

简介: 合并请求绿了,发版却被密钥或依赖漏洞拦下——多半是流水线里 Semgrep、Trivy、Gitleaks 各跑各的:三份日志、三种退出码、没有统一 Finding,误报也没法按同一指纹抑制。

合并请求绿了,发版却被密钥或依赖漏洞拦下——多半是流水线里 Semgrep、Trivy、Gitleaks 各跑各的:三份日志、三种退出码、没有统一 Finding,误报也没法按同一指纹抑制。

结论: 把代码安全(SAST,静态应用安全测试)、密钥扫描、依赖/镜像漏洞(SCA,软件成分分析)收进同一检查任务,归一成同一套 Finding,再由策略给出 PASSED / FAILED / SKIPPED。社区版 GPL-3.0 可自由使用、修改和分发(以仓库 LICENSE 为准)。这套路径可替代「流水线里一串独立扫描脚本」;不能替代全站 DAST、主机入侵检测或资产盘点平台。

采购上「商业 SAST / GitLab Ultimate / Snyk 怎么选」见文末参考:选型对照。下面讲替换拼凑脚本 + Semgrep 迁出。

1. 你现在卡在哪

现象 常见原因
PR 只拦了 SAST,主干才扫镜像 三条 Job 分期接入,没有统一门禁策略
同一问题在 Semgrep 日志和 Trivy 报告里各出现一次 没有跨引擎指纹与处置入口
CI 退出码「1」分不清是超门禁还是引擎挂了 脚本把所有非零都当失败
换规则包要改三处 YAML 规则版本没进同一任务模型
Finding 全空却 PASSED stub 引擎或漏洞库空(见翻车表)

最短路径:装引擎 → doctor 非 stub → 小仓 sast+secret → 控制台能看到 Finding 与门禁 → 并行一周再删独立 Job。

2. 能力怎么对应(术语一次说清)

能力 白话 默认引擎 典型目标
sast 静态看代码里的危险模式(注入、XSS、不安全反序列化等) OpenGrep 源码 / Git 仓库
secret 找硬编码 AK/SK、Token、私钥、连接串 Gitleaks 源码 / Git(可加深历史)
sca 看依赖、制品、镜像里的已知 CVE 与许可证相关问题 Trivy 目录依赖、制品、镜像

质量类(异味、复杂度等)可另开,默认不计入安全门禁;具体引擎以控制台/手册为准,不要把 SonarQube Scanner 当成默认安全内核。

目标类型主路径:上传包、Git 仓库、制品 URL、容器镜像;CLI 还可扫本机目录。控制台不以扫服务器任意路径为主。

3. 从三条脚本到一个门禁

3.1 替换前(示意)

# 问题:三份日志、三种退出码语义、结果无法统一治理
semgrep:
  script: [semgrep ci --config auto]
trivy-fs:
  script: [trivy fs --exit-code 1 .]
gitleaks:
  script: [gitleaks detect --source . --exit-code 1]

3.2 替换后:同一 Job

命令形态以当前发行包 angus-security --help 为准;下面是可复制示意:

export ANGUS_SECURITY_URL="https://security.example.com"   # 以控制台接入为准
export ANGUS_SECURITY_TOKEN="***"                          # 只放 CI Secret,勿写入仓库

# 本机/CI 工作区(DIRECTORY);或改 GIT_REPO / ARTIFACT / IMAGE
angus-security scan run \
  --target-type DIRECTORY \
  --path . \
  --capabilities sast,secret,sca \
  --fail-on high

退出码(以当前 CLI 为准;与产品文档约定一致时):

码 含义 CI 怎么处理
0 通过门禁 继续
1 扫描成功,但 Finding 超过策略 阻断合并/发布,去修或抑制
2 执行错误(引擎/网络等) 告警平台,勿当业务漏洞
3 配置或鉴权错误 修 Token / 参数,勿当业务漏洞

门禁还有 SKIPPED(例如策略未覆盖该能力)——跳过 ≠ 通过。

3.3 GitLab 最小一步(平台细节内链)

# .gitlab-ci.yml(示意)
security-scan:
  stage: security
  script:
    - angus-security tools doctor || true
    - angus-security scan run --target-type GIT_REPO
        --repo "$CI_REPOSITORY_URL"
        --ref "$CI_COMMIT_SHA"
        --capabilities sast,secret
        --fail-on high
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"

分层建议:PR 用 sast+secret + 较高阈值;夜间/发版再加 sca(制品或镜像)。GitHub Actions / Jenkins 差异与完整分层见文末参考:CI 集成清单。

4. 从 Semgrep 迁出:规则与门禁对照

OpenGrep 面向与 Semgrep 同类的规则匹配场景;迁出按「规则包 → 任务能力 → 门禁」三步,而不是逐条改写全部规则。

Semgrep 侧习惯 迁到统一任务时怎么做
semgrep ci --config auto / 自建 ruleset 任务勾选 sast;规则包版本绑在项目或任务上(以控制台为准)
PR 只扫变更文件 用较浅扫描级别(如 QUICK);完整库放夜间
--severity-threshold / 自写 exit 改用平台 --fail-on / 策略阈值,统一 PASSED/FAILED
SARIF 上传 GitHub 任务完成后从报告或 Finding 导出 SARIF(见文末参考:报告怎么出)
密钥另跑 Gitleaks Job 同一任务加 secret,不要再挂第二条脚本

4.1 并行迁出清单(建议一周)

  1. 新 Job 与旧 Semgrep Job 并行,先不删旧 stage。
  2. 同一小仓各跑一次:对比高危/阻断级数量级是否同量级(不要求条数逐条相等)。
  3. 打开 secret,确认密钥类不再依赖独立 Gitleaks Job。
  4. 抽 3~5 条高危:确认控制台有指纹,可走抑制(TTL 见存量抑制文)。
  5. 确认退出码 1/2/3 在 CI 通知里已分开(别再「非零=漏洞」)。
  6. 再删 semgrep / trivy-* / gitleaks 独立 stage;发版门禁加上 sca 前先做金丝雀镜像或制品。

规则细节与语言覆盖以当前规则包为准,不要宣称「覆盖所有语言/框架」。若依赖仅存在于 Semgrep 生态的第三方规则包,先核验 OpenGrep 规则包是否覆盖,再迁。

5. 控制台怎么确认「收成一套了」

纯文字路径(无截图):

  1. 打开对应检查任务:状态已完成;能力列同时含你勾选的 sast/secret/sca。
  2. Finding 列表能按引擎/能力筛选,而不是去三份外部日志里翻。
  3. 任务摘要上的门禁结果为 PASSED/FAILED/SKIPPED 之一,且与 CI 退出码语义一致(1=超门禁,不是 2/3)。
  4. 需要给领导/审计时,从报告出快照,不要截 Finding 首页——见文末参考:报告怎么出。

6. 翻车与边界

现象 常见原因 处理
Finding 全空且门禁 PASSED stub 引擎或库空 doctor 确认 OpenGrep/Gitleaks/Trivy 非 stub;SCA 假绿查漏洞库(见文末参考:内网漏洞库 / doctor)
仍出现三条 Job 只加了新 Job、旧 Job 未删 并行验收后删独立 stage
退出码 2 被当成漏洞 引擎未装 / Token 失效 区分门禁失败与执行失败
密钥刷屏 测试夹具、文档示例触发 抑制见文末参考:Finding 抑制
以为入库扫过就等于治理完成 把 Repo 轻量门禁当成 Security Repo 执法、Security 做深度 Finding——见文末参考:Repo 联动

明确不做: 全站 DAST、RASP/主机入侵检测、Qualys 类资产盘点、扫描即过等保、AI 自动开修复 PR。

FAQ

这能完全替代 Semgrep OSS 吗?

在「CI 里跑规则匹配 + 统一门禁」主路径上,可以替代多脚本拼凑。第三方规则包缺口先核验再迁。

社区版够不够跑通?

社区版 GPL-3.0 可自由使用;install-engines + 第一次扫描即可验证替代路径。席位、配额、商业能力以控制台/当前文档为准,本文不列报价。

和「只把 Sonar 当安全扫描」有什么差别?

质量分析与安全模式匹配不是一回事。安全主路径是 OpenGrep / Gitleaks / Trivy;质量门禁另开,默认不计入安全门禁结论。

多脚本合成后,旧 SARIF 还要吗?

治理以平台 Finding 为准;需要给 IDE/工单时再导出 SARIF。见文末参考:报告怎么出。

和选型文什么关系?

本文回答「三条脚本怎么收成一门禁」。云端 SCA / 商业 SAST / GitLab 套件怎么挑见文末参考:选型对照。

小结

  • 三条独立脚本 → 一个任务、一套 Finding、一门禁。
  • 先 doctor,再 sast+secret,并行一周再删旧 Job;发版再加 sca。
  • 退出码要分清「超门禁」和「没跑起来」。
  • 不替代 DAST/主机安全;Repo 轻量门禁 ≠ Security 深度治理。

参考文章

相关文章
|
1天前
|
弹性计算 负载均衡 安全
阿里云国际站服务代理商:SLB批量采购怎么做预算?按地域还是业务系统拆分
阿里云国际站SLB批量采购预算需兼顾地域(定价/部署)与业务系统(成本归属)双维度,避免重复计费;ALB/NLB/CLB计费模型不同,不可混用单价;应按实际资源清单(产品类型、网络类型、环境、周期)精细化报价与对账。
45 27
|
18小时前
|
存储 缓存 资源调度
云上免费 npm 私有源怎么起步:从发包到公开分发
不想自建服务器时,用 AngusRepo 云服务托管私有 npm:统一源安装、HOSTED 发布,对外用公开浏览页复制匿名安装命令。
|
18小时前
|
缓存 安全 数据安全/隐私保护
云上免费 Docker 镜像仓怎么起步:推送、拉取与公开浏览
用 AngusRepo 云服务托管私有镜像:login 后推送到 HOSTED,按需拉取;对外用公开浏览页匿名 pull。
|
1天前
|
SQL 存储 分布式计算
Alluxio集群搭建并整合MapReduce/Hive/Spark
Alluxio集群搭建并整合MapReduce/Hive/Spark
39 3
|
23小时前
|
人工智能 前端开发 开发者
业务岗位用 Agent,先把交付和复核说清楚
本文探讨业务岗位落地AI Agent的关键:不追求“能做多少步”,而聚焦可复核、可追溯、可问责的交付。强调以业务人员为主导定义规则与验收标准,确保每条判断有原文依据、权限边界清晰、人工操作留痕,让Agent成为受控的协作者,而非黑箱执行者。
业务岗位用 Agent,先把交付和复核说清楚
|
20小时前
|
存储 自然语言处理 监控
从概念到落地:企业应用数据中台的顶层设计与实施路径
本文以阿里云瓴羊Dataphin为实践样本,直击数据中台落地痛点:超60%项目未达预期,主因顶层设计脱离业务与治理实操。围绕“中台与数仓边界”“治理如何嵌入研发流程”等核心问题,详解“统接入、统建模、统开发、统服务”四阶段实施路径,强调“治理即研发”“场景驱动、小步快跑”,助力企业从蓝图走向真实业务价值。
|
20小时前
|
人工智能 运维 IDE
Qoder CN 保姆级使用手册:平台核心功能盘点、Credits 消耗规则、开通配置与项目开发教程
在软件开发流程持续提效的需求下,Qoder CN作为面向研发场景的AI编程智能体服务平台,覆盖从需求拆解、代码编写、单元测试、项目文档生成到运维脚本开发的完整研发链路。平台并非简单的代码补全工具,而是基于Agent架构打造的全流程研发工作台,支持IDE插件、原生CLI终端工具、云端Agent托管等多种形态,个人开发者和企业研发团队都可以接入使用。本文将全面介绍平台核心功能、席位订阅与Credits积分计费体系,梳理完整上手步骤,同时提供CLI命令实操示例,方便开发者快速完成任务调用、资源用量统计,管控研发算力成本。详情👉访问阿里云 Qoder CN 服务平台了解
55 0
|
20小时前
|
人工智能 缓存 JSON
LangChain把生产Trace送回评测集:团队怎么复制这条闭环
本文提出AI客服发布的“四层回归”质量保障体系:知识取对、回答守据、工具合规、线上回流。针对退货等高风险场景,强调用结构化Trace和可验证断言替代传统准确率评估,确保每条回答都有版本化证据、每个工具调用都受业务规则约束,真正守住赔付红线。
|
20小时前
|
存储 弹性计算 人工智能
企业采购必读:最新阿里云优惠活动汇总,云产品贵不贵、优惠力度实测
综合来看,不能简单判定阿里云产品贵或者不贵,定价取决于产品规格、付费模式,企业只要完成企业认证,积极参与2026 阿里云轻量应用服务器、阿里云ECS云服务器、阿里云GPU云服务器、阿里云大模型服务平台 企业优惠活动,合理搭配企业新购套餐、长合约续费折扣、节省计划、满返代金券,能够显著降低云上整体成本。优惠力度对于中小微企业和中大型企业都有对应的方案,规模越大,合约周期越长,整体折扣空间越高。企业运维团队定期盘点资源到期时间、账单消耗,借助CLI工具批量管理实例、查询价格,做好成本规划,就可以在保障业务稳定运行的前提下,最大化享受企业优惠,控制云上项目预算。
21 0
|
20小时前
|
人工智能 缓存 监控
阿里云 Token Plan 个人版详解:套餐档位、Credits 计费逻辑,Qwen3.8 专属优惠与 CLI 实操教程
Token Plan个人版以统一Credits点数包月订阅模式,解决传统按量计费账单不可控、旗舰模型调用成本高昂的痛点。一套订阅覆盖文本、图像、视频、检索多模态能力,三档梯度套餐,适配单人开发者从原型验证、业余调试到重度开发全场景。搭配Qwen3.8‑Max‑Preview限时日夜折扣,普通个人开发者也可以低成本使用2.4T参数旗舰大模型。
28 0