HR10J44T/ztn-lab
GitHub: HR10J44T/ztn-lab
一个面向安全作品集和面试演示的零信任架构模拟平台,完整展示身份认证、设备信任、微隔离和持续验证的协同工作机制。
Stars: 0 | Forks: 0
# 🔐 零信任网络模拟实验环境
一个面向安全作品集、实验室和面试演示的生产级 **零信任架构 (ZTA)** 模拟平台。它展示了现代访问决策是如何通过 **身份**、**设备信任**、**微隔离**、**持续验证** 以及 **策略引擎** 来实现的。
## 本项目演示的内容
- 基于 Identity 的 JWT 认证
- 基于用户、设备、位置和资源的策略授权
- 微隔离保护的资源 (`admin`, `engineering`, `finance`, `db`)
- 对每个请求进行风险评分的持续验证
- 用于演示的模拟威胁和访问事件
- 安全事件 API + Streamlit 仪表板
- 对招聘人员友好的架构,具备清晰的关注点分离
## 架构
```
┌──────────────┐ login/access ┌─────────────────┐
│ User/App │ ────────────────────▶ │ FastAPI API │
└──────────────┘ │ Access Gateway │
└────────┬────────┘
│
┌───────────────────┼────────────────────┐
│ │ │
▼ ▼ ▼
┌────────────────┐ ┌───────────────┐ ┌────────────────┐
│ Identity Check │ │ Policy Engine │ │ Risk Evaluator │
└────────────────┘ └───────────────┘ └────────────────┘
│ │ │
└───────────────────┴────────────────────┘
│
▼
┌─────────────────┐
│ Decision Logger │
└────────┬────────┘
│
┌────────────────────────────┼────────────────────────────┐
▼ ▼ ▼
┌────────────────┐ ┌────────────────┐ ┌─────────────────┐
│ SQLite Storage │ │ Streamlit SOC │ │ Protected Zones │
│ users/events │ │ Dashboard │ │ /admin /db ... │
└────────────────┘ └────────────────┘ └─────────────────┘
```
## 项目结构
```
ztn-lab/
├── backend/
│ ├── app/
│ │ ├── api/
│ │ ├── core/
│ │ ├── models/
│ │ ├── services/
│ │ └── main.py
│ ├── requirements.txt
│ └── Dockerfile
├── dashboard/
│ ├── app.py
│ ├── requirements.txt
│ └── Dockerfile
├── scripts/
│ └── seed_and_demo.py
├── tests/
│ └── test_policy_engine.py
├── docker-compose.yml
├── .env.example
└── README.md
```
## 角色与信任模型
### 用户
- `admin_user` / `Admin@123`
- `dev_user` / `Dev@123`
- `analyst_user` / `Analyst@123`
- `guest_user` / `Guest@123`
### 设备信任
- `trusted` → 低风险
- `managed` → 中低风险
- `unknown` → 高风险
- `compromised` → 严重风险
### 示例资源
- `/zones/admin`
- `/zones/engineering`
- `/zones/finance`
- `/zones/db`
## 访问决策逻辑
每个访问请求都会根据以下内容进行评估:
1. **Identity** — 已认证的用户和角色
2. **Device trust** — 可信 vs 未知 vs 受损
3. **Location** — 企业内网 vs 远程 vs 境外
4. **Risk score** — 针对每个请求计算
5. **Policy rules** — 允许 / 拒绝 / 有条件允许
6. **Continuous verification** — 每个请求都会重新评估
## 快速开始
### 方式一:本地运行
#### 后端
```
cd backend
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
pip install -r requirements.txt
cp ../.env.example .env
uvicorn app.main:app --reload --port 8000
```
#### 仪表板
```
cd dashboard
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
streamlit run app.py --server.port 8501
```
### 方式二:Docker Compose
```
docker compose up --build
```
- API: `http://localhost:8000`
- 文档: `http://localhost:8000/docs`
- 仪表板: `http://localhost:8501`
## 演示流程
1. 打开 API 文档。
2. 使用其中一个演示账户登录。
3. 使用不同的设备/位置/资源调用 `POST /access/evaluate`。
4. 在 Streamlit 仪表板上查看决策结果。
5. 运行 `scripts/seed_and_demo.py` 以快速生成活动。
## 示例访问请求
```
{
"resource": "/zones/admin",
"action": "read",
"device_trust": "unknown",
"location": "remote",
"ip_address": "203.0.113.20"
}
```
## 示例访问决策
```
{
"decision": "deny",
"risk_score": 77,
"resource_segment": "admin",
"reason": "Role not allowed for segment admin; risk score exceeded threshold",
"policy": "deny_non_admin_admin_zone"
}
```
## 未来升级计划
- Open Policy Agent (OPA) 集成
- PostgreSQL + Alembic 迁移
- Redis 用于会话和速率跟踪
- GeoIP 丰富化
- SIEM 转发至 Elasticsearch
- 设备状态采集 Agent
- 服务间 mTLS
标签:API安全, AV绕过, FastAPI, JSON输出, JWT, Kubernetes, PE 加载器, Python, RBAC, Streamlit, Streamlit, Zero Trust, ZTA, 仪表盘, 安全实验室, 安全演示, 安全组合, 微隔离, 持续验证, 无后门, 模拟环境, 现代安全架构, 策略引擎, 网络安全, 网络安全挑战, 设备信任, 访问控制, 访问控制, 请求拦截, 逆向工具, 隐私保护, 零信任架构, 风险评分