logan 3a6dd99633 feat: 审核规则驱动SQL检查 + db_type过滤 + Redis只读拦截 + 配置文档
1. 审核规则改为从audit_rules表动态匹配(去硬编码)
   - CreateTicket提交时查audit_rules WHERE db_type=? AND is_enabled=true
   - 正则匹配SQL,value=reject拦截,warn/review放行
   - UPDATE/DELETE无WHERE: Go RE2不支持(?!...)负向前瞻
     → 用value=where_check特殊标记+strings.Contains WHERE检测
   - 修复UPDATE/DELETE无WHERE正则(Go兼容)

2. ListAuditRules按db_type过滤
   - ghost.go: 添加c.Query('db_type') WHERE过滤
   - MySQL不显示KEYS规则,Redis不显示DROP规则

3. Redis只读命令拦截(工单提交)
   - 新增Redis只读命令白名单: GET/HGET/MGET/HGETALL/KEYS/SCAN等28个
   - 只读命令走工单→直接拦截,引导用户用查询功能

4. 补充audit_rules规则
   - Redis新增7条: DEBUG/SHUTDOWN/SCRIPT/SAVE/BGSAVE/BGREWRITEAOF/SLAVEOF/CLUSTER
   - MySQL新增1条: DROP SCHEMA
   - 总计34条规则(MySQL12/Redis11/PG7/MongoDB4)

5. docs/CONFIGURATION.md 配置系统文档
   - 三套配置体系: system_settings/audit_rules/ldap_configs
   - 每项配置: key/默认值/作用/代码引用位置
   - 未引用配置标注: executor_batch_size/executor_backup/query_max_rows_examined(待实现)
   - LDAP冗余配置: system_settings中7项ldap_*无代码引用(LDAP用独立表)

验证: 5/5审批流通过, 36/36安全测试通过, 27/27审核规则匹配正确
2026-06-03 03:17:22 +08:00
2026-05-29 23:26:11 +08:00

OpsxSQL — SQL 审核与数据变更审批平台

安全、高效的企业级数据库自助查询 + 数据变更审批平台


项目简介

OpsxSQL 是一个面向 DBA 和开发人员的数据库管理平台,核心定位:

  • 自助查询 — 支持 MySQL / PostgreSQL / Redis / MongoDB 多类型数据库的在线查询
  • 数据变更审批流 — SQL 变更工单提交 → 审核 → 执行的完整审批流程
  • SQL 审核 — 内置 26+ 条审核规则,覆盖语法、性能、安全、命名规范等维度
  • 实例管理 — 统一管理多种数据库实例,支持分组和标签

技术栈

层级 技术
后端 Go 1.26 + Gin + GORM + SQLite
前端 React 18 + TypeScript + Vite + Tailwind CSS + shadcn/ui
认证 JWT + LDAP 集成
数据库 SQLite(零依赖,开箱即用)

功能模块

🗄️ 实例管理

  • MySQL / PostgreSQL / Redis / MongoDB 实例注册与连接测试
  • 实例分组管理
  • 库表结构浏览(字段、索引详情)

📝 自助查询

  • 在线 SQL 编辑器(CodeMirror)
  • 语法高亮 + 自动补全
  • 查询历史记录(上限 500 条/用户)
  • 慢查询日志分析

✅ 工单审批

  • SQL 变更工单创建(支持 DDL / DML)
  • 多级审批流程(developer → dba → admin)
  • 工单状态追踪与通知
  • 执行结果确认

🔍 SQL 审核

  • 26 条内置审核规则(MySQL 11 / PostgreSQL 7 / Redis 4 / MongoDB 4)
  • 规则类型:syntax / performance / safety / security / naming / DDL / DML / DQL / DCL
  • 规则启用/禁用 + 自定义配置

👥 用户与权限

  • 四级角色:admin / dba / developer / auditor
  • LDAP 集成登录
  • 基于角色的数据隔离

🔔 通知渠道

  • 飞书 Webhook 通知
  • 钉钉 Webhook 通知
  • 工单状态变更自动推送

📊 其他

  • Dashboard 运营数据总览
  • 审计日志
  • 公告管理
  • 系统设置

项目结构

sql-platform/
├── backend/                  # Go 后端
│   ├── cmd/server/           # 入口 + seed
│   │   ├── main.go           # 启动入口
│   │   └── seed.go           # 默认数据初始化
│   ├── internal/
│   │   ├── handler/          # 请求处理器
│   │   ├── middleware/        # 中间件(认证/权限/日志)
│   │   ├── model/            # 数据模型
│   │   └── service/          # 业务逻辑
│   ├── config/               # 配置管理
│   └── router/               # 路由注册
├── frontend/                 # React 前端
│   └── src/
│       ├── api/              # API 请求封装
│       ├── components/       # 通用组件
│       │   └── ui/           # shadcn/ui 组件
│       ├── pages/            # 页面组件(27 个)
│       └── lib/              # 工具函数
├── tests/                    # 集成测试
├── run.sh                    # 启动/停止脚本
└── docker-compose.yml        # Docker 部署

快速开始

前置要求

  • Go 1.26+
  • Node.js 18+
  • npm 或 yarn

启动

# 克隆项目
git clone https://gitee.com/opsx-tools/opsxsql.git
cd opsxsql

# 编译后端
cd backend
go build -o sql-platform ./cmd/server/

# 启动(前后端一键启动)
cd ..
bash run.sh restart

后端运行在 http://localhost:9000,前端运行在 http://localhost:5173

默认账号

首次启动自动初始化以下账号(密码均为 admin123):

用户名 角色 说明
admin admin 超级管理员
dba dba 数据库管理员
auditor auditor 审计员(只读)
developer developer 开发者

测试

# 后端集成测试
cd tests
pip install pytest pytest-asyncio httpx
pytest -v

# 前端类型检查
cd frontend
npx tsc --noEmit

版本历史

版本 说明
v0.4.0 弹框架构重构 + 审核规则 API + LDAP 配置 + 全量 seed
v0.3.2 通知渠道对接 + TicketCreatePage 重写 + 默认用户初始化
v0.3.1 Go 后端迁移 + 工单审批流程 + 实例管理
v0.2.0 前端 UI 重构 + shadcn/ui 组件化
v0.1.0 项目初始化 + 基础 CRUD

代码统计

  • 后端 Go:29 文件,8,000+ 行
  • 前端 TypeScript:131 文件,27,000+ 行
  • 集成测试:21 文件,1,100+ 行
  • 总计 36,000+ 行

许可证

MIT License


Gitee 仓库

S
Description
No description provided
Readme
3.2 MiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 72.5%
Go 23%
Shell 2.1%
Python 1.3%
CSS 0.5%
Other 0.6%