Jazz00001/Enterprise-DevSecOps
GitHub: Jazz00001/Enterprise-DevSecOps
一个端到端的企业级 DevSecOps 安全实验室,演示如何在整个软件交付生命周期中对漏洞应用进行系统性安全加固。
Stars: 0 | Forks: 0
# 企业级 DevSecOps 安全实验室
## 执行摘要
本项目是一个**私有、端到端的企业级 DevSecOps 安全实验室**,旨在演示如何在完整的软件交付生命周期中应用现代安全工程。
该实验室从一个故意存在漏洞的 Flask 应用程序开始,并通过以下方式进行逐步安全加固:
* 应用程序安全测试
* CI/CD 安全门禁
* Docker 镜像加固
* Kubernetes 安全控制
* 带有偏差修正的 GitOps 部署
* 软件供应链安全
* SBOM 生成与签名证据
* 运行时威胁检测
* 安全可观测性
* 合规性控制映射
* 专业报告与复测证明
该项目的构建旨在模拟安全团队、DevSecOps 工程师、云安全工程师和应用程序安全工程师在真实工作负载进入生产环境之前如何对其进行安全加固。
## 项目故事
本实验室遵循一条逼真的企业安全演进路线:
```
Vulnerable Flask Application
↓
Application Security Testing
↓
Secure Code Remediation
↓
Docker Hardening
↓
CI/CD Security Gates
↓
Container Image Scanning
↓
Kubernetes Hardening
↓
GitOps Deployment
↓
Supply Chain Security
↓
Runtime Detection
↓
Security Observability
↓
Compliance Mapping and Audit Evidence
```
该项目不仅展示了工具,还展示了完整的安全工作流程:
1. **发现**问题。
2. 在私有实验室中安全地**进行漏洞利用**。
3. **记录证据**。
4. **评估风险与影响**。
5. **修复或接受风险**。
6. **重新测试并证明漏洞已闭环**。
7. **将证据转化为专业报告**。
## 动态架构
```
flowchart LR
A[Developer Commit] --> B[GitHub Repository]
B --> C[GitHub Actions CI/CD]
C --> D[Bandit SAST]
C --> E[pip-audit SCA]
C --> F[Trivy FS and Secret Scan]
C --> G[Docker Build]
G --> H[Trivy Image Scan]
H --> I[GHCR Container Image]
I --> J[Cosign Signature]
I --> K[Syft SBOM]
I --> L[SLSA-Style Provenance]
B --> M[ArgoCD GitOps]
M --> N[Kind Kubernetes Cluster]
N --> O[Hardened Flask App]
N --> P[RBAC]
N --> Q[NetworkPolicy]
N --> R[Pod Security]
N --> S[OPA Gatekeeper]
O --> T[Falco Runtime Detection]
T --> U[Falcosidekick]
U --> V[Prometheus]
V --> W[Grafana Security Dashboard]
W --> X[Detection Report]
X --> Y[Compliance Mapping]
Y --> Z[Audit Evidence]
```
## 高阶安全架构
```
flowchart TB
subgraph Private_VM["Private Ubuntu VM"]
Docker["Docker Engine"]
Kind["Kind Kubernetes Cluster"]
Tools["Security Tooling"]
end
subgraph AppSec["Application Security"]
Flask["Vulnerable Flask App"]
SQLi["SQL Injection Finding"]
CMDi["Command Injection Finding"]
SSTI["Unsafe Rendering Finding"]
Deps["Dependency Vulnerability Finding"]
end
subgraph CICD["CI/CD Security"]
Actions["GitHub Actions"]
Gates["Security Gates"]
Scorecard["OpenSSF Scorecard"]
end
subgraph K8sSec["Kubernetes Security"]
RBAC["Least-Privilege RBAC"]
NetPol["NetworkPolicy"]
PodSec["Pod Security Restricted"]
Gatekeeper["OPA Gatekeeper"]
end
subgraph SupplyChain["Supply Chain Security"]
Cosign["Cosign Signing"]
Syft["Syft SBOM"]
CycloneDX["CycloneDX SBOM"]
SLSA["SLSA-Style Provenance"]
end
subgraph Detection["Runtime Detection and Observability"]
Falco["Falco"]
Sidekick["Falcosidekick"]
Prom["Prometheus"]
Grafana["Grafana"]
end
Docker --> Kind
Flask --> Docker
Tools --> AppSec
Actions --> Gates
Gates --> Docker
Kind --> K8sSec
Docker --> SupplyChain
Kind --> Detection
Falco --> Sidekick --> Prom --> Grafana
```
## 本项目展示的内容
| 领域 | 已实现的能力 |
| -------------------- | ---------------------------------------------------------------------------------------------- |
| 应用程序安全 | SQL 注入、命令注入、不安全的渲染、依赖项漏洞分析 |
| 安全编码 | 修复示例、安全测试、更安全的编码模式 |
| CI/CD 安全 | 安全门禁、扫描器集成、工作流加固、OpenSSF Scorecard |
| 容器安全 | 加固的 Dockerfile、非 root 用户、Trivy 镜像扫描 |
| Kubernetes 安全 | RBAC、NetworkPolicy、Pod 安全、安全的部署清单 |
| GitOps | ArgoCD 应用同步、偏差检测、自我修复 |
| 供应链安全 | Cosign 签名、Syft SBOM、CycloneDX、SPDX、来源证明 |
| 运行时安全 | Falco 检测、Falcosidekick 转发、Prometheus 告警 |
| 可观测性 | Grafana 仪表板、Prometheus 查询、告警规则 |
| 合规性 | NIST SSDF、OWASP ASVS、CIS Kubernetes Benchmark、SLSA、SOC 2 风格、ISO 27001 风格、PCI/HIPAA 对齐 |
| 报告 | 发现报告、复测证明、证据索引、事后总结、风险登记册 |
## 技术栈
| 层级 | 工具 |
| --------------------------- | ----------------------------------------------------- |
| 应用程序 | Python, Flask |
| 测试 | pytest |
| SAST | Bandit |
| SCA | pip-audit |
| 文件系统 / 镜像 / IaC 扫描 | Trivy |
| 容器化 | Docker, Docker Compose |
| Kubernetes | Kind, kubectl, Helm |
| GitOps | ArgoCD |
| 策略即代码 | OPA Gatekeeper |
| 运行时检测 | Falco |
| 事件转发 | Falcosidekick |
| 指标监控 | Prometheus |
| 仪表板 | Grafana |
| 供应链 | Cosign, Syft, SPDX, CycloneDX, SLSA 风格的来源证明 |
| 仓库安全 | OpenSSF Scorecard, GitHub Actions |
| 文档 | Markdown、PDF 报告、架构图、证据索引 |
## 漏洞应用程序范围
本项目包含一个故意存在漏洞的 Flask 应用程序,用于演示真实的 AppSec 测试。
| 路由 | 漏洞类型 | 用途 |
| -------------- | ---------------------------- | -------------------------------------------------- |
| `/health` | 健康检查 | 用于测试、Docker healthcheck、Kubernetes probes |
| `/user?id=` | SQL 注入 | 演示不安全的查询构造 |
| `/ping?host=` | 命令注入 | 演示不安全的 shell 执行 |
| `/hello?name=` | 不安全渲染 / 模板注入风险 | 演示不安全的由用户控制的渲染 |
## 应用程序安全发现
| ID | 发现 | 严重程度 | CWE / OWASP 映射 | 状态 |
| ------- | --------------------- | -------: | ----------------------- | ------------------- |
| APP-001 | SQL 注入 | High | CWE-89 / OWASP Injection | 已记录 |
| APP-002 | 命令注入 | High | CWE-78 / OWASP Injection | 已记录 |
| APP-003 | 不安全的模板渲染 | High | CWE-94 / CWE-1336 | 已记录 |
| APP-004 | 易受攻击的依赖项 | Medium / High | CWE-937 / CWE-1104 | 已记录 |
| APP-005 | 缺失安全响应头 | Medium | OWASP Secure Headers | 已添加测试覆盖 |
## 安全修复示例
| 不安全的模式 | 安全修复方式 |
| ------------------------------- | --------------------------------------------- |
| SQL 查询字符串拼接 | 参数化 SQL 查询 |
| 带有用户输入的 `shell=True` | 带有验证的 Subprocess 参数列表 |
| 用户控制的模板渲染 | 带有安全上下文变量的静态模板 |
| 未锁定的易受攻击依赖项 | 版本锁定和依赖项升级 |
| 缺失安全响应头 | Flask `after_request` 安全响应头 |
| root 容器执行 | 非 root UID/GID |
| 可写的根文件系统 | 只读根文件系统和可写的 `/tmp` |
| 权限过大的 RBAC | Namespace 范围内的最小权限 |
| 缺失 NetworkPolicy | 默认拒绝和显式允许 |
| 未签名的镜像 | Cosign 签名和验证 |
## CI/CD 安全门禁
本项目包含用于安全自动化的 GitHub Actions 工作流。
### 已实现的工作流
| 工作流 | 用途 |
| ------------------- | --------------------------------------------------------------- |
| `security-gates.yml`| 阻断 CI/CD 中的严重安全问题 |
| `scorecard.yml` | 使用 OpenSSF Scorecard 评估仓库供应链安全态势 |
### 安全门禁条件
| 门禁 | 失败条件 |
| ------------------ | -------------------------------------------------------------------------- |
| 依赖项安全 | 存在严重的依赖项漏洞 = 失败 |
| 容器安全 | 存在严重的容器漏洞 = 失败 |
| Secret 扫描 | 发现 Secret = 失败 |
| Dockerfile 安全 | 存在严重的 Dockerfile 配置错误 = 失败 |
| Kubernetes 安全 | 存在严重的 Kubernetes 清单配置错误 = 失败 |
| SAST | 修复基线后仍存在 High/Critical 不安全代码模式 = 失败 |
| 供应链 | 受保护的发布中缺失预期的签名、SBOM 或来源证明 = 失败 |
## CI/CD 流水线流程
```
sequenceDiagram
participant Dev as Developer
participant GH as GitHub Repo
participant CI as GitHub Actions
participant SAST as Bandit
participant SCA as pip-audit
participant Trivy as Trivy
participant Docker as Docker Build
participant GHCR as GHCR
participant Cosign as Cosign
participant Argo as ArgoCD
participant K8s as Kubernetes
Dev->>GH: Push code / Pull request
GH->>CI: Trigger workflow
CI->>SAST: Run Python SAST
CI->>SCA: Run dependency audit
CI->>Trivy: Scan filesystem and IaC
CI->>Docker: Build image
Docker->>Trivy: Scan container image
Docker->>GHCR: Push image
GHCR->>Cosign: Sign and verify image
GH->>Argo: Desired state stored in Git
Argo->>K8s: Sync application
```
## Docker 安全
Docker 实现旨在演示生产级别的加固。
### Docker 控制
| 控制措施 | 是否实现 |
| -------------------- | -------- |
| 多阶段构建 | 是 |
| 非 root 运行时用户 | 是 |
| 固定的 UID/GID | 是 |
| 最小化运行时镜像 | 是 |
| 无 pip 缓存 | 是 |
| Gunicorn 运行时 | 是 |
| Healthcheck | 是 |
| Trivy 镜像扫描 | 是 |
| Syft SBOM | 是 |
| Cosign 签名 | 是 |
### Docker 命令
```
docker build -t devsecops-vuln-app:lab .
docker run --rm -p 8080:5000 devsecops-vuln-app:lab
docker run --rm --entrypoint id devsecops-vuln-app:lab
```
## Docker Compose 用法
本项目包含一个专业的 `docker-compose.yml`,以支持本地应用程序执行、扫描、SBOM 生成和可选的可观测性。
```
docker compose up --build demo-app
```
```
docker compose --profile security run --rm bandit-sast
docker compose --profile security run --rm pip-audit-sca
docker compose --profile security run --rm trivy-fs-scan
docker compose --profile security run --rm trivy-image-scan
```
```
docker compose --profile sbom run --rm syft-sbom
```
```
docker compose --profile monitoring up -d prometheus grafana node-exporter cadvisor falcosidekick
```
## Kubernetes 安全
Kubernetes 阶段演示了如何将易受攻击的应用程序部署到经过加固的集群环境中。
### Kubernetes 控制
| 控制措施 | 实现方式 |
| ------------------------------- | ------------------------------------ |
| 专用 namespace | `devsecops` |
| 受限的 Pod 安全标签 | Namespace 级别强制执行 |
| 专用 ServiceAccount | `demo-app-sa` |
| 禁用 Token 自动挂载 | `automountServiceAccountToken: false`|
| 非 root 执行 | `runAsNonRoot: true` |
| 阻止权限提升 | `allowPrivilegeEscalation: false` |
| 丢弃 Linux capabilities | `drop: ["ALL"]` |
| 只读根文件系统 | `readOnlyRootFilesystem: true` |
| Seccomp profile | `RuntimeDefault` |
| 资源 requests/limits | 配置 CPU 和 memory |
| 健康 probes | Liveness 和 readiness probes |
| NetworkPolicy | 默认拒绝和显式允许 |
| RBAC | 最小权限 |
| Admission control | OPA Gatekeeper |
## Kubernetes 攻击与修复流程
```
flowchart LR
A[Privileged Pod Created] --> B[hostPath Mounted]
B --> C[Node Filesystem Visible]
C --> D[Falco Detects Suspicious Activity]
D --> E[Security Finding Created]
E --> F[Pod Security Restricted Enforced]
F --> G[Privileged Pod Blocked]
H[Overprivileged ServiceAccount] --> I[ClusterRoleBinding cluster-admin]
I --> J[Can Access Secrets]
J --> K[RBAC Finding Created]
K --> L[ClusterRoleBinding Removed]
L --> M[Namespace RoleBinding Applied]
M --> N[Secret Access Denied]
```
## RBAC 审查
该项目演示了不安全和安全的 RBAC 模式。
| 场景 | 结果 |
| ---------------------------------------- | ------------------------------- |
| ServiceAccount 绑定到 `cluster-admin` | 可以访问集群范围内的 secret |
| 移除危险的 ClusterRoleBinding | 权限降低 |
| 应用 Namespace RoleBinding | 受限的 ConfigMap 读取访问权限 |
| 重新测试 Secret 访问 | 被拒绝 |
| 重新测试集群范围访问 | 被拒绝 |
验证命令示例:
```
kubectl auth can-i get secrets \
--as=system:serviceaccount:devsecops:demo-app-sa \
-n devsecops
```
预期的安全结果:
```
no
```
## NetworkPolicy 验证
该项目使用 NetworkPolicy 演示零信任网络分段。
| 策略控制 | 用途 |
| ------------------ | -------------------------------- |
| 默认拒绝 ingress | 阻止意外入站流量 |
| 默认拒绝 egress | 限制出站通信 |
| 显式应用 ingress | 仅允许可信流量 |
| 允许 DNS egress | 支持名称解析 |
| 验证 pods | 证明允许/拒绝行为 |
## Pod 安全验证
Pod 安全验证演示了如何阻止不安全的 Kubernetes 工作负载模式。
| 风险模式 | 预期安全结果 |
| ---------------------- | -------------------------------------- |
| `privileged: true` | 被阻止 |
| hostPath `/` 挂载 | 被阻止 |
| 权限提升 | 被阻止 |
| root 容器 | 被阻止 |
| 缺失 seccomp | 根据策略发出警告或阻止 |
| 可写的根文件系统 | 在安全部署中已加固 |
## 使用 ArgoCD 的 GitOps
ArgoCD 用于演示企业级 GitOps 原则。
| GitOps 能力 | 是否实现 |
| --------------------- | -------- |
| Git 作为事实来源 | 是 |
| 自动同步 | 是 |
| 自我修复 | 是 |
| 自动清理 | 是 |
| 偏差检测 | 是 |
| 偏差修正 | 是 |
### GitOps 偏差演示
```
flowchart LR
A[Git Desired State: replicas=1] --> B[ArgoCD Sync]
B --> C[Kubernetes Deployment Running]
C --> D[Manual Drift: kubectl scale replicas=3]
D --> E[ArgoCD Detects OutOfSync]
E --> F[Self-Heal Enabled]
F --> G[Cluster Restored to replicas=1]
```
## 供应链安全
供应链阶段通过增加制品的完整性和透明度,使该项目达到企业级标准。
### 已实现的供应链控制
| 控制措施 | 工具 | 证据 |
| --------------- | -------------------------- | ------------------------------- |
| 镜像签名 | Cosign | 签名验证 |
| SBOM 生成 | Syft | SPDX 和 CycloneDX SBOM |
| 软件包清单 | Syft | SBOM 包数量 |
| 漏洞可见性 | Trivy | 易受攻击的顶级软件包 |
| 来源证明 | SLSA 风格的本地谓词 | 构建可追溯性 |
| 仓库安全态势 | OpenSSF Scorecard | 供应链评分 |
| 漏洞例外 | 例外模板 接受风险的文档记录 |
| VEX 说明 | VEX 风格说明 | 可利用性上下文 |
### 企业级证据字段
| 证据项 | 是否包含 |
| ---------------------- | -------- |
| 镜像 digest | 是 |
| 签名验证结果 | 是 |
| SBOM 软件包数量 | 是 |
| 易受攻击的顶级软件包 | 是 |
| 存在漏洞软件包的原因 | 是 |
| 已修复的内容 | 是 |
| 仍被接受为风险的内容 | 是 |
| SLSA 相关性 | 是 |
| CycloneDX 价值 | 是 |
## 运行时检测工程
运行时检测阶段使用 Falco、Falcosidekick、Prometheus 和 Grafana。
```
flowchart LR
A[Container Runtime Activity] --> B[Falco]
B --> C[Falco Rule Match]
C --> D[Falcosidekick]
D --> E[Prometheus Metrics]
E --> F[Grafana Dashboard]
E --> G[Prometheus Alert Rules]
F --> H[Security Analyst Triage]
G --> H
H --> I[Incident Response Runbook]
```
### 检测报告字段
每次检测包括:
| 字段 | 是否包含 |
| -------------------- | -------- |
| 检测名称 | 是 |
| MITRE ATT&CK 映射 | 是 |
| 日志来源 | 是 |
| 触发条件 | 是 |
| 误报 | 是 |
| 严重程度 | 是 |
| 分诊步骤 | 是 |
| 响应步骤 | 是 |
| 证据截图 | 是 |
## Falco 检测示例
| 检测 | MITRE 映射 | 严重程度 | 日志来源 |
| ------------------------------------ | ---------------------------------------- | -------: | --------------------------- |
| 从容器中访问敏感文件 | 凭证访问 | High | Falco 运行时事件 |
| 特权 Pod 访问宿主机文件系统 | 逃逸到主机 / 权限提升 | Critical | Falco + Kubernetes |
| 容器内启动 shell | 执行 | Medium / High | Falco |
| 检测到事件丢弃 | 防御绕过 / 检测质量风险 | High | Falco 指标 |
| RBAC 提权模拟 | 权限提升 | High | Kubernetes API + 验证 |
## Prometheus 和 Grafana 安全可观测性
该项目包含用于安全监控的仪表板和规则。
### 仪表板面板
| 面板 | 用途 |
| ------------------------------- | ---------------------------- |
| 最近 10 分钟的 Falco 检测 | 快速查看运行时安全可见性 |
| 按优先级划分的事件 | 严重程度分布 |
| 触发次数最多的规则 | 检测热点分析 |
| 内核事件处理速率 | Falco 健康状况监控 |
| 丢弃的事件 | 检测质量保证 |
### Prometheus 规则
| 告警 | 用途 |
| ---------------------- | ------------------------------ |
| `FalcoRuntimeDetection`| Falco 规则触发时告警 |
| `FalcoKernelEventDrops`| 关于内核事件丢弃的告警 |
| `FalcoOutputQueueDrops`| 关于 Falco 输出丢弃的告警 |
## 合规性与控制映射
本项目包含用于安全证据的合规性风格映射。
| 框架 | 映射用途 |
| ----------------------- | ------------------------------------------------------ |
| NIST SSDF | 安全软件开发实践 |
| OWASP ASVS | 应用程序安全控制 |
| CIS Kubernetes Benchmark| Kubernetes 安全配置指导 |
| SLSA | 供应链完整性和防篡改 |
| SOC 2 风格控制 | 安全性、可用性、机密性对齐 |
| ISO 27001 风格控制 | 安全治理和风险管理对齐 |
| 仅 PCI/HIPAA 风格对齐 | 演示概念上的控制对齐,而非认证 |
## 威胁建模
该项目包含基于 STRIDE 的威胁建模。
### STRIDE 类别
| STRIDE 类别 | 项目风险示例 |
| ---------------------- | ---------------------------------------------- |
| 伪造 | ServiceAccount 滥用或薄弱的身份边界 |
| 篡改 | 镜像或清单篡改 |
| 否认 | 缺失审计证据或薄弱的流水线可追溯性 |
| 信息泄露 | Secret 访问、SQL 注入、SBOM 暴露 |
| 拒绝服务 | 资源耗尽、缺失限制 |
| 权限提升 | 集群管理员 RBAC、特权 Pod |
### STRIDE 流程
```
flowchart TB
A[External User / Tester] --> B[Flask Application]
B --> C[Container Runtime]
C --> D[Kubernetes Pod]
D --> E[Kubernetes API]
E --> F[Cluster Resources]
B --> G[SQLite / App Data]
C --> H[Runtime Events]
H --> I[Falco]
I --> J[Prometheus]
J --> K[Grafana]
B -. Spoofing .-> C
C -. Tampering .-> D
D -. Elevation of Privilege .-> E
B -. Information Disclosure .-> G
E -. Repudiation .-> F
C -. Denial of Service .-> D
```
## 专业文档包
本项目包含一套完整的文档。
| 文档 | 用途 |
| ----------------------------------------------- | ---------------------------------- |
| `PROJECT_SUMMARY` | 执行项目概述 |
| `Methodology` | 项目的执行方式 |
| `SECURITY_FINDINGS_REPORT` | 专业的漏洞报告 |
| `SQL Injection Finding` | 专项发现文档 |
| `Command Injection Finding` | 专项发现文档 |
| `Template Injection / Unsafe Rendering Finding` | 专项发现文档 |
| `Dependency Vulnerability Finding` | 专项发现文档 |
| `Secure Code Remediation Examples` | 安全代码修复和模式 |
| `Retest Proof` | 修复后的验证 |
| `DevSecOps Pipeline Deep Dive` | CI/CD 架构和安全门禁 |
| `Security Gates` | 门禁逻辑和阈值 |
| `CI/CD Threat Model` | 流水线威胁建模 |
| `Kubernetes Security Assessment` | Kubernetes 加固和风险审查 |
| `RBAC Review` | 最小权限验证 |
| `NetworkPolicy Validation` | 零信任网络验证 |
| `Pod Security Validation` | Pod 安全限制执行 |
| `kube-bench Results` | CIS 风格的 Kubernetes 评估 |
| `Supply Chain Security Report` | Cosign、Syft、SBOM、来源证明 |
| `Detection Engineering Report` | Falco 检测工程 |
| `Incident Response Runbook` | 分诊和响应工作流 |
| `Evidence Index` | 截图和报告映射 |
| `Compliance Mapping` | 框架对齐 |
| `Post-Mortem` | 经验教训和改进 |
## 证据索引
证据组织在以下位置:
```
evidence/screenshots/
security/reports/
security/sbom/
security/provenance/
docs/evidence/
docs/reports/
```
### 证据类别示例
| 类别 | 证据 |
| ----------------- | -------------------------------------------------------- |
| AppSec | SQLi、命令注入、不安全渲染的截图 |
| SAST | Bandit 报告 |
| SCA | pip-audit 报告 |
| 容器 | Docker 构建、非 root 证明、Trivy 镜像扫描 |
| Kubernetes | Pod 安全、RBAC、NetworkPolicy、部署证明 |
| GitOps | ArgoCD 同步、自我修复、资源树 |
| 供应链 | Cosign 验证、SBOM、来源证明 |
| 运行时检测 | Falco 告警、Prometheus 查询、Grafana 仪表板 |
| 合规性 | 控制验证矩阵、风险登记册、审计摘要 |
## 如何运行该项目
### 1. 克隆仓库
```
git clone https://github.com/YOUR_GITHUB_USERNAME/Enterprise-DevSecOps.git
cd Enterprise-DevSecOps
```
### 2. 创建 Python 环境
```
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -r src/app/requirements.txt
pip install pytest bandit pip-audit
```
### 3. 运行测试
```
python -m pytest tests/ -v
```
### 4. 在本地运行应用程序
```
cd src/app
python app.py
```
打开:
```
http://localhost:5000/health
```
### 5. 构建 Docker 镜像
```
docker build -t devsecops-vuln-app:lab .
```
### 6. 运行 Docker 容器
```
docker run --rm -p 8080:5000 devsecops-vuln-app:lab
```
### 7. 运行安全扫描
```
bandit -r src/app -f json -o security/reports/bandit-report.json
pip-audit -r src/app/requirements.txt -f json -o security/reports/pip-audit-report.json
trivy fs . --scanners vuln,secret,misconfig -o security/reports/trivy-fs-report.txt
trivy image devsecops-vuln-app:lab -o security/reports/trivy-image-report.txt
trivy config k8s/base -o security/reports/trivy-config-report.txt
```
### 8. 创建 Kind 集群
```
kind create cluster --name devsecops-lab --config kind-cluster.yaml
```
### 9. 将镜像加载到 Kind 中
```
kind load docker-image devsecops-vuln-app:lab --name devsecops-lab
```
### 10. 部署 Kubernetes 清单
```
kubectl apply -k k8s/base
kubectl get pods -n devsecops
```
### 11. 端口转发应用
```
kubectl -n devsecops port-forward svc/demo-app-svc 8080:5000
```
打开:
```
http://localhost:8080/health
```
## 推荐的证据截图
请对以下内容进行截图:
| 截图 | 重要性说明 |
| ------------------------------ | --------------------------------- |
| GitHub 仓库结构 | 展示专业的组织结构 |
| GitHub Actions 安全门禁 | 展示 CI/CD 自动化 |
| Bandit 输出 | SAST 证据 |
| pip-audit 输出 | 依赖项安全证据 |
| Trivy 镜像扫描 | 容器安全证据 |
| Docker 非 root 用户 | 容器加固证明 |
| Kubernetes pods 运行中 | 部署证明 |
| RBAC `can-i` 拒绝访问 secret | 最小权限证明 |
| NetworkPolicy 阻止的流量 | 零信任证明 |
| Pod Security 阻止的特权 Pod | Admission control 证明 |
| ArgoCD 同步健康 | GitOps 证明 |
| ArgoCD 自我修复 | 偏差修正证明 |
| Cosign 验证 | 签名证明 |
| Syft SBOM 输出 | SBOM 证明 |
| Falco 告警 | 运行时检测证明 |
| Prometheus Falco 查询 | 指标证明 |
| Grafana 仪表板 | 可观测性证明 |
| kube-bench 输出 | CIS 风格的基准证据 |
## 安全策略
本仓库包含一项专业的安全策略:
```
SECURITY.md
```
它定义了:
* 支持的范围
* 超出范围的活动
* 已知的故意设置的漏洞
* 严重程度分类
* 报告期望
* Secret 处理
* 容器安全策略
* Kubernetes 安全策略
* 供应链策略
* 运行时检测策略
* 复测和证据策略
## 安全例外流程
本仓库包含一个专业的安全例外处理流程:
```
SECURITY_EXCEPTION_TEMPLATE.md
.github/ISSUE_TEMPLATE/security_exception_request.md
```
在以下情况下使用它:
* 为了实验室演示而故意保留某个漏洞。
* 某个发现属于误报。
* 易受攻击的依赖项无法立即修复。
* 存在补偿性控制。
* 风险被暂时接受。
* 需要复测计划和到期日期。
## 风险登记册
风险登记册跟踪:
| 字段 | 描述 |
| ---------- | ------------------------------ |
| 风险 ID | 唯一的风险参考标识 |
| 发现 | 安全问题或控制差距 |
| 严重程度 | Critical / High / Medium / Low |
| 可能性 | 漏洞利用概率 |
| 影响 | 业务/安全影响 |
| 负责人 | 责任人 |
| 状态 | 打开 / 已修复 / 已接受风险 |
| 证据 | 截图或报告路径 |
| 复测 | 验证方法 |
## 为什么该项目达到了企业级标准
该项目之所以达到企业级标准,是因为它不会止步于“我运行了一个工具”。
它包括:
* 清晰的项目范围
* 威胁建模
* 安全策略
* 例外处理
* 安全代码修复
* 安全门禁
* 证据截图
* 复测证明
* 合规性映射
* 审计摘要
* 运行时检测工程
* 事件响应手册
* 供应链安全证据
* Kubernetes 加固验证
* 专业文档
## 展示的技能
| 技能领域 | 展示方式 |
| -------------------- | --------------------------------------------- |
| DevSecOps | CI/CD 安全门禁和自动化 |
| AppSec | 漏洞测试和修复 |
| 云原生安全 | Kubernetes 加固和验证 |
| 容器安全 | Docker 加固和 Trivy 扫描 |
| 供应链安全 | Cosign、Syft、SBOM、来源证明 |
| 检测工程 | Falco 规则、MITRE 映射、Prometheus 告警 |
| 事件响应 | 运行手册和分诊步骤 |
| 合规性 | NIST、OWASP、CIS、SLSA、SOC 2、ISO 映射 |
| 报告 | 专业的 PDF 和证据索引 |
| GitHub 安全 | SECURITY.md、例外模板、Scorecard |
## 免责声明
本项目仅用于私有实验室、教育和作品展示目的。
漏洞应用程序、攻击模拟、不安全的清单以及权限提升演示均仅在受控的私有 VM 和 Kind Kubernetes 环境中执行。
未对任何第三方系统、公共目标、雇主系统或真实的生产环境进行测试。
标签:AI应用开发, Chrome Headless, CI/CD安全, DevSecOps, Kubernetes安全, Llama, 上游代理, 子域名突变, 安全合规, 网络代理, 自定义请求头, 请求拦截, 软件供应链安全, 运行时安全检测, 远程方法调用, 逆向工具