IzharHaq1986/secure-ml-deployment-pipeline

GitHub: IzharHaq1986/secure-ml-deployment-pipeline

一个端到端的安全机器学习部署流水线,解决供应链安全与策略管控问题。

Stars: 0 | Forks: 0

# 安全机器学习部署流水线 ![CI Pipeline](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/64b0bef6bb004528.svg) ![Python](https://img.shields.io/badge/Python-3.12-blue) ![FastAPI](https://img.shields.io/badge/FastAPI-0.129-green) ![Docker](https://img.shields.io/badge/Docker-Container-blue) ![GitHub Actions](https://img.shields.io/badge/GitHub_Actions-CI/CD-black) ![Trivy](https://img.shields.io/badge/Security-Trivy-red) ![Cosign](https://img.shields.io/badge/SupplyChain-Cosign-purple) ![SBOM](https://img.shields.io/badge/SBOM-SPDX-orange) ## 项目描述 本仓库展示了一个端到端的安全机器学习部署流水线。 它展示了以下功能: - 容器化的机器学习服务部署 - 通过 SBOM 生成、镜像签名和验证实现的供应链安全 - 基于策略的代理安全管控 - 由 CI/CD 驱动的验证和部署检查 该项目设计为一个高质量的示例,适用于安全的机器学习系统、DevOps 工作流以及以安全为重点的部署实践。 ## 功能特性 - 基于 FastAPI 的推理服务 - 运行时强化的 Docker 部署 - 基于 Docker Compose 的部署验证 - Trivy 漏洞扫描 - 使用 Syft 生成 SBOM - Cosign 镜像签名与验证 - 基于策略的代理操作管控 - 高风险部署门控 - 策略决策的审计日志 - 使用 pytest 的自动化测试覆盖 - 带有 GitHub Actions 的 CI 流水线 ## 项目结构 ``` secure-ml-deployment-pipeline/ ├── app/ │ ├── main.py │ └── security/ │ ├── exceptions.py │ ├── models.py │ └── policy_engine.py ├── docs/ │ ├── screenshots/ │ │ ├── ci-pipeline-success.png │ │ ├── container-running.png │ │ ├── policy-denied-log.png │ │ └── tests-passed.png │ └── security/ │ └── agent-security-model.md ├── tests/ │ └── test_policy_enforcement.py ├── .github/ │ └── workflows/ │ └── ci.yml ├── docker-compose.yml ├── requirements.txt ├── requirements-dev.txt ├── project_state.md └── README.md ``` ## 快速开始 ### 前置条件 - Python 3.12+ - Docker - Git ## 设置 ``` git clone https://github.com/IzharHaq1986/secure-ml-deployment-pipeline.git cd secure-ml-deployment-pipeline python -m venv venv source venv/bin/activate pip install -r requirements.txt ``` ## 运行应用 ``` uvicorn app.main:app --reload ``` ## 运行测试 ``` python -m pytest -v ``` ## API 端点 ### 健康检查 ``` GET /health ### 受保护的 Health Check POST /agent/actions/validate ### 示例请求: { "action": "read_status", "resource": "service-health", "source": "agent", "parameters": {}, "risk_level": "low" } ``` ## 可验证的部署路径 本仓库展示了一个注重安全的 ML 部署路径: - 模型服务构建 - 容器烟雾测试验证 - 漏洞扫描 - SBOM 生成 - 容器镜像签名 - 签名验证 - 部署验证 ## 架构图 ``` flowchart TD A[Code Push] --> B[CI Pipeline] B --> C[Tests] C --> D[Build Image] D --> E[Trivy Scan] E --> F[Generate SBOM] F --> G[Cosign Sign] G --> H[Verify Signature] H --> I[Deploy] I --> J[Health Check] J --> K[FastAPI Service] K --> L[Config Validation] K --> M[Policy Engine] M --> N[Allow or Deny] N --> O[Audit Log] ``` ## 技术深入 - [安全机器学习部署流水线的架构](docs/articles/secure-ml-pipeline-teardown.md) - [验证是不够的:将检查转化为强制](docs/articles/verification-as-enforcement.md) ## 验证供应链 ### 1. 拉取镜像 ``` docker pull ghcr.io/izharhaq1986/secure-ml-deployment-pipeline:latest ``` ### 2. 验证镜像签名(Cosign OIDC) ``` cosign verify \ --certificate-identity "https://github.com/IzharHaq1986/secure-ml-deployment-pipeline/.github/workflows/cosign-sign.yml@refs/heads/main" \ --certificate-oidc-issuer "https://token.actions.githubusercontent.com" \ ghcr.io/izharhaq1986/secure-ml-deployment-pipeline:latest ``` ### 3. 检查 SBOM(SPDX) ``` gh run download -n sbom --repo IzharHaq1986/secure-ml-deployment-pipeline cat *.spdx.json | jq '.packages[0:5]' ``` ### 4. 本地运行服务 ``` docker run -p 8000:8000 \ -e MODEL_NAME=fraud-detection-model \ ghcr.io/izharhaq1986/secure-ml-deployment-pipeline:latest ``` 测试: ``` curl http://127.0.0.1:8000/health ``` ## 证明内容 - 容器镜像已签名并可使用 GitHub OIDC 身份验证 - 构建流水线生成可追溯的 SBOM 以便依赖检查 - 部署可使用一致的运行时行为进行复现 - 安全检查在代码进入生产环境前自动强制执行 ## 安全工件 流水线生成并验证以下控制项: - 通过 GitHub Actions 进行容器运行时验证 - 基于 Trivy 的漏洞扫描 - SPDX SBOM 生成 - Cosign 无密钥签名 - 针对已发布 GHCR 镜像的签名验证 ## 基于环境的部署 部署层支持通过 Docker Compose 进行基于环境的配置。 ### 创建本地环境文件 复制示例文件: ``` cp .env.example .env ``` ## Kubernetes 部署(基线) 一个最小的 Kubernetes 部署包含在 `k8s/` 目录中。 ### 文件 - `k8s/deployment.yaml` → 带有探针和安全上下文的应用程序部署 - `k8s/service.yaml` → 内部 ClusterIP 服务 ### 离线验证清单 ``` kubeconform -strict -summary k8s/deployment.yaml k8s/service.yaml ``` ## 代理安全管控 该项目包含一个轻量级的策略管控层,用于对不受信的代理触发操作进行约束。 ### 实施的安全控制 - 集中式策略引擎用于操作强制 - 对未注册操作采用默认拒绝策略 - 对代理提交请求的有效输入边界进行验证 - 外部请求模型与内部强制模型明确分离 - 对策略违规返回受控的 HTTP 403 响应 - 策略审批与拒绝的审计日志 - 带有显式审批检查的高风险部署门控 ## 强制流程 代理请求 → 验证的 API 输入 → 内部动作模型 → 策略引擎 → 允许/拒绝决策 ## 示例保护操作 read_status - 低风险读取操作 - 仅允许来自已批准来源 deploy_model - 高风险部署操作 - 需要: - source="agent" - risk_level="high" - parameters.approved=true ## 可审计性 策略决策在运行时进行记录。 示例: - 批准的操作记录为 INFO - 拒绝的操作记录为 WARNING 这为本地运行、测试以及未来部署集成提供了最小的审计追踪。 ## 测试覆盖 策略强制行为由自动化测试覆盖,包括: - 公共健康端点 - 保护的健康端点 - 拒绝的策略路径 - 验证的低风险操作批准 - 拒绝未批准的部署 - 批准的高风险部署 ## 验证已发布镜像 示例验证流程: ``` IMAGE_URI=ghcr.io//@sha256: cosign verify \ --certificate-identity "https://github.com///.github/workflows/cosign-sign.yml@refs/heads/main" \ --certificate-oidc-issuer "https://token.actions.githubusercontent.com" \ "$IMAGE_URI" ``` ## 截图 ### 1. 容器运行 ![Container Running](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/d16f370b28004529.png) ### 2. CI 流水线执行 ![CI Pipeline](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/69949ed210004530.png) ### 3. 策略管控(拒绝操作) ![Policy Logs](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/e15c044063004532.png) ### 4. 测试执行结果 ![Tests Passed](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/ca7cf3bbf6004533.png) ## 关于本项目 本仓库展示了: - 安全的机器学习部署工作流 - DevOps 自动化与 CI/CD 集成 - 基于策略的安全管控用于 AI 代理 - 生产级仓库结构与实践 它适用于以下场景: - GitHub 个人主页 - Upwork 和自由职业平台资料 - 技术面试
标签:AV绕过, Container Security, Cosign, Docker, Docker Compose, FastAPI, GitHub Actions, Google Gemini, Image Signing, Lerna, Model Deployment, NIDS, Policy Enforcement, pytest, Python, SBOM, SEO: 安全ML, SEO: 安全部署管道, SPDX, Supply Chain Security, 子域名突变, 安全机器学习, 安全管道, 安全部署, 安全防御评估, 审计日志, 容器化, 密钥泄露防护, 无后门, 机器学习安全, 硬件无关, 端口硬化, 策略引擎, 策略执行, 签名与验证, 网络安全挑战, 自动笔记, 请求拦截, 逆向工具, 部署验证, 镜像签名, 高危部署拦截