Files
Qiniu/technical/xinfra-preview/cloud-dm-overview.md
T

131 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
tags: [cloud-dm, sql-audit, dbms, preview, infra]
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/>
## 核心概念
### 定位与设计哲学
```mermaid
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] 快速体验
> ```bash
> # 一键启动单机版
> 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#核心能力模块]] — 本文档「核心能力模块」章节