CI/CD 流水线中的 SAST 与 DAST
在流水线中集成 SonarQube、Semgrep 或 Bandit 进行静态分析,并使用 OWASP ZAP 进行动态扫描。
CI/CD 流水线中的 SAST 与 DAST 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。
什么是应用程序安全测试
应用程序安全测试可在代码进入生产环境之前识别漏洞。两种互补的方法是:SAST(静态测试,不运行代码)和 DAST(动态测试,测试正在运行的应用程序)。二者都可以集成到 CI/CD 流水线中,以实现安全左移。
SAST:静态应用程序安全测试
SAST 会在不执行代码的情况下分析源代码、字节码或二进制文件,以发现安全漏洞。它可以在每次提交时运行,从而快速提供反馈。
优点:及早发现错误、覆盖完整代码、无需运行环境。
缺点:误报率较高、依赖特定语言、无法发现运行时配置问题。
热门 SAST 工具
开源 SAST 工具:
# Semgrep (multi-language, rule-based):
semgrep --config auto ./src
# Bandit (Python):
bandit -r ./src
# ESLint security plugin (JavaScript):
npx eslint --plugin security ./src
# SpotBugs + FindSecBugs (Java):
mvn spotbugs:check将 SAST 集成到 CI/CD
GitHub Actions SAST 步骤示例:
# .github/workflows/security.yml
- name: Run Semgrep
uses: returntocorp/semgrep-action@v1
with:
config: p/owasp-top-ten
auditOn: push
# Fail build if HIGH severity findings presentDAST:动态应用程序安全测试
DAST 从外部测试正在运行的应用程序,模拟攻击者的行为。它可以发现只有在运行时才可见的漏洞:身份验证问题、会话管理缺陷和输入验证错误。
优点:误报较少、不依赖特定语言、可以发现运行时配置问题。
缺点:需要运行环境,可能遗漏某些代码路径。
热门 DAST 工具
用于 CI/CD 的 DAST 工具:
# OWASP ZAP (free, scriptable):
docker run -t owasp/zap2docker-stable zap-baseline.py -t https://staging.app.com
# Nikto:
nikto -h https://staging.app.com
# Nuclei (template-based):
nuclei -u https://staging.app.com -t cves/IAST:交互式应用程序安全测试
IAST 使用代理在运行时为应用程序添加检测机制,在功能测试期间监控代码执行。它结合了 SAST 的准确性与 DAST 的覆盖范围。示例:Contrast Security、Seeker。需要特定语言的代理,并且需要运行测试。
安全左移
安全左移是指将安全测试提前到开发生命周期的早期阶段——理想情况下,应提前到开发者的 IDE 和提交阶段,而不是设置单独的发布前门禁。越早发现问题,修复成本越低。
成本倍数:开发阶段的错误成本为 1 倍;预发布阶段为 10 倍;生产阶段为 100 倍。
处理误报
SAST 工具会产生误报。处理方法包括:
- 对于已确认并非问题的情况,使用
nosec(Bandit)或内联抑制注释 - 根据应用程序上下文调整规则集
- 在代码注释中记录抑制理由
- 定期审查抑制项
CI/CD 安全流水线架构
完整的安全流水线:
- 提交前钩子:机密扫描(gitleaks)、SAST(semgrep)
- PR 检查:SAST 结果、依赖项扫描(Dependabot)
- 预发布环境部署:DAST 扫描(ZAP 基线扫描)
- 生产环境:运行时监控(RASP、WAF)
衡量 AppSec 的有效性
CI/CD 中 AppSec 的关键指标:
- 安全发现项的平均修复时间
- 每 1000 行代码的发现率
- 误报率(影响开发者信任)
- 漏洞逃逸率(在生产环境而非预发布环境中发现的漏洞)
快速检查:SAST 与 DAST
哪种安全测试会在不执行代码的情况下分析源代码,并在每次提交时直接通过 CI 流水线提供反馈?
课程回顾
SAST 以静态方式分析代码(反馈较早,但误报率较高);DAST 以动态方式测试正在运行的应用程序(运行时准确性高,但需要运行环境)。二者都应纳入 CI/CD 流水线。安全左移可以在修复成本最低时发现漏洞。常用工具包括:Semgrep、Bandit(SAST);OWASP ZAP、Nuclei(DAST)。请调整规则集并记录抑制项,以管理误报。
常见问题解答
「CI/CD 流水线中的 SAST 与 DAST」课时是免费的吗?
是的 — 「CI/CD 流水线中的 SAST 与 DAST」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。
「CI/CD 流水线中的 SAST 与 DAST」这节课中我会学到什么?
在流水线中集成 SonarQube、Semgrep 或 Bandit 进行静态分析,并使用 OWASP ZAP 进行动态扫描。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cyber Security Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「CI/CD 流水线中的 SAST 与 DAST」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cyber Security Academy 课中编写并运行代码吗?
能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- CI/CD 流水线中的 SAST 与 DAST
- 软件组成分析(SCA)
- 机密扫描与硬编码凭据
- 安全倡导者与威胁建模