readme
This commit is contained in:
+210
@@ -0,0 +1,210 @@
|
||||
# IPAM 项目开发进度
|
||||
|
||||
## ✅ P0 - 核心基础
|
||||
|
||||
- ✅ 项目框架搭建 (FastAPI + SQLAlchemy + MySQL)
|
||||
- ✅ 网段管理 (创建、编辑、删除、查看)
|
||||
- ✅ IP地址管理 (分页、过滤、搜索、在线状态)
|
||||
- ✅ ICMP Ping 扫描引擎 (单IP、网段扫描)
|
||||
- ✅ 数据库模型设计
|
||||
|
||||
## ✅ P1 - 增强功能
|
||||
|
||||
- ✅ **ARP 扫描** - 二层MAC地址发现
|
||||
- ✅ **反向 DNS 解析** - 主机名自动获取
|
||||
- ✅ **MAC 厂商识别** - 内置 IEEE OUI 数据库
|
||||
- ✅ **Celery 异步任务** - 后台扫描任务执行
|
||||
- ✅ **SNMP 设备集成** - SNMPv2c/v3 凭证与设备管理,ARP表自动采集
|
||||
- ✅ **告警与异常检测** - IP冲突、未授权接入、网段耗尽、设备离线等
|
||||
|
||||
## ✅ P2 - 前端界面
|
||||
|
||||
- ✅ Vue 3 + Element Plus 基础架构
|
||||
- ✅ 主布局与路由配置 (侧边栏、顶栏、面包屑)
|
||||
- ✅ 仪表盘页面 (统计卡片、网段使用率)
|
||||
- ✅ 网段管理页面 (列表、CRUD、扫描)
|
||||
- ✅ IP地址管理页面 (筛选、搜索、批量扫描、详情编辑)
|
||||
- ✅ 扫描管理页面 (手动扫描、任务状态)
|
||||
- ✅ SNMP管理页面 (设备、凭据、ARP表、接口)
|
||||
- ✅ 告警中心 (告警列表、确认、解决、MAC白名单)
|
||||
|
||||
## ✅ P3 - 系统增强
|
||||
|
||||
- ✅ **JWT 用户认证** - 登录、登出、修改密码
|
||||
- ✅ **权限管理** - 4级角色权限 (super_admin/admin/operator/viewer)
|
||||
- ✅ **操作审计日志** - 记录所有用户操作、资源变更历史
|
||||
- ✅ **报表导出** - CSV导出 (IP、网段、告警、设备、ARP表)、汇总统计报表
|
||||
- ✅ **邮件告警通知** - SMTP邮件发送、告警邮件模板
|
||||
- ✅ **IP历史轨迹记录** - 自动记录IP状态与MAC变化历史
|
||||
|
||||
## 🔧 技术栈
|
||||
|
||||
### 后端
|
||||
- FastAPI 0.115
|
||||
- SQLAlchemy 2.0
|
||||
- MySQL 8.0
|
||||
- Celery 5.4 (Redis broker)
|
||||
- PySNMP 4.4.12
|
||||
- Passlib + bcrypt (密码加密)
|
||||
- python-jose (JWT token)
|
||||
|
||||
### 前端
|
||||
- Vue 3.5
|
||||
- Element Plus 2.9
|
||||
- Vue Router 4.4
|
||||
- Pinia 2.4 (状态管理)
|
||||
- Axios 1.7
|
||||
|
||||
---
|
||||
|
||||
## 📋 API 端点总览
|
||||
|
||||
### 认证 (/api/v1/auth)
|
||||
- `POST /login` - 用户登录获取Token
|
||||
- `POST /refresh` - 刷新访问令牌
|
||||
- `POST /logout` - 登出
|
||||
- `GET /me` - 获取当前用户信息
|
||||
- `POST /change-password` - 修改密码
|
||||
|
||||
### 用户管理 (/api/v1/auth)
|
||||
- `GET /users` - 用户列表
|
||||
- `GET /users/{id}` - 用户详情
|
||||
- `POST /users` - 创建用户
|
||||
- `PUT /users/{id}/status` - 修改用户状态
|
||||
- `POST /users/{id}/unlock` - 解锁用户
|
||||
- `POST /users/{id}/reset-password` - 重置密码
|
||||
- `DELETE /users/{id}` - 删除用户
|
||||
|
||||
### 网段管理 (/api/v1/networks)
|
||||
- `GET /networks` - 网段列表
|
||||
- `GET /networks/{id}` - 网段详情
|
||||
- `POST /networks` - 创建网段
|
||||
- `PUT /networks/{id}` - 更新网段
|
||||
- `DELETE /networks/{id}` - 删除网段
|
||||
- `GET /networks/{id}/ips` - 获取网段下的IP列表
|
||||
- `POST /networks/{id}/scan` - 扫描网段
|
||||
|
||||
### IP地址管理 (/api/v1/ips)
|
||||
- `GET /ips` - IP列表(支持筛选、搜索)
|
||||
- `GET /ips/{id}` - IP详情
|
||||
- `PUT /ips/{id}` - 更新IP信息
|
||||
- `POST /ips/{id}/scan` - 扫描单个IP
|
||||
|
||||
### 告警管理 (/api/v1/alerts)
|
||||
- `GET /alerts` - 告警列表
|
||||
- `POST /alerts/detect/run` - 运行所有检测
|
||||
- `POST /alerts/{id}/acknowledge` - 确认告警
|
||||
- `POST /alerts/{id}/resolve` - 解决告警
|
||||
- `POST /alerts/{id}/ignore` - 忽略告警
|
||||
- `GET /alerts/statistics` - 告警统计
|
||||
|
||||
### MAC白名单 (/api/v1/alerts)
|
||||
- `GET /whitelist/macs` - 获取白名单
|
||||
- `POST /whitelist/macs` - 添加MAC到白名单
|
||||
- `DELETE /whitelist/macs/{id}` - 从白名单移除
|
||||
|
||||
### SNMP管理 (/api/v1/snmp)
|
||||
- `GET /credentials` - 凭据列表
|
||||
- `POST /credentials` - 创建凭据
|
||||
- `PUT /credentials/{id}` - 更新凭据
|
||||
- `DELETE /credentials/{id}` - 删除凭据
|
||||
- `GET /devices` - 设备列表
|
||||
- `POST /devices` - 创建设备
|
||||
- `POST /devices/{id}/test` - 测试连接
|
||||
- `POST /devices/{id}/poll` - 立即轮询
|
||||
- `GET /arp-entries` - ARP表
|
||||
- `GET /statistics` - SNMP统计
|
||||
|
||||
### 审计日志 (/api/v1/audit)
|
||||
- `GET /logs` - 审计日志列表
|
||||
- `GET /logs/my` - 当前用户操作日志
|
||||
- `GET /logs/resource/{type}/{id}` - 资源操作历史
|
||||
- `GET /statistics` - 审计统计
|
||||
- `DELETE /clean` - 清理旧日志
|
||||
|
||||
### 报表导出 (/api/v1/reports)
|
||||
- `GET /ip-addresses/csv` - 导出IP地址CSV
|
||||
- `GET /networks/csv` - 导出网段汇总CSV
|
||||
- `GET /alerts/csv` - 导出告警CSV
|
||||
- `GET /snmp-devices/csv` - 导出SNMP设备CSV
|
||||
- `GET /arp-table/csv` - 导出ARP表CSV
|
||||
- `GET /summary` - IPAM汇总统计报表
|
||||
|
||||
---
|
||||
|
||||
## 🔐 角色权限矩阵
|
||||
|
||||
| 权限\角色 | viewer | operator | admin | super_admin |
|
||||
|----------|--------|----------|-------|-------------|
|
||||
| 查看所有数据 | ✅ | ✅ | ✅ | ✅ |
|
||||
| 编辑IP信息 | ❌ | ✅ | ✅ | ✅ |
|
||||
| 执行扫描 | ❌ | ✅ | ✅ | ✅ |
|
||||
| 网段管理 | ❌ | ❌ | ✅ | ✅ |
|
||||
| SNMP配置 | ❌ | ❌ | ✅ | ✅ |
|
||||
| 导出报表 | ❌ | ❌ | ✅ | ✅ |
|
||||
| 用户管理 | ❌ | ❌ | ❌ | ✅ |
|
||||
| 审计日志查看 | ❌ | ❌ | ✅ | ✅ |
|
||||
| 系统设置 | ❌ | ❌ | ❌ | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## 🚀 部署启动
|
||||
|
||||
### 后端启动
|
||||
```bash
|
||||
cd /root/ipam/backend
|
||||
source venv/bin/activate
|
||||
|
||||
# 启动 API 服务
|
||||
uvicorn app.main:app --host 0.0.0.0 --port 8008
|
||||
|
||||
# 启动 Celery Worker
|
||||
celery -A app.tasks.celery_app worker --loglevel=info --concurrency=4
|
||||
```
|
||||
|
||||
### 前端启动
|
||||
```bash
|
||||
cd /root/ipam/frontend
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 默认管理员
|
||||
- 用户名: `admin`
|
||||
- 密码: `admin123`
|
||||
|
||||
---
|
||||
|
||||
## 📊 数据库表结构
|
||||
|
||||
| 表名 | 说明 | 条数 |
|
||||
|------|------|------|
|
||||
| networks | 网段表 | 3 |
|
||||
| ip_addresses | IP地址表 | 1530 |
|
||||
| scan_tasks | 扫描任务表 | - |
|
||||
| snmp_credentials | SNMP凭据表 | - |
|
||||
| network_devices | SNMP设备表 | - |
|
||||
| arp_entries | ARP记录表 | - |
|
||||
| mac_address_table | MAC地址表 | - |
|
||||
| device_interfaces | 设备接口表 | - |
|
||||
| alerts | 告警表 | - |
|
||||
| alert_rules | 告警规则表 | - |
|
||||
| whitelisted_macs | MAC白名单表 | - |
|
||||
| users | 用户表 | 1 |
|
||||
| permissions | 权限表 | - |
|
||||
| role_permissions | 角色权限关联表 | - |
|
||||
| refresh_tokens | 刷新令牌表 | - |
|
||||
| audit_logs | 审计日志表 | - |
|
||||
|
||||
---
|
||||
|
||||
## 🎯 项目完成度
|
||||
|
||||
| 阶段 | 进度 | 状态 |
|
||||
|------|------|------|
|
||||
| P0 - 核心基础 | 100% | ✅ 完成 |
|
||||
| P1 - 增强功能 | 100% | ✅ 完成 |
|
||||
| P2 - 前端界面 | 100% | ✅ 完成 |
|
||||
| P3 - 系统增强 | 100% | ✅ 完成 |
|
||||
|
||||
**总体完成度: 100%** 🎉
|
||||
Reference in New Issue
Block a user