6.1 KiB
6.1 KiB
tags, create time
| tags | create time | |||||
|---|---|---|---|---|---|---|
|
2026-07-04 12:00 |
CloudDM SQL 审核平台
概述
CloudDM(open-cdm)是一款免费且开源的团队化数据库管理平台,由 ClouGence 团队开发,采用 Apache License 2.0 许可。它的定位远超"SQL 审核工具"——覆盖数据查询、权限管控、SQL 审核、数据脱敏、数据库 CI/CD 和跨地区部署的全链路能力。
在 xinfra 中,所有操作 MySQL 的场景都必须经过 CloudDM 的审核机制——这是防止误操作直接打到生产库的第一道防线。同时,开发人员也可以直接在 CloudDM 中进行安全的数据查询与变更交付。
当前版本:3.1.1 | 官网:https://www.cdmgr.com/
核心概念
定位与设计哲学
sequenceDiagram
participant dev as 开发人员
participant cdm as CloudDM
participant auditor as DBA/审核人
participant mysql as MySQL实例
dev->>cdm: 提交SQL上线工单 / 数据查询
cdm->>cdm: SQL语法检查 + 54条规则校验
cdm->>auditor: 通知审核
auditor->>cdm: 审核通过 / 驳回
cdm->>mysql: 按窗口执行(限流+分批)
核心原则:每一次数据库操作都要有记录、可审计、可回滚。
核心能力模块
| 模块 | 职责 |
|---|---|
| 数据查询 | 支持 MySQL、Oracle、PG、DB2、SQL Server、OceanBase、ClickHouse、Redis、MongoDB 等 20+ 数据源;提供统一 Web 控制台,含语法高亮、智能提示、执行计划预览 |
| SQL 审核 | 内置 54 条审核规则,支持规则脚本自定义扩展;执行前预检,提示风险或阻断高危语句 |
| 权限控制 | 资源权限(实例/库/Schema/表粒度)+ 功能权限(RBAC 角色授权);支持申请权限、赋予权限及临时权限 |
| 数据管理 | 可视化管理数据库对象:库、表、索引、视图、函数、存储过程、用户、角色等 |
| 数据脱敏 | 对查询结果或流程中的敏感数据进行隐藏或转换 |
| 数据库 CI/CD | Git Push / Web Hook / HttpCall 三种触发方式,支持 Gitee 作为变更仓库 |
| 协同流程 | 三种流程类型:SQL 审核、权限工单、变更流程;三种执行方式:手动执行、立即执行、定时执行 |
| 统一认证 | OpenLDAP / OIDC / Windows AD / 钉钉 / 飞书 / 企业微信 SSO |
部署模式对比
| 维度 | Alone(单机) | Console + Sidecar(集群) |
|---|---|---|
| 组件 | Web + Sidecar + MySQL 合一 | Console 独立 + 多个 Sidecar |
| 适用场景 | 小规模验证、个人使用 | 团队协作、跨地区多数据源 |
| 特点 | 开箱即用,一条 Docker 命令启动 | 最大特点是跨地区数据库统一授权访问 |
| Web 端口 | 8222 | Console: 8222, Sidecar: 8080 |
[!tip] 快速体验
# 一键启动单机版 docker run -d --name cgdm-alone -p 8222:8222 bladepipe/cgdm-alone:3.1.1 # 中国区加速镜像 docker run -d --name cgdm-alone -p 8222:8222 \ cloudcanal-registry.cn-shanghai.cr.aliyuncs.com/clougence/cgdm-alone:3.1.1
典型操作流程
1. 开发在 CloudDM 添加数据源(MySQL / PG / Redis ...)
2. 通过 Web 查询编辑器进行数据查询或编写变更 SQL
3. 若涉及变更 → 创建 SQL 上线工单
4. CloudDM 自动执行 54 条规则预检
5. DBA 审核通过后进入排队队列
6. 按指定时间窗或立即由系统执行
7. 执行结果回填工单,全程留痕
元数据存储
CloudDM 的元数据存储在内置(Alone 模式)或外部 MySQL 中。无需深入具体表结构——Console 提供了完整的可视化对象管理界面。需要了解的重点是:
- 元信息数据库使用 MariaDB/MySQL(Alone 模式自带嵌入式 MySQL)
- 集群模式的元数据持久化为
cdmgr库,默认账号 root - 忘记管理员密码时,可删除
drivers/cgdm-runtime-mysql目录后重启以重新走初始化向导(不重建数据库即可重置)
常见陷阱与最佳实践
1. 审核规则要适配实际业务
过于严格的规则可能在特定场景下误杀正常需求。建议:初期允许白名单豁免,积累一段时间后再收紧规则。
2. 区分 DML 和 DDL 审核策略
- DML(INSERT/UPDATE/DELETE):重点防范误删、锁表
- DDL(ALTER TABLE/CREATE INDEX):重点防范大表长时间锁表
两者需要不同的审核标准和执行窗口。
3. Alone vs Cluster 选型
- 单人或小团队直接用 Alone 模式,一条
docker run即可上手 - 当需要在不同地域连接多台数据库并做统一权限管控时,迁移到 Console + Sidecar 集群模式
4. 生产部署安全事项
- 务必替换默认的 JWT 密钥和管理员密码
- K8s 部署中将敏感配置改为
Secret管理 - PVC 容量根据实际数据规模调整
关键术语速查
| 术语 | 含义 |
|---|---|
| Alone | 单机部署模式,Web 控制台、Sidecar 和元信息数据库合并运行 |
| Console | 中央 Web 控制台,负责数据库访问、审批流程和全局配置 |
| Sidecar | 配合 Console 使用的数据库访问代理,常用于跨地区部署 |
| SQL 审核 | SQL 执行或变更交付前的规则化风险检查 |
| 数据脱敏 | 查询结果或流程中对敏感数据的隐藏/转换保护 |
| 资源权限 | 按实例、库、Schema、表粒度授予的权限 |
| 功能权限 | 基于 RBAC 的功能访问权限 |
| 权限工单 | 用于申请、审批和授予访问权限的流程 |
| 变更流程 | 用于审核和交付受控数据库变更的流程 |
| 数据库 CI/CD | 通过 Git Push / Web Hook / HttpCall 触发的数据库变更交付 |
延伸阅读
- technical/xinfra-preview/k8s-rke2-fundamentals — K8s 内的 MySQL 容器化部署基础
- https://github.com/ClouGence/open-cdm — open-cdm 主仓库(GitHub)
- https://gitee.com/clougence/open-cdm — 中国镜像仓库
- technical/xinfra-preview/cloud-dm-overview#核心能力模块 — 本文档「核心能力模块」章节