suryaprakash737/Secure_Rag_Auditor
GitHub: suryaprakash737/Secure_Rag_Auditor
一个基于 LangGraph 和 RAG 的安全日志分析平台,演示了内置身份验证、RBAC、prompt injection 防御和威胁情报富化的端到端安全审计工作流。
Stars: 0 | Forks: 0
# 安全 RAG Auditor
Secure RAG Auditor 是一个由 AI 驱动的安全日志分析平台,基于 FastAPI、PostgreSQL、ChromaDB、LangGraph、Docker 和 Groq Llama 3.1 构建。
它演示了如何构建一个安全敏感的 RAG 系统,包含身份验证、RBAC、prompt injection 防御、基于权限级别的检索、威胁情报富化、事件工作流编排、审计日志、CI 验证以及容器化部署。

## 项目概述
该平台允许经过身份验证的用户搜索安全日志并接收结构化的事件摘要。系统会阻止 prompt injection 尝试,根据服务器端的用户权限级别检索日志,利用威胁情报对检测到的指标进行富化,并将每次搜索记录到 PostgreSQL 中以便进行审计报告。
管理员可以导入日志,并查看由 PostgreSQL 审计数据支持的、适配仪表盘的报告 API。
## 功能
- 使用 Groq Llama 3.1 进行 AI 驱动的安全日志分析。
- 由 ChromaDB 支持的检索,带有安全级别元数据过滤。
- JWT 身份验证和基于角色的访问控制。
- 在检索或 LLM 分析之前进行 prompt injection 检测。
- 使用 SQLModel 进行 PostgreSQL 审计日志记录。
- 针对IP、域名和文件哈希的威胁情报富化。
- LangGraph 风格的事件分析工作流。
- 管理员报告 API 和只读仪表盘。
- 结合 PostgreSQL 的 Docker Compose 运行时。
- 包含编译、测试、Compose 验证和 Docker 构建检查的 GitHub Actions CI。
- Pytest 覆盖了身份验证、RBAC、prompt 防御、威胁情报、工作流和管理员路由。
## 安全控制
### JWT 身份验证
用户注册并登录以接收 bearer token。受保护的路由使用 token 验证从 PostgreSQL 中检索当前用户。
### RBAC
通过可重用的 FastAPI 依赖项来执行角色控制。
- `analyst`:可以搜索安全日志。
- `admin`:可以导入日志并访问管理员报告。
### 基于权限级别的检索
`/search` 路由会忽略客户端提供的权限级别值,并使用来自 PostgreSQL 的 `current_user.clearance_level`。
### Prompt Injection 防御
系统会阻止已知的 prompt injection 模式,例如指令覆盖、角色劫持、prompt 提取和越狱尝试。
### 审计日志记录
搜索活动会记录到 PostgreSQL 中,包含时间戳、查询、用户权限级别、风险等级、日志计数和阻止状态。
## 架构图

