Shivkanya-04/Secure-Log-Anomaly-Detection-API
GitHub: Shivkanya-04/Secure-Log-Anomaly-Detection-API
基于 FastAPI 的生产级微服务,通过规则匹配和 Shannon 熵对日志行进行安全异常检测,并内置完整 DevSecOps 流水线保障交付安全。
Stars: 1 | Forks: 0
# 安全日志异常检测 API
一个生产就绪的 FastAPI 微服务,用于检测日志行中的异常(SQL 注入、路径遍历、命令执行、高熵),具备 **JWT 认证**、**bcrypt 哈希**、**速率限制**以及一个完整的 DevSecOps CI/CD pipeline(Bandit、pip‑audit、Trivy),该 pipeline 会阻止存在严重漏洞的构建。
## 🚀 功能
- 基于 bcrypt 密码哈希的 **JWT 认证**
- **异常检测** – 基于规则(SQLi、路径遍历、命令执行)+ Shannon 熵
- **安全监控** – 登录失败突发(5 次失败/60 秒)、IP 速率限制(100 次请求/60 秒)、错误突发
- **输入验证** – 拒绝空或过长的日志行
- 使用 Docker **容器化**
- **CI/CD pipeline** (GitHub Actions) – 运行 Bandit SAST、pip‑audit、pytest、Docker 构建、Trivy 镜像扫描,并且在遇到 CRITICAL 漏洞时**失败**
- **云部署就绪** – 包含 Render 部署步骤(添加 secrets 以启用)
## 📁 项目结构
```
├── .github/workflows/
│ └── ci-cd.yml # DevSecOps pipeline
├── tests/
│ └── test_api.py
├── Dockerfile
├── requirements.txt
├── main.py
├── security_monitor.py
├── middleware.py
└── README.md
```
## 🛠️ 本地设置
### 前置条件
- Python 3.11+
- Docker(可选,用于容器化运行)
### 1. 克隆仓库
```
git clone https://github.com/Shivkanya-04/Secure-Log-Anomaly-Detection-API.git
cd Secure-Log-Anomaly-Detection-API
```
2. 安装依赖
```
pip install -r requirements.txt
```
3. 运行 API
```
uvicorn main:app --reload
```
4. 测试端点
获取 JWT token:
```
curl -X POST http://localhost:8000/token \
-d "username=admin&password=SecurePass123!"
```
分析日志行(需要 token):
```
TOKEN=
curl -X GET "http://localhost:8000/detect?log_line=admin%27%20OR%201=1--" \
-H "Authorization: Bearer $TOKEN"
```
预期响应:
```
json
{
"is_anomaly": true,
"findings": ["SQL injection"],
"entropy": 3.51
}
```
使用 Docker 运行
```
docker build -t log-anomaly-api .
docker run -d -p 8000:8000 --name my-api log-anomaly-api
```
针对 http://localhost:8000 测试相同的 curl 命令。
### CI/CD Pipeline (GitHub Actions)
工作流 ```(.github/workflows/ci-cd.yml) ```在每次推送到 main 时运行:
| 步骤 | 工具 | 目的 |
| :--- | :--- | :--- |
| SAST | Bandit | 查找 Python 代码中的安全问题 |
| 依赖 | 扫描 pip‑audit | 检查包中的已知漏洞 |
| 单元测试 | pytest | 验证 API 行为(导入修复待处理) |
| 镜像构建 | Docker | 构建容器 |
| 容器扫描 | Trivy | 扫描 CRITICAL 的操作系统和语言漏洞 |
| 部署 | Render | 添加 secrets 后部署到云端 |
安全门控:如果 Trivy 发现任何 CRITICAL 漏洞,pipeline 将以状态码 1 退出——防止部署不安全的镜像。
### 部署到 Render
1. 创建一个连接到你的 GitHub 仓库的 Web Service
2. 设置环境:Docker,端口 8000
3. 复制 Service ID 并生成 API Key
4. 在你的 GitHub 仓库中添加两个 secrets:
```RENDER_SERVICE_ID 和 RENDER_API_KEY```
5. 在下次推送后,部署作业将自动把你的 API 部署到公共 URL。
### 测试安全控制
| 控制 | 测试 |
| :--- | :--- |
| 登录失败突发 | 在 60 秒内发送 6 个错误密码 → ```429 Too Many Requests``` |
| 速率限制 | 在 60 秒内发送超过 100 个请求 → ```429 Too Many Requests``` |
| JWT 保护 | 不带 token 调用 /detect → ```401 Unauthorized``` |
| 输入验证 | 调用 /detect?log_line= → ```400 Bad Request``` |
🛡️ 安全功能摘要
1. JWT 认证(HS256,30 分钟过期)
2. bcrypt 密码哈希
3. 速率限制和登录突发检测(基于 IP)
4. 输入验证(长度、null 字节)
5. 安全标头(通过中间件)
6. CI/CD 安全扫描(Bandit、pip‑audit、Trivy)
7. 安全门控 – pipeline 在遇到 CRITICAL 漏洞时失败
标签:AI应用开发, AV绕过, CISA项目, DevSecOps, DOE合作, FastAPI, Web安全, 上游代理, 安全规则引擎, 异常检测, 蓝队分析, 请求拦截, 逆向工具