0Pricing
Cyber Security Academy · 课时

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 present

DAST:动态应用程序安全测试

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 安全流水线架构

完整的安全流水线:

  1. 提交前钩子:机密扫描(gitleaks)、SAST(semgrep)
  2. PR 检查:SAST 结果、依赖项扫描(Dependabot)
  3. 预发布环境部署:DAST 扫描(ZAP 基线扫描)
  4. 生产环境:运行时监控(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 反馈 — 无需本地设置。

此课程中的所有课时

  1. CI/CD 流水线中的 SAST 与 DAST
  2. 软件组成分析(SCA)
  3. 机密扫描与硬编码凭据
  4. 安全倡导者与威胁建模
← 返回 Cyber Security Academy