```
User Query
-> JWT Authentication
-> Prompt Injection Defense
-> Clearance-Aware Retrieval
-> Threat Intelligence Enrichment
-> LangGraph Incident Workflow
-> Groq LLM Analysis
-> PostgreSQL Audit Logging
```
## 截图
启动应用后,请访问以下页面:
- 登录页:`http://localhost:8000/`
- API 文档:`http://localhost:8000/docs`
- 管理员仪表盘:`http://localhost:8000/admin/dashboard`
- 架构图资源:`http://localhost:8000/static/architecture.svg`
## API 端点
| 方法 | 端点 | 描述 |
| --- | --- | --- |
| `GET` | `/` | 专业登录页 |
| `GET` | `/health` | 健康检查 |
| `POST` | `/register` | 注册用户 |
| `POST` | `/login` | 签发 JWT bearer token |
| `POST` | `/search` | 经过身份验证的安全日志分析 |
| `POST` | `/ingest` | 仅限管理员的日志导入 |
| `GET` | `/admin/stats` | 仅限管理员的审计指标 |
| `GET` | `/admin/recent-audits` | 仅限管理员的最近审计记录 |
| `GET` | `/admin/dashboard` | 仅限管理员的只读仪表盘 |
## 身份验证流程
1. 使用 `/register` 注册。
2. 使用 `/login` 登录。
3. 复制返回的 `access_token`。
4. 对受保护的端点使用 `Authorization: Bearer `。
5. API 解码 JWT,读取 `sub` 声明,从 PostgreSQL 加载用户,并验证用户是否处于活跃状态。
## RBAC 流程
1. 受保护的路由调用 `get_current_user()`。
2. 仅限管理员的路由调用 `require_role(["admin"])`。
3. 如果不允许该用户角色,API 将返回 `403 Insufficient permissions`。
4. `/search` 依然对经过身份验证的用户开放,并从数据库用户记录中获取权限级别。
## Docker 设置
设置环境变量:
```
export GROQ_API_KEY=your_groq_api_key
export SECRET_KEY=change_this_secret
```
启动技术栈:
```
docker compose up --build
```
服务:
- `http://localhost:8000` 上的 FastAPI 应用
- PostgreSQL 16
- ChromaDB 持久化挂载在 `./chroma_db:/app/chroma_db`
## 本地开发
```
python -m venv secureRag_Environment
pip install -r requirements.txt
uvicorn app.main:app --reload
```
所需环境变量:
```
GROQ_API_KEY=your_groq_api_key
SECRET_KEY=change_this_secret
DATABASE_URL=postgresql+psycopg://postgres:postgres@localhost:5432/secure_rag_auditor
```
## CI/CD 流水线
GitHub Actions 会在推送和拉取请求时运行:
- 检出代码库。
- 设置 Python 3.11。
- 安装依赖。
- 使用 `python -m compileall app` 编译应用。
- 运行导入冒烟测试。
- 运行 `pytest -q`。
- 验证 Docker Compose。
- 构建 Docker 镜像。
## 测试
运行:
```
pytest -q
```
当前测试覆盖率包括:
- Prompt injection 检测。
- JWT 创建和解码。
- 密码哈希和验证。
- RBAC 角色检查。
- 威胁情报富化。
- LangGraph 事件工作流。
- 管理员路由可调用性和访问控制行为。
## 部署
该项目已通过 Docker Compose 实现容器化就绪。若要进行托管部署,请提供:
- `DATABASE_URL`
- `SECRET_KEY`
- `GROQ_API_KEY`
- 用于 ChromaDB 的持久化存储
- 兼容 PostgreSQL 的数据库
## 工程成果
- 使用 SQLModel 将审计日志记录从 SQLite 迁移到 PostgreSQL。
- 实现了 JWT 身份验证和 RBAC。
- 使用 Docker Compose 对平台进行容器化。
- 添加了 GitHub Actions CI 验证。
- 构建了 prompt injection 检测引擎。
- 添加了基于 LangGraph 的事件分析工作流。
- 集成了确定性的威胁情报富化 pipeline。
- 添加了结构化日志记录和全局错误处理。
- 添加了适配仪表盘的管理员报告 API。
## 面试讨论点
### 为什么使用 PostgreSQL 替代 SQLite
SQLite 对于早期原型设计很有用,但 PostgreSQL 更适合用于生产环境的审计日志记录,因为它支持并发访问、托管部署、更强大的运维工具以及可扩展的报告。
### 为什么添加 JWT
JWT 身份验证为 API 提供了一个便携的身份层。它允许受保护的端点一致地解析当前用户,并执行服务器端的访问决策。
### 为什么添加 RBAC
安全平台需要职责分离。Analyst 可以搜索日志,而 admin 可以导入日志并审查审计遥测数据。
### 为什么添加 Docker Compose
Docker Compose 通过将 FastAPI 和 PostgreSQL 结合在一起并使用一致的环境配置运行,使得应用具有可复现性。
### 为什么添加 GitHub Actions
CI 通过依赖安装、编译、测试、Docker Compose 验证和 Docker 镜像构建检查自动验证代码库。
### 为什么添加 LangGraph
安全调查是多步骤的工作流。LangGraph 提供了一种结构化的方式,将验证、检索、富化、分析和响应验证建模为独立的阶段。
### 为什么添加威胁情报富化
仅靠原始日志检索不足以进行安全分析。富化在 LLM 生成摘要之前,增加了指标声誉和威胁分类。
## 未来改进
- 外部威胁情报集成。
- SIEM 导出支持。
- 更详细的 SOC 仪表盘视图。
- Alembic 迁移。
- OpenTelemetry 追踪。
- 云部署清单。
- 多租户组织支持。
- 用于事件响应的人工审批工作流。
## 在线演示
基础 URL:
```
https://secure-rag-auditor.onrender.com
```
Swagger 文档:
```
https://secure-rag-auditor.onrender.com/docs
```
标签:AV绕过, FastAPI, LangGraph, 威胁情报, 开发者工具, 检索增强生成, 测试用例, 请求拦截, 身份与访问控制, 逆向工具