流水线安全扫描是什么
把安全扫描挂到流水线上:SAST 扫源码缺陷、SCA 查依赖漏洞、Secret 检测凭据泄漏、Container 扫镜像、IaC 查基础设施配置、DAST 做动态探测。结果进统一报告,按严重级接入门禁,尽量在合并前拦截,而不是等上线后被动救火。首次接入要允许观察期,先看数据再收紧。
基本信息
| 扫描家族 | SAST、DAST、SCA、Secret、Container、IaC 六类 |
|---|---|
| 接入方式 | GitLab 安全模板、GitHub code scanning、独立开源工具 |
| 输出格式 | JUnit、SARIF 等标准格式进报告与平台面板 |
| 门禁策略 | 高危阻断,中低风险先观察,基线加增量 |
| 数据更新 | 扫描规则库保持更新,否则漏报新漏洞 |
典型使用场景
- 合并前扫描:新增代码与依赖的问题在合并前拦截。
- 镜像入库前:构建产物扫描通过才允许推送仓库。
- 密钥防泄漏:提交与构建阶段双重检测。
- IaC 检查:基础设施清单在应用前先过配置检查。
- 定期深扫:全量深度扫描放定时流水线跑。
- 合规留痕:扫描报告作为发版材料归档。
GitLab 模板引用示例
GitLab 模板引用示例
include:
- template: Security/Secret-Detection.gitlab-ci.yml
- template: Security/SAST.gitlab-ci.yml扫描类型对照
| 类型 | 检查对象 | 典型工具 |
|---|---|---|
| SAST | 源码漏洞模式 | Semgrep、CodeQL |
| SCA | 依赖已知漏洞 | Dependabot、Trivy |
| Secret | 凭据泄漏 | gitleaks、Secret Detection |
| Container | 镜像漏洞与配置 | Trivy、Grype |
| IaC | 基础设施配置缺陷 | Checkov、kics |
首次接入会有大量存量告警:先跑观察模式统计,再按严重级逐步收紧门禁。
扫描器有误报:先统计误报率再决定阻断范围,避免团队因为噪声绕过流程。
扫描要左移:合并前扫描的修复成本远低于发布后,越早拦截收益越大。
依赖许可证检查也常挂在 SCA 环节:许可冲突与漏洞同样值得在流水线上暴露。
检测到密钥泄漏先轮换再清理历史:凭据进过提交记录后,改代码不够,密钥本身必须更换。