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安全, 上游代理, 安全规则引擎, 异常检测, 蓝队分析, 请求拦截, 逆向工具