jeevanbisht/AISecurityGuard
GitHub: jeevanbisht/AISecurityGuard
结合 Envoy ext_authz 与 MobileBERT 的教育型请求过滤实验环境,用于演示 SQL 注入与提示注入检测。
Stars: 0 | Forks: 0
# Envoy AI Guard Lab
Envoy AI Guard Lab 是一个参考环境,用于评估结合 Envoy 的 External Authorization(`ext_authz`)filter 进行的请求过滤。
在 Envoy 将流量转发到示例应用程序之前,一个 Flask 服务会使用 MobileBERT 分类器进行 SQL 注入检测,并执行少量的显式提示注入(prompt-injection)检查。
本项目仅用于教育目的。它不能替代生产环境中的 Web 应用程序防火墙(WAF)、安全编码实践、身份验证或授权机制。
## 功能
- 采用故障关闭(fail-closed)外部授权机制的 Envoy HTTP 和 HTTPS 监听器。
- 基于 MobileBERT 的 SQL 注入分类。
- 显式提示注入和不安全 payload 检查。
- 用于运行代理、防护服务和示例 Web 应用程序的 Docker Compose 环境。
- 本地和远程集成测试脚本。
- 位于 `reference_filter/` 中的启发式参考 filter 及其回归测试用例。
## 架构
```
Client
|
v
Envoy Proxy ---- authorization request ----> AI Guard
| | 200 allow
|<----------------------------------------| 403 block
v
Sample Web Application
```
Envoy 是唯一发布主机端口的组件。防护服务和示例应用程序保留在私有的 Compose 网络中。请参阅
[`architecture.html`](architecture.html) 获取交互式演练。
## 截图
截图尚未提交。获取说明和预期的文件名位于 [`docs/screenshots/README.md`](docs/screenshots/README.md) 中。
| 视图 | 占位符 |
| --- | --- |
| 通过 Envoy 访问的示例搜索页面 | `docs/screenshots/sample-app.png` |
| 被拦截的请求响应 | `docs/screenshots/blocked-request.png` |
## 安装
环境要求:
- Docker 及 Docker Compose
- Python 3.11 或更高版本(用于本地工具)
```
git clone https://github.com/jeevanbisht/AISecurityGuard.git
cd AISecurityGuard
cp .env.example .env
python generate_certs.py
docker compose up --build -d
```
模型会在首次构建防护服务镜像时下载。
## 使用方法
打开 `http://localhost:8080`,或者使用带有本地生成的自签名证书的 HTTPS 监听器:
```
curl -k "https://localhost:8443/search?q=laptops"
curl -k "https://localhost:8443/search?q=SELECT%20*%20FROM%20users%3B--"
```
第一个请求应返回 `200`。第二个请求应返回 `403`。
运行端到端检查:
```
python test_lab.py
```
示例请求 payload 可在 [`examples/requests.json`](examples/requests.json) 中找到。
## 配置
将 `.env.example` 复制为 `.env`。受支持的防护设置如下:
| 变量 | 默认值 | 用途 |
| --- | --- | --- |
| `SQL_INJECTION_MODEL_ID` | `cssupport/mobilebert-sql-injection-detect` | 兼容的 Hugging Face 模型 |
| `SQL_INJECTION_TOKENIZER_ID` | `google/mobilebert-uncased` | 默认模型所需的 Tokenizer |
| `SQL_INJECTION_THRESHOLD` | `0.70` | 达到或超过该概率值时,请求将被拦截 |
| `LOG_LEVEL` | `INFO` | Python 日志级别 |
远程测试和 Azure 部署变量已在 `.env.example` 中说明。
切勿提交 `.env`、生成的证书、registry 凭证或生成的部署清单。
## Azure Container Instances 示例
可选的生成器会从环境变量中读取凭证和部署名称,并在 `build/aci-deployment.yaml` 处写入一个被忽略的文件:
```
python generate_certs.py
python prepare_aci_yaml.py
az container create --resource-group \
--file build/aci-deployment.yaml
```
在生产环境部署中,请使用 workload identity 和镜像摘要(image digests)。
## 开发
```
python -m venv .venv
python -m pip install -r requirements-dev.txt
python -m pip install -r ai_model_service/requirements.txt
python -m pip install -r webserver/requirements.txt
ruff check .
ruff format --check .
```
运行针对性的单元测试:
```
cd ai_model_service && python -m unittest discover
cd ../reference_filter && python -m unittest discover
```
下载的模型权重和其他生成的构建产物已被特意排除在版本控制之外。
## 路线图
- 添加模型校准和基准测试报告。
- 添加结构化的可观测性,且不记录请求内容。
- 添加已签名且通过摘要固定(digest-pinned)的容器发布产物。
- 为路由和内容类型添加可配置的策略。
## 贡献
请参阅 [`CONTRIBUTING.md`](CONTRIBUTING.md)。请使用
[`SECURITY.md`](SECURITY.md) 中的流程报告安全问题。
## 许可证
根据 [MIT 许可证](LICENSE) 授权。
标签:AI安全, Chat Copilot, CISA项目, Envoy代理, IaC 扫描, Prompt注入防护, SQL注入检测, WAF, 安全测试环境, 版权保护, 请求拦截, 逆向工具