danielblakeman10/DevSecOps-Security-Scanning-Pipeline

GitHub: danielblakeman10/DevSecOps-Security-Scanning-Pipeline

集成 SAST、DAST、SCA、容器扫描、Secret 检测和 IaC 审计的企业级 DevSecOps 自动化安全扫描流水线,在 CI/CD 中实现安全左移。

Stars: 0 | Forks: 0

# DevSecOps 安全扫描流水线

Status DevSecOps Scanning OWASP License

## 🛡️ 企业级 DevSecOps 安全层 一个全面的自动化安全扫描流水线,将 SAST、DAST、SCA、容器扫描、IaC 审计和 secret 检测集成到 CI/CD 中——在漏洞进入生产环境之前将其拦截。 ## 🚀 功能 | 功能 | 描述 | |---------|-------------| | **SAST** | 静态分析:Bandit (Python)、Semgrep (多语言)、ESLint (JS) | | **SCA** | 软件组成分析:依赖项漏洞扫描 | | **容器扫描** | Trivy 扫描 Docker 镜像以发现 CVE 和配置错误 | | **Secret 检测** | Gitleaks + TruffleHog 查找代码中泄露的凭证 | | **IaC 扫描** | Checkov + tfsec 审计 Terraform 的安全配置错误 | | **DAST** | OWASP ZAP 对运行中的服务进行自动化漏洞测试 | | **策略执行** | 安全门在发现严重/高危漏洞时使流水线失败 | | **SARIF 报告** | 与 GitHub Security 标签页集成的标准化结果 | ## 🏗 架构 ``` Source Code (PR/Push) │ ┌───────────┼───────────┐ ▼ ▼ ▼ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ Secret │ │ SAST │ │ SCA │ │ Scan │ │ │ │ │ │(Gitleaks│ │(Semgrep │ │(Dependab │ │Truffle) │ │ Bandit) │ │ Renovate)│ └────┬────┘ └────┬────┘ └────┬────┘ │ │ │ └───────────┼───────────┘ ▼ ┌────────────────┐ │ Build & Test │ │ (CI Pipeline) │ └────────┬───────┘ ▼ ┌────────────────┐ │ Container Scan │ │ (Trivy) │ └────────┬───────┘ ▼ ┌────────────────┐ │ IaC Scan │ │ (Checkov/tfsec)│ └────────┬───────┘ ▼ ┌────────────────┐ │ DAST │ │ (OWASP ZAP) │ └────────┬───────┘ ▼ ┌────────────────┐ │ SARIF Report │ │ Security Gate │ │ (Pass/Fail) │ └────────────────┘ ``` ## 📁 项目结构 ``` ├── .github/ │ └── workflows/ │ ├── security-scan.yml # Full security pipeline │ ├── sast.yml # SAST-only workflow │ ├── container-scan.yml # Image scanning │ └── sast-dependency-scan.yml # SAST + SCA combo ├── security-tools/ │ ├── semgrep-rules/ │ │ ├── custom.yaml # Custom Semgrep rules │ │ └── python.yaml # Python-specific rules │ ├── trivy-config/ │ │ ├── trivy.yaml # Trivy configuration │ │ └── ignore-cves.yaml # Accepted risk exceptions │ ├── checkov/ │ │ ├── policies/ │ │ │ └── custom_checks.py # Custom Checkov policies │ │ └── checkov.yaml # Checkov configuration │ └── zap/ │ ├── zap-policy.yaml # OWASP scan policy │ └── zap-api-scan.yml # ZAP API scanning config ├── reports/ │ ├── sarif/ │ │ └── security-results.sarif # Aggregated SARIF output │ └── templates/ │ └── security-summary.md # Security report template ├── scripts/ │ ├── run-scan.sh # Local scanning script │ ├── parse-sarif.sh # SARIF to markdown conversion │ └── cleanup.sh # Artifact cleanup ├── policies/ │ ├── security-gates.yml # Gate thresholds (max criticals, etc.) │ ├── acceptable-risks.yaml # Accepted exception list │ └── remediation-playbooks/ # Remediation guidance per tool │ ├── bandit/ │ ├── semgrep/ │ ├── trivy/ │ └── checkov/ ├── README.md ├── .gitignore └── LICENSE ``` ## 🛠 技术栈 | 技术 | 用途 | |-----------|---------| | **Semgrep** | 多语言 SAST (Python、JS、Go、Java、YAML 等) | | **Bandit** | 专用于 Python 的 SAST | | **ESLint** | JavaScript/TypeScript linting | | **Trivy** | 容器和文件系统漏洞扫描 | | **Gitleaks** | 代码历史和 PR 中的 secret 检测 | | **TruffleHog** | 带有熵检测的深度 secret 扫描 | | **Checkov** | Terraform/IaC 安全审计 | | **tfsec** | Terraform 安全扫描 | | **OWASP ZAP** | DAST — 自动化 Web 应用程序测试 | | **Dependabot** | 依赖项漏洞扫描 | | **Renovate** | 自动化依赖项更新 | ## 🚦 快速开始 ### 本地扫描 ``` # 在本地运行所有扫描 ./scripts/run-scan.sh # 仅 SAST semgrep --config=preset --json --output=semgrep-results.sarif . # Python SAST bandit -r src/ -f json -o bandit-results.json # Container 扫描 trivy image --severity CRITICAL,HIGH myapp:latest # Secret 检测 gitleaks detect --source=. --report-format sarif --report-path gitleaks.sarif # IaC 扫描 checkov -d . --output sarif --output-file-path checkov-results.sarif ``` ### GitHub Actions 流水线 ``` # .github/workflows/security-scan.yml name: Security Scan on: push: branches: [main, develop] pull_request: branches: [main] jobs: scan: runs-on: ubuntu-latest permissions: security-events: write steps: - uses: actions/checkout@v4 - name: SAST Scan uses: semgrep/semgrep-action@v1 with: config: >- p/default p/semgrep-secret-detection continue-on-error: true - name: Upload SARIF uses: github/codeql-action/upload-sarif@v3 with: sarif_file: semgrep-results.sarif ``` ### 安全门阈值 | 检查项 | 最大严重 | 最大高危 | 最大中危 | |-------|-------------|----------|------------| | SAST (Semgrep/Bandit) | 0 | 5 | 20 | | 容器 (Trivy) | 0 | 3 | 10 | | Secret (Gitleaks) | 0 | 0 | 0 | | IaC (Checkov) | 0 | 0 | 50 | | DAST (ZAP) | 0 | 5 | 20 | ## 🔐 集成点 | 阶段 | 工具 | 动作 | |-------|-------|--------| | **Pre-commit** | GitHooks + pre-commit | 拦截包含 secret 的提交 | | **PR Open** | Semgrep + Gitleaks | 在 PR 上评论发现的问题 | | **PR Review** | Dependabot + ESLint | 建议依赖项更新 | | **Build** | Trivy + tfsec | 遇到严重问题则失败 | | **Deploy** | OWASP ZAP | 针对预发环境进行 DAST | | **Post-deploy** | Security Hub | 持续合规 | ## 📊 安全门逻辑 ``` IF (critical_vulns > 0) → FAIL pipeline IF (high_vulns > threshold) → FAIL pipeline IF (secrets_found > 0) → FAIL pipeline + alert team IF (medium_vulns > threshold) → WARN + track trend ELSE → PASS, publish SARIF report ``` ## 📦 交付物 - ✅ **安全流水线** — 完整的 CI/CD 安全扫描集成 - ✅ **策略报告** — 用于 GitHub Security 标签页的 SARIF 格式结果 - ✅ **安全门** — 具有失败/通过逻辑的可配置阈值 - ✅ **修复手册** — 针对每种工具的逐步修复指南 ## 🏢 企业价值 这**在现代企业中至关重要**: - **合规性** — SOC 2、ISO 27001、PCI-DSS 要求进行持续的安全扫描 - **降低风险** — 在部署到生产环境之前发现漏洞 - **赋能开发者** — 开发者在他们的 PR 中看到问题,而不是在事后总结中 - **自动化安全** — 无需为每次发布进行手动安全审查 - **审计追踪** — 每次扫描、结果和决策都被记录且可搜索 ## 📄 许可证 MIT 许可证 — 详见 `LICENSE`。
标签:DevSecOps, 上游代理, 安全扫描, 时序注入