bartuonder/Sentinel-Shield
GitHub: bartuonder/Sentinel-Shield
基于 FastAPI 和 Clean Architecture 构建的 AI 安全网关,为 LLM 集成提供 Prompt 注入防护、PII 匿名化和智能 IP 封禁的一站式解决方案。
Stars: 1 | Forks: 0
# 🛡️ Sentinel-Shield:企业级 AI 安全网关与 SaaS 平台
**Sentinel-Shield** 是一款高性能、云原生的 **Security-as-a-Service (SaaS)** 解决方案,专为现代 Web 应用程序和大型语言模型 (LLM) 集成而设计。开发者通过从平台获取的 API Key 将所有流量经由 Sentinel-Shield 转发,从而实现端到端的保护。
## 📸 项目界面与控制面板 (Dashboard & Logs)
## 🚀 核心功能与安全过滤逻辑
系统将每个传入的请求 (request) 经过三个基本阶段:
### 1. 威胁拦截 (Blocking)
传入的消息会经过语义和基于签名的分析。
* **LLM Guard:** 针对试图欺骗 AI 的隐蔽 "Jailbreak" 和 "Prompt Injection" 尝试,利用 OpenAI GPT-4o-mini 进行分析并立即拦截。
* **经典注入:** 一旦系统检测到 SQLi、XSS 及其他基于 Web 的攻击向量,请求立即转为 **BLOCKED** 状态。
### 2. 数据匿名化 (PII Sanitization)
若消息安全但包含敏感数据,则启动此阶段:
* **Microsoft Presidio:** `pii_scanner.py` 模块通过 **PresidioAnalyzer** 检测显式和隐式隐藏的敏感数据(如 TCKN、IBAN、Email、电话)。
* **掩码处理:** 检测到的数据将被 `[TR_TCKN REDACTED]` 等标签遮盖,安全地传输给目标 LLM。
### 3. 智能封禁与 IP 管理 (5-Strike Rule)
采用混合逻辑隔离攻击者 IP 地址:
* **基于用户的封禁:** 如果一个 IP 地址通过特定 API Key **5 次** 违反规则,该 IP 将针对该用户被永久封禁。
* **系统保护 (Rate Limiter):** 为了保护我们自己的 Backend 基础设施,发送极高频率请求的 IP 将在 Redis 上进行短期(基于 TTL)封锁,以平衡系统负载。
## 🏗️ 架构与 Cloud 基础设施
### Cloud 层
* **托管:** 基于 **AWS EC2** 的 Docker 化架构。
* **入口层:** **Nginx** 被配置为反向代理。
* **数据库:** **AWS RDS (PostgreSQL)** 用于存储持久化日志和用户数据。
* **安全协议:** EC2 和 RDS 之间的数据流量通过基于最小权限原则的 **AWS Security Groups** 进行隔离。
### 数据与缓存策略
为了性能,Redis 上存储三种基本数据类型:
1. **Rate Limit 数据:** 基于 IP 的计数器,用于防止 Backend 过载。
2. **Ban Status:** 为了速度优化,被封锁 IP 的查询通过 Redis 进行。
3. **Hashed Queries:** 为了提高性能并降低重复请求成本,24 小时内的问题经哈希处理后存储。
## 🛠️ 技术栈
* **Backend:** FastAPI, Starlette, Pydantic (v2), SQLAlchemy (Async).
* **Frontend:** Next.js (Dashboard & Auth Management).
* **数据安全:** Microsoft Presidio Analyzer.
* **身份验证:** JWT (Stateless Auth).
* **基础设施:** Docker & Docker-Compose.
## ⚙️ 配置
在根目录下创建一个 `.env` 文件,并使用您的 Cloud 信息填充以下模板:
```
OpenAI API Settings:
API_KEY=your_openai_api_key
JWT & Core Security:
SECRET_KEY=kendi_guvenli_anahtariniz
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
Cloud Infrastructure (AWS & Upstash):
REDIS_URL=rediss://default:password@endpoint:6379
DATABASE_URL=postgresql+asyncpg://user:password@rds_endpoint:5432/dbname
Connection Settings:
NEXT_PUBLIC_API_URL=http://ec2_ip_adresiniz/api/v1
```
### 🐳 使用 Docker 启动
要启动系统及其所有依赖项:
```
docker-compose up --build -d
```
### 👤 开发者信息
* **开发者:** Bartu Önder — *Software Engineering Student*
* **🎯 愿景:** Software Engineering — **AI Security**
## 🚀 核心功能与安全过滤逻辑
系统将每个传入的请求 (request) 经过三个基本阶段:
### 1. 威胁拦截 (Blocking)
传入的消息会经过语义和基于签名的分析。
* **LLM Guard:** 针对试图欺骗 AI 的隐蔽 "Jailbreak" 和 "Prompt Injection" 尝试,利用 OpenAI GPT-4o-mini 进行分析并立即拦截。
* **经典注入:** 一旦系统检测到 SQLi、XSS 及其他基于 Web 的攻击向量,请求立即转为 **BLOCKED** 状态。
### 2. 数据匿名化 (PII Sanitization)
若消息安全但包含敏感数据,则启动此阶段:
* **Microsoft Presidio:** `pii_scanner.py` 模块通过 **PresidioAnalyzer** 检测显式和隐式隐藏的敏感数据(如 TCKN、IBAN、Email、电话)。
* **掩码处理:** 检测到的数据将被 `[TR_TCKN REDACTED]` 等标签遮盖,安全地传输给目标 LLM。
### 3. 智能封禁与 IP 管理 (5-Strike Rule)
采用混合逻辑隔离攻击者 IP 地址:
* **基于用户的封禁:** 如果一个 IP 地址通过特定 API Key **5 次** 违反规则,该 IP 将针对该用户被永久封禁。
* **系统保护 (Rate Limiter):** 为了保护我们自己的 Backend 基础设施,发送极高频率请求的 IP 将在 Redis 上进行短期(基于 TTL)封锁,以平衡系统负载。
## 🏗️ 架构与 Cloud 基础设施
### Cloud 层
* **托管:** 基于 **AWS EC2** 的 Docker 化架构。
* **入口层:** **Nginx** 被配置为反向代理。
* **数据库:** **AWS RDS (PostgreSQL)** 用于存储持久化日志和用户数据。
* **安全协议:** EC2 和 RDS 之间的数据流量通过基于最小权限原则的 **AWS Security Groups** 进行隔离。
### 数据与缓存策略
为了性能,Redis 上存储三种基本数据类型:
1. **Rate Limit 数据:** 基于 IP 的计数器,用于防止 Backend 过载。
2. **Ban Status:** 为了速度优化,被封锁 IP 的查询通过 Redis 进行。
3. **Hashed Queries:** 为了提高性能并降低重复请求成本,24 小时内的问题经哈希处理后存储。
## 🛠️ 技术栈
* **Backend:** FastAPI, Starlette, Pydantic (v2), SQLAlchemy (Async).
* **Frontend:** Next.js (Dashboard & Auth Management).
* **数据安全:** Microsoft Presidio Analyzer.
* **身份验证:** JWT (Stateless Auth).
* **基础设施:** Docker & Docker-Compose.
## ⚙️ 配置
在根目录下创建一个 `.env` 文件,并使用您的 Cloud 信息填充以下模板:
```
OpenAI API Settings:
API_KEY=your_openai_api_key
JWT & Core Security:
SECRET_KEY=kendi_guvenli_anahtariniz
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
Cloud Infrastructure (AWS & Upstash):
REDIS_URL=rediss://default:password@endpoint:6379
DATABASE_URL=postgresql+asyncpg://user:password@rds_endpoint:5432/dbname
Connection Settings:
NEXT_PUBLIC_API_URL=http://ec2_ip_adresiniz/api/v1
```
### 🐳 使用 Docker 启动
要启动系统及其所有依赖项:
```
docker-compose up --build -d
```
### 👤 开发者信息
* **开发者:** Bartu Önder — *Software Engineering Student*
* **🎯 愿景:** Software Engineering — **AI Security**标签:AI安全, API网关, API防火墙, AV绕过, Chat Copilot, CISA项目, DNS 反向解析, FastAPI, Microsoft Presidio, Naabu, OpenAI GPT, Petitpotam, PII脱敏, Python, SaaS, SQL注入防御, XSS防护, 中间件, 企业级安全, 内容安全, 威胁情报, 开发者工具, 提示词注入防御, 搜索引擎查询, 数据匿名化, 整洁架构, 无后门, 测试用例, 深度包检测, 网络安全, 网络安全分析, 请求拦截, 越狱攻击防护, 逆向工具, 隐私保护