Angh31/jenkins-devsecops-pipeline

GitHub: Angh31/jenkins-devsecops-pipeline

基于 Jenkins 的声明式 DevSecOps 流水线示例,在 Node.js 应用上集成 SCA、SAST、容器扫描与 DAST 九个安全阶段的自动化检测与门禁控制。

Stars: 0 | Forks: 0

# 🔐 Jenkins DevSecOps Pipeline 声明式 CI/CD Pipeline,集成了 9 个安全阶段 —— SCA、SAST、Trivy 和 DAST —— 基于 Node.js 的 Todo API,包含用于检测演示的故意设置的安全漏洞。 ## Pipeline 概述 ``` Checkout → Build → SCA → Test → SAST → Docker Build & Deploy → Trivy → Security Gate → DAST (ZAP) ``` | 阶段 | 工具 | 功能 | |---|---|---| | Checkout | Jenkins SCM | 从 GitHub 下载代码 | | Build | Node.js / npm | 安装依赖 | | SCA | npm audit | 检测依赖中的漏洞 | | Test | Jest + Supertest | 执行 3 个 REST API 的自动化测试 | | SAST | Semgrep `p/nodejs-security` | 扫描源代码中的漏洞 | | Docker Build & Deploy | Docker | 构建镜像并在 3001 端口部署容器 | | Trivy | aquasec/trivy | 扫描 Docker 镜像中的漏洞 | | Security Gate | Python3 | 如果超出 CRITICAL/HIGH 阈值则使 Pipeline 失败 | | DAST | OWASP ZAP | 针对已部署应用进行动态分析 | ## Pipeline 图表 ``` ┌──────────┐ ┌───────┐ ┌─────┐ ┌──────┐ ┌────────┐ │ Checkout │→ │ Build │→ │ SCA │→ │ Test │→ │ SAST │ └──────────┘ └───────┘ └─────┘ └──────┘ └────────┘ │ ▼ ┌─────────────────┐ ┌────────┐ ┌───────────────┐ │ Docker Build & │← │ │ │ semgrep- │ │ Deploy │ │ │ │ report.json │ └─────────────────┘ └────────┘ └───────────────┘ │ ▼ ┌────────┐ ┌─────────────────┐ ┌──────────┐ │ Trivy │→ │ Security Gate │→ │ DAST ZAP │ │ Image │ │ CRITICAL: 0 max │ │ │ │ Scan │ │ HIGH: 3 max │ │ │ └────────┘ └─────────────────┘ └──────────┘ │ │ │ ▼ ▼ ▼ trivy-report ✅ PASS / ❌ FAIL zap-report .json .html/.json ``` ## Security Gate — 标准 | 严重性 | 最大阈值 | 超出时的操作 | |---|---|---| | CRITICAL | 0 | ❌ Pipeline 失败 | | HIGH | 3 | ❌ Pipeline 失败 | | MEDIUM / LOW | 无限制 | ⚠️ 仅报告 | ## 技术栈 ![Jenkins](https://img.shields.io/badge/Jenkins-D24939?style=flat&logo=jenkins&logoColor=white) ![Docker](https://img.shields.io/badge/Docker-2496ED?style=flat&logo=docker&logoColor=white) ![Node.js](https://img.shields.io/badge/Node.js-339933?style=flat&logo=nodedotjs&logoColor=white) ![Semgrep](https://img.shields.io/badge/Semgrep-SAST-orange?style=flat) ![Trivy](https://img.shields.io/badge/Trivy-1904DA?style=flat) ![OWASP ZAP](https://img.shields.io/badge/OWASP%20ZAP-000000?style=flat&logo=owasp&logoColor=white) ![Jest](https://img.shields.io/badge/Jest-C21325?style=flat&logo=jest&logoColor=white) ## SAST — 检测到的漏洞 该应用程序包含一个故意用于演示的带有 `eval()` 的 endpoint: ``` // ⚠️ Vulnerabilidad intencional — detectada por Semgrep app.get('/eval', (req, res) => { const result = eval(req.query.code); res.json({ result }); }); ``` Semgrep 检测并在 `semgrep-report.json` 中报告该漏洞,该文件在每次运行时作为 artifact 归档。 ## 项目结构 ``` jenkins-devsecops-pipeline/ ├── src/ │ └── app.js # API REST con vulnerabilidad intencional ├── tests/ │ └── app.test.js # 3 pruebas con Jest + Supertest ├── Dockerfile # Imagen Node.js 18 Alpine ├── Jenkinsfile # Pipeline declarativo (9 stages) └── package.json ``` ## 如何复现 ``` git clone https://github.com/Angh31/jenkins-devsecops-pipeline.git cd jenkins-devsecops-pipeline # 在 Jenkins 中配置 pipeline 指向 Jenkinsfile # 执行 — app 将在以下位置可用: curl http://localhost:3001/todos ``` ## API Endpoints | 方法 | Endpoint | 描述 | |---|---|---| | GET | `/todos` | 列出所有任务 | | POST | `/todos` | 创建新任务 | | DELETE | `/todos/:id` | 删除任务 | | GET | `/eval` | ⚠️ 漏洞 Endpoint —— 仅用于 SAST 演示 | ## 自动化测试 ``` ✓ GET /todos - retorna array vacío al inicio ✓ POST /todos - crea un todo correctamente ✓ POST /todos - falla si no hay title ```
标签:DAST, DevSecOps, Jenkins, MITM代理, SAST, 上游代理, 人体姿态估计, 恶意软件分析, 盲注攻击, 自定义脚本, 请求拦截