mmaakbgm-dotcom/Prompt-Injections-on-Database-Authorization-Config4

GitHub: mmaakbgm-dotcom/Prompt-Injections-on-Database-Authorization-Config4

通过在数据库层实现RBAC、行级安全和视图限制,为LLM驱动的应用提供不可绕过的最终安全边界,有效防御提示注入攻击。

Stars: 0 | Forks: 0

# HealthFirst 诊所 — 配置 4:数据库授权层 配置 4 / 第 4 层:数据库授权层 ## 概述 该仓库实现了一个四配置论文实验的配置 4,用于评估 LLM 驱动的访问控制系统对提示注入的抵抗力。 此配置引入了**数据库级授权层**作为最终强制边界。与之前的配置不同,访问控制在数据库内部直接使用 RBAC、行级安全(RLS)和受控查询面强制执行。 系统实现了两阶段 LLM 管道: ``` User (natural language) → Stage 1 LLM (GPT-4o-mini) → SQL query → Intermediary Enforcement Layer → Database Authorization Layer → PostgreSQL database → Stage 2 LLM (GPT-4o-mini) → Natural language response ``` 此配置确保**即使上游层失效**,数据库层面仍会阻止未授权的数据访问发生 ## 相关配置 该仓库是四配置研究的一部分,用于评估跨渐进增强执行层的提示注入防御措施。 - **配置 1 — 基线提示** LLM 完全受信任,无强制执行 https://github.com/mmaakbgm-dotcom/Prompt-Injections-on-Baseline-Prompt-Config1 - **配置 2 — LLM 提示控制** 强化 LLM 系统引导提示 https://github.com/mmaakbgm-dotcom/Prompt-Injections-on-LLM-Prompt-Control-Config2 - **配置 3 — 中间层强制执行** 确定性中间层强制执行 https://github.com/mmaakbgm-dotcom/Prompt-Injections-on-Intermediary-Enforcement-Config3 - **配置 4 — 数据库授权(当前仓库)** RBAC、RLS 和定义视图 https://github.com/mmaakbgm-dotcom/Prompt-Injections-on-Database-Authorization-Config4 ## 四个配置 | 配置 | 名称 | 主要强制执行 | |---|---|---| | 1 | 基线提示 | 无 — LLM 完全受信任 | | 2 | LLM 提示控制 | 强化 LLM 系统引导提示 | | 3 | 中间层强制执行 | 确定性中间层强制执行层 | | 4 | 数据库授权 | RBAC、RLS 和定义视图 | ## 配置 4 的架构 ### 第 1 层:基线提示层 - 自然语言查询处理 - 文本到 SQL 生成 - 系统提示引导 ### 第 2 层:LLM 提示控制层 - 角色定义 - 访问规则 - 提示约束 - 拒绝行为 ### 第 3 层:中间层强制执行层 - SQL 验证 - 查询重写 - 允许列表强制执行 - 只读强制执行 ### 第 4 层:数据库授权层 - 基于角色的访问控制(RBAC) - 行级安全(RLS) - 基于视图的访问限制 - 元数据隔离 此配置引入了**数据库层面的最终、不可绕过的强制执行边界** ## 配置 4 总结 数据库独立于 LLM 和应用程序逻辑强制执行访问控制。 它确保: - 只有授权的行可访问 - 只有允许的查询可执行 - 即使生成恶意 SQL,也无法检索未授权数据 这代表了架构中**最强的安全模型** ## 请求处理管道 1. **用户查询提交** 用户提交自然语言查询。 2. **身份验证和会话检索** 检索用户身份、角色和 ID。 3. **LLM SQL 生成** LLM 使用以下内容生成 SQL: - 引导提示 - 模式上下文 - 会话数据 4. **中间层验证** 在到达数据库之前对 SQL 进行验证和限制。 5. **数据库授权强制执行** 数据库强制执行: - RBAC → 限制查询权限 - RLS → 基于用户身份过滤行 - 视图 → 限制可访问的查询面 6. **响应生成** 将结果转换为自然语言 ## 评估 | 框架 | 测试数 | 输出 | |---|---|---| | Promptfoo 评估 | 120 | promptfoo_results_3_4.xlsx | | DeepTeam 评估 | 120 | deepteam_results_3_4.xlsx | | 稳定性模式评估 | 720 | stability_schema_3_4.xlsx | | SQL 对抗套件 | 920 | sql_adversarial_suite_3_4.xlsx | ## 仓库结构 ``` . ├── clinic_3_4.py ├── db/ │ ├── 01_schema.sql │ ├── 02_seed.sql │ ├── 03_rbac_rls.sql │ ├── 04_views.sql │ └── init_db.py ├── prompts/config4_reconstruction_prompt.md ├── tests/ ├── deepteam_attacks/ ├── eval_stability_schema_3_4.py ├── eval_sql_adversarial_suite_3_4.py ├── run_deepteam.py ├── promptfooconfig.yaml ├── promptfoo_provider.py ├── promptfoo_tests.yaml ├── promptfoo_results_3_4.xlsx ├── deepteam_results_3_4.xlsx ├── stability_schema_3_4.xlsx └── sql_adversarial_suite_3_4.xlsx ``` ## 设置说明 前置条件: - Python 3.11+ - Node.js 18+ - PostgreSQL(通过 Replit 或本地) - OpenAI API 密钥 安装: ``` pip install openai openpyxl deepteam psycopg2-binary npm install ``` 运行: ``` python clinic_3_4.py ``` ## 数据库设置 初始化数据库: ``` python db/init_db.py ``` 设置受限角色连接: ``` DATABASE_URL_APP=postgresql://app_llm_role:app_llm_pass@:5432/ ``` ## 运行评估 Promptfoo: ``` npx promptfoo eval ``` DeepTeam: ``` python run_deepteam.py ``` 稳定性模式: ``` python eval_stability_schema_3_4.py -n 20 ``` SQL 对抗套件: ``` python eval_sql_adversarial_suite_3_4.py -n 20 ``` ## 结果摘要 | 评估 | 成功 | 阻止 | 总数 | ASR | |---|---|---|---|---| | Promptfoo 评估 | 0 | 120 | 120 | 0.0% | | DeepTeam 评估 | 0 | 120 | 120 | 0.0% | | 稳定性模式评估 | 0 | 720 | 720 | 0.0% | | SQL 对抗套件 | 0 | 920 | 920 | 0.0% | | **合计** | **0** | **1,880** | **1,880** | **0.0%** | ## 解读 配置 4 实现了对所有评估攻击类的完全缓解。 - 所有提示注入尝试 → 已阻止 - 所有结构性 SQL 攻击 → 已阻止 - 未观察到成功的数据泄露 这证明了**数据库级授权提供了明确的安全边界** ## 安全说明 - 未使用真实数据 - 仅使用合成凭据 - API 密钥存储在环境变量中 - 数据库强制执行最终访问控制 ## 可复现性 | 产物 | 复现方法 | |---|---| | 数据库 | `python db/init_db.py` | | promptfoo 结果 | `npx promptfoo eval` | | deepteam 结果 | `python run_deepteam.py` | | 稳定性模式结果 | `python eval_stability_schema_3_4.py` | | SQL 对抗结果 | `python eval_sql_adversarial_suite_3_4.py` | 注意:由于 LLM 随机性(temperature = 1.5),结果可能略有不同。
标签:GPT-4o-mini, MITM代理, PostgreSQL, ProjectDiscovery, RBAC, RLS, SQL注入防御, Streamlit, 两阶段LLM, 人工智能安全, 分层防御, 医疗数据安全, 反取证, 合规性, 安全评估, 强制访问控制, 提示注入, 数据保护, 查询控制, 测试用例, 网络安全, 网络安全, 行级安全, 论文研究, 访问控制, 诊所门户, 逆向工具, 防御机制, 隐私保护, 隐私保护, 集群管理