shrehs/llm-security-gateway
GitHub: shrehs/llm-security-gateway
基于FastAPI构建的企业级LLM安全网关,通过可插拔扫描器和策略引擎在prompt到达模型前执行安全检查、访问控制和响应脱敏。
Stars: 0 | Forks: 0
# LLM 安全网关
一个企业级 API 网关,位于用户和大型语言模型(LLM)之间,用于在 prompt 到达模型之前执行安全、治理和策略决策。
该网关基于 FastAPI、Docker 和模块化插件架构构建,可执行 prompt 检查、策略评估、支持 RBAC 的访问控制、响应脱敏以及 OWASP LLM Top 10 映射,同时保持与提供商无关。
## 架构
```
Client
│
▼
FastAPI Gateway API
│
Request Validation
│
▼
┌──────────────────────────┐
│ Scanner Registry │
└──────────────────────────┘
│ │ │ │
▼ ▼ ▼ ▼
Secrets PII Prompt URL Scanner
Scanner Scanner Injection
│
▼
Risk Engine
│
▼
Policy Engine (RBAC)
│
┌─────────────┴─────────────┐
│ │
BLOCK ALLOW
│ │
▼ ▼
Audit Logger LLM Provider
│
▼
Response Redaction
│
▼
Audit Logger
│
▼
API Response
```
```
API Layer
-> Request Validation
-> Gateway Orchestrator
-> Scanner Registry
-> Async Security Scanners
-> Risk Engine
-> YAML Policy Engine
-> LLM Provider Registry
-> Response Scanner
-> Redaction Stage
-> Structured Audit Log
-> Response
```
## 企业级功能
- 通过共享的 `BaseScanner` 接口实现可插拔的 scanner 框架
- 通过 `configs/policies.yaml` 启用 scanner
- 通过 `ALLOW`、`WARN`、`REDACT` 和 `BLOCK` 实现“策略即代码”
- 使用 `user_id`、`role`、`department` 和 `clearance` 进行支持 RBAC 的决策
- 使用 `X-Request-ID` 进行请求追踪
- 包含延迟和违规元数据的结构化审计事件
- 在每个网关响应中提供每个 scanner 的执行指标
- OWASP LLM Top 10 类别映射
- 用于 server-sent event 检查的模拟流式 endpoint
- 针对敏感模型输出的响应脱敏
## 当前 Scanner
- `SecretScanner`
- `PIIScanner`
- `PromptInjectionScanner`
- `URLScanner`
- `MalwareURLScanner`
每个 scanner 均实现:
```
async def scan(self, text: str) -> list[Finding]:
...
```
## 策略配置
策略位于 `configs/policies.yaml` 中。
```
scanners:
enabled:
- secret
- pii
- injection
- url
- malware_url
policies:
PII:
HIGH: BLOCK
MEDIUM: REDACT
LOW: WARN
thresholds:
warn: 30
redact: 60
block: 80
```
## 端点
### GET /health
返回服务健康元数据。
### POST /gateway/chat
接受可选的 `X-Request-ID` 标头。如果省略,网关将创建一个 UUID,并将其在响应主体和响应标头中返回。
```
{
"prompt": "Hello, how are you?",
"model": "llama3",
"user_id": "demo-user",
"role": "employee",
"department": "general",
"clearance": "public"
}
```
示例响应:
```
{
"request_id": "req-123",
"decision": "ALLOW",
"risk_score": 0,
"risk_level": "NONE",
"violations": [],
"owasp": [],
"scanner_metrics": [],
"llm_response": "Mock response from llama3."
}
```
### POST /gateway/chat/stream
返回 server-sent event,其中包含网关元数据,随后是安全的模型输出。
## 运行
```
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
.\.venv\Scripts\python.exe -m pytest -q
.\.venv\Scripts\python.exe -m uvicorn app.main:app --reload
```
标签:AI安全, API网关, AV绕过, Chat Copilot, Docker, FastAPI, LLM应用防火墙, Streamlit, 安全防御评估, 数据脱敏, 访问控制, 请求拦截, 逆向工具, 零日漏洞检测