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, 人工智能安全, 分层防御, 医疗数据安全, 反取证, 合规性, 安全评估, 强制访问控制, 提示注入, 数据保护, 查询控制, 测试用例, 网络安全, 网络安全, 行级安全, 论文研究, 访问控制, 诊所门户, 逆向工具, 防御机制, 隐私保护, 隐私保护, 集群管理