kowshalyagp/PromptShield-AI-Security-Gateway

GitHub: kowshalyagp/PromptShield-AI-Security-Gateway

PromptShield 是一个部署在客户端与 LLM 之间的生产级反向代理安全网关,通过多引擎检测管线实时拦截 prompt 注入与越狱攻击,并提供审计日志、RBAC 权限控制和自动化红队测试能力。

Stars: 0 | Forks: 0

# PromptShield:大型语言模型 AI 安全网关 [![Python 版本](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/) [![React 版本](https://img.shields.io/badge/react-18.x-cyan.svg)](https://react.dev/) [![FastAPI 版本](https://img.shields.io/badge/fastapi-0.111.0-emerald.svg)](https://fastapi.tiangolo.com/) [![许可证](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) **PromptShield** 是一个生产级、高性能的 AI 安全网关,旨在保护大型语言模型 (LLM) 免受现实世界中的对抗性攻击。作为反向代理部署在您的客户端和上游 LLM(例如 Google Gemini)之间,PromptShield 会执行实时检查、威胁评分、速率限制和深度审计日志记录,以确保安全、合规的 AI 交互。 ## 目录 1. [项目概述与问题陈述](#project-overview--problem-statement) 2. [核心目标](#key-objectives) 3. [核心功能](#core-features) 4. [系统架构](#system-architecture) 5. [技术栈](#technology-stack) 6. [安装与本地设置](#installation--local-setup) 7. [环境变量](#environment-variables) 8. [Docker 部署指南](#docker-deployment-guide) 9. [REST API 文档](#rest-api-documentation) 10. [红队安全评估](#red-team-security-evaluation) 11. [安全配置与 RBAC](#security-configurations--rbac) 12. [Prompt 评估工作流演练](#walkthrough-of-prompt-evaluation-workflow) 13. [未来增强功能](#future-enhancements) 14. [许可证与贡献者](#license--contributors) ## 项目概述与问题陈述 随着大型语言模型 (LLM) 日益融入企业应用,它们成为新型安全威胁的主要目标。传统的 Web 应用防火墙 (WAF) 无法识别语义攻击。PromptShield 通过拦截和评估传入的 prompt 来填补这一空白,主要针对: * **Prompt 注入:** 试图劫持模型的核心指令集。 * **越狱:** 旨在绕过安全防护措施的混淆策略。 * **系统 Prompt 提取与 Prompt 泄露:** 通过社会工程学窃取私密的开发者指南。 * **有害内容:** 生成有毒材料、恶意软件或非法化合物的指令。 * **数据渗出:** 恶意尝试将系统 token、环境配置或数据库记录 smuggling 到网络边界之外。 ## 核心目标 1. **语义安全:** 使用多层启发式、regex 和基于模型的分类器来拦截并对语义威胁进行评分。 2. **速率限制:** 保护上游 LLM endpoint 免受拒绝服务 和 API 配额滥用。 3. **全面审计:** 记录每个请求的原始输入、输出、威胁风险指标和内部网关决策,以满足法律和取证合规要求。 4. **管理可观测性:** 为安全官员提供高保真控制仪表板,具备交互式分析、配置开关和用户角色管理功能。 5. **对抗性模拟:** 维护一个持续自动化的红队评估套件,对网关安全策略进行基准测试。 ## 核心功能 * **多引擎防御 pipeline:** * *规则评估器:* 对已知的注入特征进行快速的 regex 检查。 * *语义评估器:* 与已知越狱数据库进行向量相似度比较。 * *模型分类器:* 使用自定义安全启发式方法进行高级威胁类别识别。 * *响应护栏:* 对下游模型输出应用实时的屏蔽和过滤规则。 * **细粒度身份验证与 RBAC:** 安全的基于 token 的 JWT 身份验证,将管理权限(`Admin`)与标准查询用户(`User`)区分开来。 * **交互式分析控制台:** 使用 Recharts 可视化威胁分布、随时间变化的流量和延迟指标。 * **动态设置调整:** 直接在 UI 中实时调整速率限制、风险阈值和日志详细级别,无需重启服务器。 * **自动化红队模拟器:** 持续的安全基准测试工具,涵盖 9 个不同威胁类别的 200 个对抗性测试用例,并支持 CSV/JSON 导出。 ## 系统架构 以下框图概述了通过 PromptShield 的数据流: ``` graph TD User[Client Application] -->|1. Post Prompt| Gateway[API Gateway Controller] Gateway -->|2. Check Limit| RateLimiter[InMemoryRateLimiter] RateLimiter -->|3. Evaluate Safety| SecurityEngine[SecurityEngine] subgraph SecurityEngine Pipeline SecurityEngine --> Rules[RulesEvaluator regex] SecurityEngine --> Semantic[SemanticEvaluator similarity] SecurityEngine --> Classifier[ModelClassifier heuristics] end Rules --> Score[Calculate Composite Score] Semantic --> Score Classifier --> Score Score -->|4. Decision: Blocked| ReturnError[Return Blocked Response + Log] Score -->|4. Decision: Allowed| Gemini[Upstream Gemini API] Gemini -->|5. Verify Output| ResponseGuard[ResponseGuardrail] ResponseGuard -->|6. Save Audit Log| Audit[AuditLogger SQLite] ResponseGuard -->|7. Return Response| User ``` ## 技术栈 ### 后端 * **框架:** FastAPI (Python 3.11+) * **ASGI Server:** Uvicorn * **数据库 ORM:** SQLAlchemy (Asyncio) * **驱动:** aiosqlite (SQLite) * **安全与 JWT:** Passlib (Bcrypt), PyJWT ### 前端 * **构建工具 / 框架:** Vite + React 18 * **样式:** CSS + Tailwind CSS * **图表与可视化:** Recharts * **图标:** Lucide React ## 安装与本地设置 ### 后端设置 1. 导航至 backend 目录: cd backend 2. 创建并激活虚拟环境: python -m venv venv # 在 Windows 上: .\venv\Scripts\activate # 在 Linux/macOS 上: source venv/bin/activate 3. 安装依赖项: pip install -r requirements.txt 4. 从模板创建您的 `.env` 配置文件: cp .env.example .env 5. 初始化并启动后端开发服务器: python -m uvicorn app.main:app --host 127.0.0.1 --port 8000 --reload ### 前端设置 1. 导航至 frontend 目录: cd ../frontend 2. 安装 npm 包: npm install 3. 启动 Vite React 开发服务器: npm run dev 4. 通过 `http://localhost:5173` 访问 Web 仪表板。 5. 使用默认管理员账户登录: * **用户名:** `admin` * **密码:** `adminpassword123` ## 环境变量 PromptShield 使用以下变量进行配置: | 变量 | 描述 | 默认值 | | :--- | :--- | :--- | | `PROJECT_NAME` | 应用程序的显示名称 | `"PromptShield Gateway"` | | `SECRET_KEY` | JWT 签名密钥 | `"supersecretdevelopmentkeythatisthirtytwobyteslong"` | | `DATABASE_URL` | SQLite 数据库连接 URI | `"sqlite+aiosqlite:///./promptshield.db"` | | `GEMINI_API_KEY` | 上游 Google Gemini API key | `""` | | `RATE_LIMIT_WINDOW_SECONDS` | 速率限制的时间窗口(以秒为单位) | `60` | | `RATE_LIMIT_MAX_REQUESTS` | 每个 IP 在每个时间窗口内允许的请求数 | `10` | | `RISK_THRESHOLD_MALICIOUS` | 阻断 prompt 的最低分数 (0-100) | `70` | | `RISK_THRESHOLD_SUSPICIOUS` | 标记 prompt 的最低分数 (0-100) | `30` | | `LOGGING_LEVEL` | 应用程序日志详细级别 | `"INFO"` | ## Docker 部署指南 ### 前置条件 确保您的主机系统上已安装 [Docker](https://www.docker.com/) 和 [Docker Compose](https://docs.docker.com/compose/)。 ### 构建并启动服务 1. 转到包含 `docker-compose.yml` 的根目录。 2. 在环境 shell 中配置您的外部 Gemini 密钥: ### 配置您的 Gemini API key **Linux/macOS** ``` export GEMINI_API_KEY="YOUR_GEMINI_API_KEY" ``` **Windows PowerShell** ``` $env:GEMINI_API_KEY="YOUR_GEMINI_API_KEY" ``` ``` 3. Build and launch the containers in detached mode: ```bash docker-compose up --build -d ``` 4. 验证正在运行的容器: docker-compose ps ### 服务映射 * **Web 控制台仪表板:** `http://localhost:80`(容器 nginx 映射到主机 80 端口) * **FastAPI API Swagger 文档:** `http://localhost:8000/docs` * **SQLite 卷数据:** 作为命名卷挂载在 `backend_db` 中并映射至 `/app/db_data`。 ## REST API 文档 详细的 REST API 路由说明: ### 网关 Endpoint (`tags: ["AI Security Gateway"]`) * `POST /api/v1/gateway/chat` - 提交 prompt 以进行网关验证和 Gemini 评估。 ### 身份验证与用户 RBAC (`tags: ["Authentication & Admin RBAC"]`) * `POST /api/v1/auth/login` - 验证用户凭据并签发 JWT token。 * `GET /api/v1/auth/me` - 获取当前活动用户的个人资料详情。 * `GET /api/v1/auth/users` - 列出所有已注册的用户(仅限管理员)。 * `POST /api/v1/auth/users` - 注册新用户账号(仅限管理员)。 * `PUT /api/v1/auth/users/{user_id}/role` - 更改用户角色(仅限管理员)。 * `PUT /api/v1/auth/users/{user_id}/disable` - 激活/停用用户账号(仅限管理员)。 ### 红队套件 (`tags: ["Red-Teaming Suite"]`) * `POST /api/v1/redteam/run` - 触发红队评估套件(仅限管理员)。 * `GET /api/v1/redteam/reports` - 列出所有历史评估运行记录(仅限管理员)。 * `GET /api/v1/redteam/reports/{report_id}` - 获取特定运行的详细测试日志(仅限管理员)。 * `GET /api/v1/redteam/reports/{report_id}/export` - 将运行数据导出为 CSV/JSON 格式(仅限管理员)。 ### 威胁日志与系统配置 * `GET /api/v1/logs` - 查询、过滤和分页安全审计日志(仅限管理员)。 * `GET /api/v1/settings` - 查询动态配置(仅限管理员)。 * `PUT /api/v1/settings` - 更新速率限制、阈值和日志级别(仅限管理员)。 ## 红队安全评估 该框架包含一个内置的自动化红队系统。测试运行程序会遍历 `redteam_dataset.json` 中的对抗性输入,并评估 `SecurityEngine` 的防御响应。 ### 自动运行测试 您可以使用 pytest 执行所有系统测试套件: ``` cd backend $env:PYTHONPATH="." .\venv\Scripts\pytest ``` ## 未来增强功能 1. **上游负载均衡:** 在多个 LLM 后端(Gemini、OpenAI、Anthropic)之间路由流量。 2. **分布式速率限制:** 从内存映射过渡到 Redis,以支持无状态集群。 3. **Active Directory / OAuth 集成:** 支持标准 OAuth2 和单点登录 (SSO) 协议。 4. **高级向量数据库:** 集成 PGVector 或 Milvus,以支持数百万个语义越狱模板。 ## 许可证与贡献者 * **开发者:** Kowsalya(毕业设计项目) * **许可证:** MIT License。有关更多详细信息,请参阅 [LICENSE](LICENSE)。
标签:AI安全网关, AV绕过, DLL 劫持, FastAPI, Python, React, Syscalls, 一键部署, 大语言模型, 提示词注入防护, 无后门, 红队评估, 自定义脚本, 请求拦截, 逆向工具