IzharHaq1986/secure-ml-deployment-pipeline
GitHub: IzharHaq1986/secure-ml-deployment-pipeline
一个端到端的安全机器学习部署流水线,解决供应链安全与策略管控问题。
Stars: 0 | Forks: 0
# 安全机器学习部署流水线

      
## 项目描述
本仓库展示了一个端到端的安全机器学习部署流水线。
它展示了以下功能:
- 容器化的机器学习服务部署
- 通过 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. 容器运行

### 2. CI 流水线执行

### 3. 策略管控(拒绝操作)

### 4. 测试执行结果

## 关于本项目
本仓库展示了:
- 安全的机器学习部署工作流
- 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, 子域名突变, 安全机器学习, 安全管道, 安全部署, 安全防御评估, 审计日志, 容器化, 密钥泄露防护, 无后门, 机器学习安全, 硬件无关, 端口硬化, 策略引擎, 策略执行, 签名与验证, 网络安全挑战, 自动笔记, 请求拦截, 逆向工具, 部署验证, 镜像签名, 高危部署拦截