Ivos1991/network-security-automation-framework
GitHub: Ivos1991/network-security-automation-framework
这是一个基于 Python 的模块化网络安全自动化框架,结合实时模拟验证与 Batfish 离线分析,用于零信任策略的混合合规性检查。
Stars: 0 | Forks: 0
# 网络安全自动化框架
本仓库演示了一种以网络安全为重点的自动化方法,用于通过两条协调的路径验证一个小型零信任实验室:
- 用于管理平面加固的模拟实时验证路径
- 用于分段意图的真实 Batfish 支持的离线验证路径
该架构有意保持精简。它明确区分了 service/API/request,使用共享的实验室资产来关联这两条路径,并将范围限制在几个对于作品集仓库而言可信的确定性场景。
## 项目摘要
已实现的验证切片:
- 通过模拟的 Scrapli 风格后端进行实时设备加固验证
- 通过真实的 Batfish `testFilters` 查询进行离线分段验证
- 混合合规性关联,用于对比预期策略、离线评估和实时态势
- 用于混合合规性报告的紧凑套件级聚合
已验证的离线分段场景:
- `user_subnet -> restricted_subnet = deny`
- `admin_subnet -> restricted_subnet = allow`
已验证的混合结果:
- 一致的预期/离线/实时快乐路径
- 确定性的离线侧不匹配
- 确定性的实时侧不匹配
## 架构概览
```
network-security-automation-framework/
|-- docs/
|-- labs/
| |-- current_lab.yaml
| `-- snapshots/
|-- src/
| |-- framework/
| | |-- config/
| | |-- models/
| | `-- reporting/
| |-- integration/
| |-- live/
| |-- offline/
| `-- validators/
|-- tests/
| |-- integration_tests/
| |-- live_tests/
| `-- offline_tests/
|-- conftest.py
|-- pytest.ini
`-- README.md
```
### 分层模型
- `*_service.py`
编排请求构建、后端执行和验证器调用。
- `*_service_api.py`
仅拥有面向后端的执行细节。
- `*_service_request.py`
构建请求负载和过滤条件。
- validators
对规范化证据断言含义,而不是原始运行时输出。
- tests
拥有套件元数据、Allure 附件和场景断言。
这保持了当前架构的小巧、可读性,并在实时、离线和混合切片中保持一致。
## 双路径验证模型
### 实时路径
目的:
- 验证管理平面加固预期
- 在不需要真实网络硬件的情况下生成确定性证据
当前状态:
- 后端是模拟的
- 运行配置从配置默认值或显式覆盖中加载
- 加固检查验证 SSH 的存在、Telnet 的不存在以及登录横幅的存在
### 离线路径
目的:
- 在实时部署之前验证预期的分段行为
- 从仓库安全的快照中证明策略意图
当前状态:
- 后端使用真实的 PyBatfish
- 快照存储在 `labs/snapshots/zero_trust_lab/` 中
- 两个已实现的场景使用 Batfish `testFilters`
### 混合合规性模型
混合切片关联:
- 来自共享实验室资产的预期访问规则
- 来自 Batfish 支持路径的离线分段结果
- 来自模拟实时路径的实时管理平面态势
这些输入被规范化为 `HybridComplianceStatus`,它支持:
- 通过/失败合规性结果
- 显式的不匹配类型
- 简洁的 Allure 报告
- 小型套件级聚合摘要
## 什么是真实的 vs 模拟的
本仓库中真实的部分:
- Batfish 支持的离线分段验证
- 检入到 `labs/snapshots/` 的 Batfish 快照资产
- 用于自动回归和报告的 GitHub Actions 执行形态
设计上模拟的部分:
- 实时设备连接
- Scrapli/Nornir 执行
- 更广泛的基础设施编排
- 大型拓扑扩展
这是有意为之。该仓库展示了面向后端的 QA 自动化设计,而不假装端到端地自动化生产基础设施。
## 共享实验室资产
[labs/current_lab.yaml](labs/current_lab.yaml) 中的当前实验室资产驱动:
- 分段名称和 CIDR
- 预期的管理平面态势
- 用于混合验证的预期访问规则
- 离线分段预期
- 用于真实离线路径的 Batfish 场景元数据
该共享模型在实时、离线和混合报告中保持标识符一致。
## 技术栈
- Python 3
- `pytest`
- `allure-pytest`
- `pydantic`
- `pyyaml`
- `pybatfish`
- 用于本地 Batfish 运行时的 Docker
## 设置
安装依赖:
```
python -m pip install -r requirements.txt
```
[.env.example](.env.example) 中提供了示例环境默认值。
## 运行测试
运行整个仓库:
```
python -m pytest -q
```
仅运行离线切片:
```
python -m pytest tests/offline_tests -q
```
仅运行集成切片:
```
python -m pytest tests/integration_tests -q
```
重要的运行时说明:
- 离线路径在测试执行期间启动并重用本地 `batfish/allinone` Docker 容器
- 实时路径保持模拟状态,不需要设备访问
## Allure 报告
生成结果:
```
python -m pytest -q --alluredir=allure-results
```
打开本地报告:
```
allure serve allure-results
```
生成静态输出:
```
allure generate allure-results --clean -o allure-report
```
当前报告形态保持紧凑:
- 共享实验室上下文
- 实时验证证据
- 离线可达性和 Batfish 摘要
- 混合合规性证据
- 套件级混合聚合摘要
## CI/CD 概览
包含的工作流:
- `PR Validation`
为针对 `main` 的 pull request 和推送运行精简的 pytest 套件。
- `Manual Run`
允许您使用自定义 pytest 目标和参数手动触发仓库测试套件。
- `Run Suite`
可重用工作流,用于安装依赖、拉取 Batfish、运行 pytest 并上传 Allure 结果。
流水线行为:
- 从 `requirements.txt` 安装 Python 依赖
- 预拉取 `batfish/allinone` 以便离线验证可以快速启动
- 运行与本地相同的 pytest 套件
- 将 Allure 结果作为构建产物上传
## 本仓库演示了
- 面向后端的自动化设计,而不是繁重的 UI 覆盖
- 文档优先的工程纪律
- 具有明确范围控制的确定性测试策略
- 通过 Batfish 进行真实的离线策略验证
- 用于跨路径比较的规范化合规性建模
- 适合大规模 CI 执行的简洁报告
- 模拟基础设施与真实基础设施之间的诚实分离
## 支持文档
- [实施计划](docs/implementation-plan.md)
- [目标架构](docs/target-architecture.md)
- [实时 vs 离线验证](docs/live-vs-offline-validation.md)
- [报告和 CI](docs/reporting-and-ci.md)
- [编码标准](docs/coding-standards.md)
标签:Allure, Batfish, DevSecOps, JSONLines, pytest, Python, Scrapli, Service-Oriented Architecture, SOA, 上游代理, 在线验证, 意图验证, 无后门, 模块化架构, 混合合规报告, 离线分析, 策略验证, 管理平面加固, 网络分段, 网络安全框架, 网络安全测试, 网络安全自动化, 自动化运维, 请求拦截, 逆向工具, 零信任