Catheren/End-to-end-Devsecops-Pipeline

GitHub: Catheren/End-to-end-Devsecops-Pipeline

基于 Jenkins 的端到端 DevSecOps 流水线项目,将 SAST、DAST、容器扫描和 SCA 集成到一条自动化 CI/CD 工作流中。

Stars: 0 | Forks: 0

# 端到端 DevSecOps Pipeline [![Jenkins](https://img.shields.io/badge/Jenkins-CI%2FCD-D24939?logo=jenkins&logoColor=white)](https://www.jenkins.io/) [![SonarQube](https://img.shields.io/badge/SonarQube-SAST-4E9BCD?logo=sonarqube&logoColor=white)](https://www.sonarqube.org/) [![OWASP ZAP](https://img.shields.io/badge/OWASP_ZAP-DAST-00549E)](https://www.zaproxy.org/) [![Snyk](https://img.shields.io/badge/Snyk-SCA_%26_Container-4C4A73?logo=snyk&logoColor=white)](https://snyk.io/) [![Docker](https://img.shields.io/badge/Docker-Container-2496ED?logo=docker&logoColor=white)](https://www.docker.com/) [![AWS EC2](https://img.shields.io/badge/AWS-EC2-FF9900?logo=amazon-aws&logoColor=white)](https://aws.amazon.com/ec2/) 一个功能完备的端到端 DevSecOps pipeline,基于 Jenkins 构建,将 SAST、DAST、容器扫描和软件组成分析 (SCA) 集成到一个自动化的 CI/CD 工作流中。 该 pipeline 针对一个故意存在漏洞的 Java Web 应用 **EasyBuggy** 进行了测试。它被部署在 AWS EC2 实例上,为动态安全测试提供了一个真实的目标。 ## 演示内容 | 技能 | 实现方式 | |---|---| | CI/CD pipeline 编排 | 包含 5 个顺序安全阶段的 Jenkins pipeline | | SAST — 静态分析 | SonarQube / SonarCloud 扫描已编译的 Java 代码 | | DAST — 动态分析 | OWASP ZAP 扫描 AWS EC2 上的运行中应用 | | 容器安全 | Snyk 对 Docker 镜像进行容器扫描以发现已知 CVE | | SCA — 依赖分析 | Snyk Maven 集成扫描第三方库 | | 基础设施 | AWS EC2 作为 DAST 的实时测试目标 | | 容器化 | Dockerfile 构建及推送到 Docker Hub registry | ## Pipeline 阶段 ``` Code commit │ ▼ ┌─────────────────────┐ │ 1. SAST │ SonarQube — static code analysis │ SonarQube │ Identifies bugs, code smells, security hotspots └──────────┬──────────┘ │ ┌──────▼──────┐ │ 2. Build │ Maven compile → Docker image → Docker Hub push └──────┬──────┘ │ ┌──────▼──────────────┐ │ 3. Container scan │ Snyk scans Docker image for CVEs └──────┬──────────────┘ │ ┌──────▼──────────────┐ │ 4. SCA │ Snyk Maven — scans pom.xml dependencies └──────┬──────────────┘ │ ┌──────▼──────────────┐ │ 5. DAST │ OWASP ZAP scans live app on AWS EC2 └─────────────────────┘ ``` ### 阶段详情 **阶段 1 — SAST:SonarQube 分析** Maven 编译项目并将结果发送至 SonarCloud。在进行任何构建或部署之前,识别静态代码中的安全热点、bug 和代码质量问题。 **阶段 2 — 构建** 根据 Dockerfile 构建 Docker 镜像并将其推送到 Docker Hub。这是所有后续阶段操作的基础 artifact。 **阶段 3 — 容器扫描** Snyk 根据其漏洞数据库扫描构建好的 Docker 镜像,找出基础镜像和已安装软件包中的已知 CVE。 **阶段 4 — SCA:依赖扫描** Snyk Maven 集成扫描 `pom.xml` 以发现第三方依赖项中的漏洞 — 即应用运行前的供应链风险。 **阶段 5 — DAST:OWASP ZAP** OWASP ZAP 在命令行模式下运行,针对部署在 AWS EC2 实例上的 EasyBuggy 应用进行测试。动态测试能够发现静态分析遗漏的运行时漏洞 — XSS、注入、不安全的 header、开放重定向等。 ## 结果 **Jenkins pipeline — 所有阶段通过** ![Pipeline 概览](https://raw.githubusercontent.com/Catheren/End-to-end-Devsecops-Pipeline/main/docs/pipeline_overview.png) 完整的 Jenkins 控制台日志:[JenkinsConsoleOutput](JenkinsConsoleOutput) **SonarQube SAST 输出** ![SonarQube 输出](https://raw.githubusercontent.com/Catheren/End-to-end-Devsecops-Pipeline/main/docs/sonar_results.png) **OWASP ZAP DAST 输出** ![ZAP 输出](https://raw.githubusercontent.com/Catheren/End-to-end-Devsecops-Pipeline/main/docs/zap_results.png) 完整的 ZAP 报告:[ZAPOutput.html](ZAPOutput.html) ## 关于测试目标 **EasyBuggy** 是一个故意存在漏洞的 Java Web 应用,在此用作真实的 DAST 目标。它被部署在 AWS EC2 实例上,以便 OWASP ZAP 可以扫描实时运行的应用程序,而不是模拟环境。 EasyBuggy 故意包含 SQL 注入、XSS、CSRF、开放重定向、会话固定以及大量其他漏洞 — 这使其成为验证 DAST 阶段是否真能发现实际问题的理想目标。 ## 仓库结构 ``` . ├── Jenkinsfile # Pipeline definition — all 5 stages ├── Dockerfile # Container image build ├── pom.xml # Maven build + Snyk SCA target ├── src/main/ # EasyBuggy application source ├── setup-guide.md # Jenkins, SonarQube, Snyk, ZAP setup steps ├── JenkinsConsoleOutput # Full pipeline run output └── ZAPOutput.html # OWASP ZAP DAST report ``` ## 前置条件 - 带有 Docker Pipeline 插件的 Jenkins - Maven 3.8.7 - Docker + Docker Hub 账号 - SonarQube / SonarCloud 账号 - Snyk CLI + Snyk 账号 - OWASP ZAP - AWS EC2 实例(用于 DAST 目标) ## 设置 请参阅 [setup-guide.md](setup-guide.md) 获取有关 Jenkins credentials、SonarQube 服务器、Snyk 集成和 ZAP 的逐步配置说明。 **所需的 Jenkins credentials:** | Credential ID | 用途 | |---|---| | `SONAR_TOKEN` | SonarQube / SonarCloud 身份验证 | | `dockerlogin` | Docker Hub registry 登录 | | `SNYK_TOKEN` | Snyk CLI 身份验证 |
标签:CI/CD流水线, DAST动态分析, DevSecOps, JS文件枚举, SAST静态分析, SCA依赖分析, Web截图, 上游代理, 域名枚举, 容器安全, 请求拦截