zittenyetten/Azure-based_Enterprise-RAG-Prompt-Injection-

GitHub: zittenyetten/Azure-based_Enterprise-RAG-Prompt-Injection-

面向企业的安全 RAG PoC,通过多层安全 pipeline 实现基于角色的权限过滤、prompt injection 防护和响应脱敏,为生产级 Azure 部署提供可验证的安全架构原型。

Stars: 0 | Forks: 0

# Azure-ready 安全企业级 RAG PoC 这是一个假设美妆企业的、基于权限的 Secure RAG PoC。早期版本不连接实际的 Azure,而是使用本地 JSON 数据、SQLite 日志数据库、FastAPI、Streamlit、基于规则的安全引擎、keyword retrieval 和 Mock LLM 运行。 ## 架构 - `backend/`:FastAPI API 和安全 RAG pipeline - `frontend/app.py`:用户 Chat UI - `frontend/admin_dashboard.py`:管理员仪表盘 - `data/`:示例用户、文档、攻击测试集 - `tests/`:Prompt Analyzer、Risk Score、Permission Filter、Response Filter、攻击场景测试 - `docs/`:架构、安全 pipeline、API、运行/测试指南文档 请从 [docs/README.md](./docs/README.md) 开始阅读详细文档。 请求流程: 1. User Context Resolver 加载用户角色、groups、clearance、允许/拒绝的数据类型。 2. Prompt Analyzer 检测 prompt injection、jailbreak、系统 prompt 窃取和敏感数据请求。 3. Risk Score Engine 计算 LOW、MEDIUM、HIGH、CRITICAL 风险等级。 4. Permission Filter 仅允许用户权限可访问的文档作为检索目标。 5. LocalKeywordSearchProvider 基于 keyword 检索相关文档。 6. Retrieval Sanitizer 移除检索到的 chunk 中的间接 prompt injection/RAG poisoning 语句。 7. MockLLMProvider 仅基于经过净化的 context 生成回答。 8. Response Filter 对个人信息和超出权限的敏感信息进行脱敏或拦截。 9. 所有请求、检测、检索结果和拦截记录都会存储在 SQLite 中。 ## 运行 最简单的本地原型运行方式: ``` .\run_prototype.ps1 ``` 运行后在浏览器中打开 `http://localhost:8501`,即可在同一页面查看 Chat、Admin Dashboard 和 Sample Data。此模式不会单独启动 FastAPI 服务器。 如果已安装依赖项,将自动跳过安装过程。若要强制重新安装,请使用 `.\run_prototype.ps1 -Install`;若要同时跳过安装检查,请使用 `.\run_prototype.ps1 -SkipInstall`。 手动运行: ``` python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt streamlit run prototype_app.py ``` 如果希望将 FastAPI 和 Streamlit 分开运行,请使用以下方法。 ``` python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt uvicorn backend.main:app --reload --host 0.0.0.0 --port 8000 ``` 在另一个终端中运行 Chat UI: ``` .\.venv\Scripts\Activate.ps1 streamlit run frontend/app.py ``` 管理员仪表盘: ``` .\.venv\Scripts\Activate.ps1 streamlit run frontend/admin_dashboard.py ``` API 文档可在 `http://localhost:8000/docs` 查看。 ## API - `POST /chat` - `GET /users` - `GET /users/{user_id}` - `GET /documents` - `GET /documents/{doc_id}` - `POST /documents/ingest` - `GET /logs/queries` - `GET /logs/detections` - `GET /logs/retrievals` - `GET /admin/stats` ## 用户角色 示例用户包括 `general_employee`、`cs_staff`、`marketing_staff`、`rnd_staff`、`manufacturing_staff`、`hr_staff`、`finance_staff`、`legal_staff`、`admin`。每个用户均具有 clearance level、groups、allowed data types 和 denied data types。 ## 数据分类 - Level 1 Public:品牌介绍、产品说明、FAQ - Level 2 Internal:CS 手册、营销活动指南、入职指南 - Level 3 Confidential:销售业绩、客户订单样本、制造 SOP - Level 4 Restricted:产品配方、薪资信息、投资资料、合同 ## 攻击场景测试 ``` pytest ``` 包含的测试: - 薪资信息查询 prompt injection - 营销人员请求绕过限制获取产品配方 - 系统 prompt 窃取请求 - RAG poisoning chunk 移除 - 对 CS 权限用户的客户电话号码进行脱敏 - 正常的 Public FAQ 查询 ## Azure 扩展点 当前 placeholder: - `AzureAISearchProvider`:Azure AI Search 集成位置 - `OpenAIProvider`:OpenAI/Azure OpenAI 集成位置 - `AzureKeyVaultSecretManager`:Azure Key Vault 集成位置 - `ToolPermissionGateway`、`HumanApprovalGateway`、`EnterpriseToolConnector`:Agent/Tool 扩展位置 未来扩展: - Microsoft Entra ID SSO - Azure AI Search document-level access control - Microsoft Purview sensitivity label - Azure AI Content Safety Prompt Shields - Azure Monitor/Application Insights - Human approval workflow - Foundry Agent Service 部署 ## 限制 此 PoC 是一个用于展示安全流程的本地实现。检索基于 keyword,且基于规则的检测无法替代实际生产环境中的安全产品。在生产环境中,必须结合使用 Azure AI Search、Azure OpenAI、Content Safety、Purview、Entra ID、Key Vault 和集中式日志记录。
标签:AV绕过, FastAPI, Kubernetes, Streamlit, Streamlit, 人工智能, 大语言模型安全, 安全规则引擎, 机密管理, 检索增强生成, 用户模式Hook绕过, 访问控制, 访问控制, 逆向工具