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
[](https://www.jenkins.io/)
[](https://www.sonarqube.org/)
[](https://www.zaproxy.org/)
[](https://snyk.io/)
[](https://www.docker.com/)
[](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 — 所有阶段通过**

完整的 Jenkins 控制台日志:[JenkinsConsoleOutput](JenkinsConsoleOutput)
**SonarQube SAST 输出**

**OWASP ZAP DAST 输出**

完整的 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截图, 上游代理, 域名枚举, 容器安全, 请求拦截