anlehtouf/AegisFlow-DevSecOps
GitHub: anlehtouf/AegisFlow-DevSecOps
AegisFlow 是一个内置 22 阶段安全流水线的 DevSecOps 参考平台,通过 AWS 原生供应链强制执行策略,实现从代码提交到运行时的全流程安全门禁。
Stars: 0 | Forks: 0
# AegisFlow
[](./.github/workflows/ci-pipeline.yml)
[]()
[]()
[]()
[]()
[]()
[](./LICENSE)
## 为什么选择 AegisFlow
大多数软件组织将安全视为开发后的审计步骤。
**AegisFlow 颠覆了这一模式**:在交付生命周期的每个阶段都强制执行安全,
每次构建都会生成可验证的供应链制品,并且
每次部署都会落地于由已签名、已扫描的
Terraform 配置的 AWS 基础设施。
该平台围绕一个故意带有漏洞的演示应用程序构建 —
**SecureTrack**,一个事件报告平台 — 包含 15 个故意的
安全缺陷(`V1`–`V15`)。流水线会捕获所有这些缺陷并阻止
部署,直到每个缺陷被修复,从而产生一个可衡量的
**30+ 严重/高危发现 → 0** 的过程记录。
## 目录
- [架构](#architecture)
- [安全控制](#security-controls)
- [流水线阶段](#pipeline-stages)
- [云基础设施](#cloud-infrastructure)
- [技术栈](#tech-stack)
- [快速开始](#quick-start)
- [演示应用程序](#demo-application)
- [漏洞目录](#vulnerability-catalogue)
- [前后对比](#before-vs-after)
- [文档](#documentation)
- [仓库结构](#repository-structure)
- [许可证](#license)
## 架构
完整部署拓扑 — AWS 原生,OIDC 联合,端到端签名:

完整图表集:[`docs/diagrams/`](./docs/diagrams/) — MCD、用例、类、
时序图 (×2)、部署、活动、组件。
## 安全控制
| 控制 | 工具 | 阶段 | 阻断 |
|---------|------|-------|----------|
| 密钥检测 | Gitleaks | 预构建 | 是 |
| SAST | Semgrep (+ 自定义规则) | 构建 | 是 |
| 代码质量 | SonarCloud | 构建 | 是 |
| 依赖扫描 | Trivy + npm audit | 构建 | 是 |
| Dockerfile lint | Hadolint | 打包 | 是 |
| 镜像扫描 | Trivy + ECR 原生 | 打包 | 是 |
| Policy-as-code | Conftest / OPA | 打包 | 是 |
| IaC 扫描 | tfsec | 基础设施 | 是 |
| SBOM | Syft (SPDX) | 打包 | 建议 |
| 镜像签名 | Cosign keyless (OIDC) | 打包 | 建议 |
| DAST | OWASP ZAP | 部署后 | 建议 |
| 运行时 CVE | Amazon Inspector v2 | 运行时 | 持续 |
| 威胁检测 | Amazon GuardDuty | 运行时 | 持续 |
| L7 防护 | AWS WAF (OWASP CRS) | 边缘 | 持续 |
请参阅 [`docs/security-controls.md`](./docs/security-controls.md) 获取包含控制 ID 和
合规映射的完整清单。
## 流水线阶段
CI/CD 流水线运行 22 个阶段,带有 5 个明确的阻断门:

请参阅 [`.github/workflows/ci-pipeline.yml`](./.github/workflows/ci-pipeline.yml)
查看实现。
## 云基础设施
AegisFlow 附带了一个完整的 **Terraform module**,用于为应用程序配置
完整的 AWS landing zone:
- **VPC** — 跨越两个 AZ 的三层子网(公共 · 私有应用 · 私有 DB)
- **ECS Fargate** — 无服务器 container runtime,无需节点管理
- **ECR** — 具有原生漏洞扫描的镜像仓库
- **RDS PostgreSQL 16** — 静态加密,无公共访问,自动备份
- **ALB + AWS WAF** — 带有 OWASP Core Rule Set 的 L7 负载均衡
- **ACM + Route 53** — 自动续订的 TLS 证书和 DNS
- **Secrets Manager** — DB 凭证和 JWT secret,受 IAM 限制
- **S3** — 用于 SBOM、扫描报告、附件的版本化、加密存储桶
- **CloudWatch Logs + Metrics** — 集中式可观测性
- **GuardDuty + Inspector v2** — 运行时威胁检测和持续 CVE 扫描
- **IAM OIDC Provider** — GitHub Actions 联合身份验证,**零静态 AWS 凭证**
Terraform 代码本身在流水线中由
[`tfsec`](https://aquasecurity.github.io/tfsec) 扫描。
请参阅 [`infrastructure/terraform/README.md`](./infrastructure/terraform/README.md)
获取部署说明。
## 技术栈
**应用程序**
- 后端:Node.js 20 + Express.js + Prisma ORM
- 前端:React 18 + Vite + React Router
- 数据库:PostgreSQL 16
**DevSecOps 平台**
- CI/CD:GitHub Actions
- 镜像仓库:GitHub Container Registry (GHCR) + Amazon ECR
- 密钥扫描:Gitleaks
- SAST:Semgrep(社区版 + 自定义规则)
- 代码质量:SonarCloud
- SCA:Trivy + npm audit
- 容器:Docker + BuildKit
- Dockerfile lint:Hadolint
- 镜像扫描:Trivy + ECR 原生
- SBOM:Syft (Anchore) — SPDX 格式
- 签名:Cosign keyless (Sigstore)
- Policy-as-code:Conftest / OPA (Rego)
- IaC:Terraform
- IaC 扫描:tfsec
- DAST:OWASP ZAP
- 运行时安全:Amazon Inspector v2, Amazon GuardDuty
- 可观测性:Prometheus + Grafana + CloudWatch
**云 (AWS)**
- 计算:ECS Fargate
- 数据库:RDS PostgreSQL
- 网络:VPC, ALB, WAF, Route 53, ACM
- 身份:IAM + GitHub OIDC 联合身份验证
- 存储:S3
- 密钥:AWS Secrets Manager
## 快速开始
### 本地开发(不使用云)
```
git clone https://github.com/anlehtouf/AegisFlow-DevSecOps.git
cd AegisFlow-DevSecOps
chmod +x scripts/*.sh
./scripts/setup.sh
cd infrastructure
docker compose up -d
docker compose -f docker-compose.yml -f docker-compose.monitoring.yml up -d
```
访问点:
- 前端:http://localhost:3000
- 后端:http://localhost:5000
- Prometheus:http://localhost:9090
- Grafana:http://localhost:3001 (admin/admin)
默认初始化凭证:
- 管理员:`admin@securetrack.local` / `admin123`
- 报告者:`reporter@securetrack.local` / `reporter123`
### 云部署 (AWS)
```
cd infrastructure/terraform
cp terraform.tfvars.example terraform.tfvars # edit values
terraform init
terraform plan
terraform apply
```
请参阅 [`infrastructure/terraform/README.md`](./infrastructure/terraform/README.md)
获取包含 OIDC 角色设置在内的完整说明。
## 演示应用程序
**SecureTrack** 是一个事件报告和跟踪平台:
- 基于 JWT 的身份验证(注册 / 登录)
- 事件 CRUD(创建、列表、查看、更新状态)
- 通过 S3 presigned URLs 上传文件附件
- 基于角色的访问(REPORTER、ADMIN、AUDITOR)
- 每次变更的审计日志
- 健康检查和 Prometheus metrics endpoint
请参阅 [`docs/architecture.md`](./docs/architecture.md) 和
[类图](./docs/diagrams/03-class-diagram.png) 了解详情。
## 漏洞目录
该应用程序以 **15 个故意设置的漏洞**(在源码注释中标记为 `V1`–`V15`)
开始,每个漏洞都由流水线中的特定工具检测:
| # | 漏洞 | 检测工具 | 严重程度 | OWASP Top 10 |
|----|--------------|-------------|----------|--------------|
| V1 | 硬编码的 API key | Gitleaks | HIGH | A07 |
| V2 | 硬编码的 JWT secret | Gitleaks + Semgrep | HIGH | A02 / A07 |
| V3 | SQL injection(原始查询) | Semgrep | CRITICAL | A03 |
| V4 | 通过 `dangerouslySetInnerHTML` 的 XSS | Semgrep | HIGH | A03 |
| V5 | 存在漏洞的 `lodash@4.17.20` | Trivy + npm audit | HIGH | A06 |
| V6 | 存在漏洞的 `node:16` 基础镜像 | Trivy image | HIGH/CRIT | A06 |
| V7 | 容器以 root 身份运行 | Hadolint + Conftest | MEDIUM | A05 |
| V8 | Dockerfile 中没有 HEALTHCHECK | Hadolint + Conftest | LOW | A05 |
| V9 | 错误处理程序中的调试模式 | Semgrep | MEDIUM | A05 |
| V10 | 缺少 helmet 安全标头 | OWASP ZAP | MEDIUM | A05 |
| V11 | 身份验证没有速率限制 | Semgrep (自定义) + ZAP | LOW | A07 |
| V12 | 密码策略薄弱 | Semgrep (自定义) | MEDIUM | A07 |
| V13 | 密码被记录到控制台 | Semgrep (自定义) | MEDIUM | A09 |
| V14 | CORS 通配符来源 | Semgrep (自定义) + ZAP | MEDIUM | A05 |
| V15 | 过时的 Express 版本 | Trivy | HIGH | A06 |
## 前后对比
| 指标 | 前 | 后 | 减少 |
|--------|--------|-------|-----------|
| 代码中的密钥 | 2 | 0 | 100% |
| SAST 高危/严重 | 6 | 0 | 100% |
| 存在漏洞的依赖项(严重) | 2 | 0 | 100% |
| 镜像严重 CVE | 15+ | 0 | 100% |
| Dockerfile lint 错误 | 3 | 0 | 100% |
| 策略违规 | 2 | 0 | 100% |
| DAST 高危发现 | 2 | 0 | 100% |
| **高危/严重总计** | **30+** | **0** | **100%** |
## 文档
- [项目蓝图](./PROJECT_BLUEPRINT.md) — 完整规范(33 个部分)
- [图表](./docs/diagrams/) — MCD + UML 包(8 个图表)
- [架构](./docs/architecture.md) — 技术架构
- [安全控制](./docs/security-controls.md) — 控制清单
- [合规映射](./docs/compliance-mapping.md) — OWASP SAMM, NIST SSDF, ISO 27001
- [威胁模型](./security/threat-model/threat-model.md) — STRIDE 分析
- [运行手册](./docs/runbook.md) — 运维指南
- [Terraform Module](./infrastructure/terraform/README.md) — AWS 部署
## 仓库结构
```
AegisFlow-DevSecOps/
├── .github/workflows/ GitHub Actions CI/CD pipelines
├── app/
│ ├── backend/ Node.js + Express API
│ └── frontend/ React + Vite SPA
├── security/
│ ├── gitleaks/ Secret scanning rules
│ ├── semgrep/ SAST custom rules
│ ├── trivy/ Trivy configuration
│ ├── policies/ OPA / Rego policies
│ ├── zap/ ZAP scan config
│ └── threat-model/ STRIDE threat model
├── infrastructure/
│ ├── docker-compose.yml Local staging stack
│ ├── docker-compose.monitoring.yml
│ ├── prometheus/
│ ├── grafana/
│ └── terraform/ AWS landing zone (IaC)
├── scripts/ Setup, deploy, health, reporting
├── docs/
│ ├── diagrams/ MCD + UML diagram pack
│ ├── architecture.md
│ ├── security-controls.md
│ ├── compliance-mapping.md
│ └── runbook.md
├── evidence/ Screenshots and scan reports
├── reports/ Generated scan outputs (gitignored)
└── README.md
```
## 许可证
MIT — 请参阅 [LICENSE](./LICENSE)。
## 致谢
作为展示生产级 DevSecOps 实践的毕业设计 (PFE) 项目构建。
完全使用免费和开源工具,以确保完全的可重复性。
标签:AI应用开发, AWS, DevSecOps, DPI, ECS, LLM防护, MITM代理, Terraform, 上游代理, 代码安全扫描, 自动化运维, 自定义脚本, 自定义请求头, 请求拦截