MORGADO01/devsecops-cicd-pipeline
GitHub: MORGADO01/devsecops-cicd-pipeline
基于 GitLab CI 的集中式 DevSecOps 流水线模板库,通过版本化模板为组织内所有项目提供标准化的安全门禁与缺陷管理能力。
Stars: 0 | Forks: 0
# CI/CD 安全 Playbook — 可复用 Pipeline 模板
通过 GitLab CI 的 `include` 功能集中提供可复用的 CI/CD 模板仓库,旨在标准化并加速安全门禁(SAST、DAST、SCA、Container Scan)在组织内任何项目中的应用 —— 各个团队无需从零开始重新编写相同的 pipeline 逻辑。
## 🎯 为什么需要集中的模板仓库?
各个项目无需再维护自己的 SAST/DAST/SCA 配置副本(避免了配置不一致和重复维护的问题),而是通过 `include` 从该仓库中**引入版本化的模板**。这保证了:
- **标准化** — 所有项目都使用相同的安全门禁标准,没有例外
- **集中维护** — 在此处修复或更新模板,变更会自动应用到所有引入了该模板的项目中
- **快速上手** — 新项目只需几行配置即可采用完整的安全流水线
## 📋 Job 结构
```
ci-templates/
├── templates/
│ ├── build/ # Templates de build (ex: Maven, Node/pnpm, Composer)
│ ├── docker/ # Build e push de imagem Docker para o registry
│ ├── sec/ # SAST, DAST Baseline, SCA, Container Scan
│ ├── sonar/ # Integração com SonarQube (Quality Gate)
│ ├── dojo/ # Envio automatizado de achados ao DefectDojo (via API)
│ ├── test/ # Testes unitários e lint
│ └── workflow/ # Regras de comportamento da pipeline (quando cada stage roda)
└── example-consumer/
└── .gitlab-ci.yml # Exemplo de como um projeto consome estes templates
```
## 🧩 模板分类
| 文件夹 | 功能 |
|---|---|
| `build/` | 应用程序编译(Maven、pnpm、Composer 等) |
| `docker/` | 构建 Docker 镜像并发布到内部 registry |
| `sec/` | 安全门禁:SAST、DAST Baseline、SCA、Container Scan |
| `sonar/` | 通过 SonarQube 进行静态分析,强制执行 Quality Gate |
| `dojo/` | 通过 API (curl) 将安全发现集中汇总到 DefectDojo |
| `test/` | 单元测试和 lint 检查 |
| `workflow/` | 各 stage 的运行规则(例如:DAST 仅在 `main` 分支运行) — 可由引入项目覆盖 |
## 🔄 项目的使用流程
```
flowchart LR
A[Projeto individual] -->|include remoto| B[ci-templates: workflow]
A -->|include remoto| C[ci-templates: build]
A -->|include remoto| D[ci-templates: sec/sast, sec/sca, sec/dast]
A -->|include remoto| E[ci-templates: sonar]
A -->|include remoto| F[ci-templates: dojo]
D --> G[Resultados centralizados no DefectDojo]
E --> G
```
## ⚙️ 项目如何使用模板
执行 pipeline 的项目通过 `include` 引用模板,指向本仓库及其所需的分支/tag:
```
include:
- project: 'sua-org/ci-templates'
ref: 'main'
file: '/templates/workflow/workflow.yml'
- project: 'sua-org/ci-templates'
ref: 'main'
file: '/templates/build/build-generic.yml'
- project: 'sua-org/ci-templates'
ref: 'main'
file: '/templates/sec/sast.yml'
- project: 'sua-org/ci-templates'
ref: 'main'
file: '/templates/sec/sca.yml'
- project: 'sua-org/ci-templates'
ref: 'main'
file: '/templates/sonar/sonar-scan.yml'
- project: 'sua-org/ci-templates'
ref: 'main'
file: '/templates/dojo/dojo-import.yml'
```
请查看 [`example-consumer/.gitlab-ci.yml`](example-consumer/.gitlab-ci.yml) 中的完整示例。
## 🔑 所需变量(在引入项目中配置)
| 变量 | 描述 | 建议保护级别 |
|---|---|---|
| `SONAR_HOST_URL` | SonarQube 实例的 URL | Visible |
| `SONAR_TOKEN` | SonarQube 的身份验证 Token | **Masked + Protected** |
| `DOJO_HOST` | DefectDojo 实例的 URL | Visible |
| `DOJO_API` | DefectDojo 的 API 访问 Token | **Masked + Protected** |
## 📊 安全门禁(阻断标准)
- **SAST (SonarQube):** 如果 Quality Gate 未通过(引入了高/严重级别的漏洞),则阻断 merge
- **SCA:** 如果依赖项存在 CVSS ≥ 7.0 的 CVE 且没有文档化的豁免记录,则阻断 build
- **DAST Baseline:** 在生产环境部署前,于 staging 环境运行
- **Container Scan:** 在镜像发布到 registry 之前,验证 Docker 镜像是否存在已知的 CVE
## 📄 更多文档
请查看 [`docs/pipeline-flow.md`](docs/pipeline-flow.md) 了解每个 stage 的详细设计逻辑。
标签:AI应用开发, DevSecOps, FTP漏洞扫描, GitLab CI, 上游代理, 安全编排, 模板引擎, 请求拦截