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, 仪表盘, 安全实验室, 安全演示, 安全组合, 微隔离, 持续验证, 无后门, 模拟环境, 现代安全架构, 策略引擎, 网络安全, 网络安全挑战, 设备信任, 访问控制, 访问控制, 请求拦截, 逆向工具, 隐私保护, 零信任架构, 风险评分