MehdiJ0uh4ri/devsecops-compliance-system

GitHub: MehdiJ0uh4ri/devsecops-compliance-system

一套安全左移的 DevSecOps 管线与 SOC2 合规自动化系统,将 SAST/DAST/SCA/SBOM 扫描、策略即代码门控、最小权限 IAM 生成和审计证据收集整合到每个 PR 的 CI 流程中。

Stars: 0 | Forks: 0

# DevSecOps Pipeline 与合规系统 安全左移与合规即代码:每一个 PR 都会进行扫描,以检查 secrets、 SAST、SCA、容器漏洞以及 IaC 配置错误,只有通过后才能 合并 —— 并且,每一项支持 SOC2 审计的控制措施都会自动生成其专属的 证据,而不是在审计员要求的前一周才让人去拼凑截图。 ## 目录说明 | 领域 | 路径 | 亮点 | |---|---|---| | **CI pipeline** | [`.github/workflows/pipeline.yml`](.github/workflows/pipeline.yml) | Semgrep (SAST), Trivy + Syft (SCA/SBOM/容器扫描), OWASP ZAP (DAST), OPA/Conftest (策略门控), gitleaks (secrets) — 全部作用于每个 PR | | **降噪分诊** | [`security/triage/`](security/triage/) | [`triage.py`](security/triage/triage.py) + [`cve-allowlist.yml`](security/triage/cve-allowlist.yml) — 仅在出现 CRITICAL、未修复且不在白名单中的漏洞时才让构建失败 | | **Secrets** | [`security/secrets/`](security/secrets/) | Pre-commit + CI gitleaks 扫描,外加自动化的 [密钥轮换手册与脚本](security/secrets/rotate-key-runbook.md) | | **策略即代码** | [`policy/opa/`](policy/opa/) | 禁止 root 容器、强制使用 IMDSv2、禁止 `0.0.0.0/0` 安全组 — 拒绝策略,在 PR 审查时强制执行,每条规则均带有单元测试 | | **最小权限 IAM** | [`iam/generator/`](iam/generator/) | [`generate_policy.py`](iam/generator/generate_policy.py) 将声明性请求转化为限定范围的策略 + MFA 验证且具有时效性的信任策略 — 拒绝通配符操作 | | **SOC2 合规** | [`compliance/soc2/`](compliance/soc2/) | 40 项控制措施映射至实现它们的工具/流程,一份[差距分析](compliance/soc2/gap-analysis.md),以及一份[修复路线图](compliance/soc2/remediation-roadmap.md) | | **证据自动化** | [`compliance/evidence-collector/`](compliance/evidence-collector/) | [`collect_evidence.py`](compliance/evidence-collector/collect_evidence.py) 验证每项控制措施的证据产物是否依然存在,并在几分钟内生成一份审计就绪的包 | | **扫描目标** | [`sample-app/`](sample-app/), [`k8s/`](k8s/), [`infra/`](infra/) | 供 pipeline 实际运行扫描的最小化 Flask 应用 + Kubernetes/Terraform 清单 | 请参阅 [`docs/architecture.md`](docs/architecture.md) 以获取完整的 pipeline 图表、威胁模型以及 mTLS/零信任网络笔记。 ## 快速开始 ``` # 本地 pre-commit hooks(镜像 CI gate) pip install pre-commit pre-commit install pre-commit run --all-files # 针对 Trivy scan 运行 CVE triage engine pip install pyyaml trivy image --format json -o trivy-results.json sample-app:local python security/triage/triage.py --allowlist security/triage/cve-allowlist.yml \ --report-out triage-report.json trivy-results.json # 生成 least-privilege IAM role pip install pyyaml jsonschema python iam/generator/generate_policy.py \ iam/generator/examples/ci-deploy-role-request.yml --out-dir out/ # 运行 policy-as-code 单元测试 opa test policy/opa -v # 生成 SOC2 evidence package pip install pyyaml requests python compliance/evidence-collector/collect_evidence.py \ --control-matrix compliance/soc2/control-matrix.csv --output-dir evidence-package/ ``` ## 设计原则 1. **对关键问题大声报警,对无关紧要的保持沉默。** CRITICAL、 未修复、不在白名单中的漏洞会阻止合并。传递依赖中的 MEDIUM 级别漏洞 则不会 —— 它会被上报,但不会导致构建中断。相同的逻辑也适用于 DAST (`security/dast/zap-rules.tsv`)。策略即代码是一个刻意的例外: root 容器、IMDSv1 和完全开放的安全组始终会阻断合并 (参见 [`policy/README.md`](policy/README.md))。 2. **白名单本身也会受到审计。** [`cve-allowlist.yml`](security/triage/cve-allowlist.yml) 中的每个 条目都有负责人和 有效期;过期的条目会恢复为阻断级别,而不是永远被静默忽略。 3. **合规证据是自动生成的,而非人为整理的。** SOC2 控制矩阵 并不是某人在审计前才去更新的电子表格 —— 证据收集器在每次 运行时,都会检查支持每项自动化控制措施的文件/策略/工作流是否依然存在。 4. **最小权限是通过构造强制实现的。** IAM 生成器会直接 拒绝通配符操作,并将会话时效限制 + MFA 编码到 信任策略本身中,而不是将“请缩减权限范围”写在 没人看的 Wiki 页面上。
标签:DevSecOps, IAM权限控制, SOC2合规, 上游代理, 子域名突变, 安全合规, 策略即代码, 网络代理, 聊天机器人安全, 逆向工具