本文为您介绍如何为不同的数据库类型创建规则模板,并支持查看、复制和删除规则模板。
当前系统预设的规则模板为 MySQL 系统内置模板、TDSQL-C 公网全局规则模板。
规则模板包括以下规则内容:
SQL 窗口:预置 SQL 操作中的规则和支持的 SQL 类型,支持启用和不启用规则。
SQL 变更:预置 SQL 变更操作中强制改进项、风险改进项、建议改进项的规则,并给出 SQL 示例,支持启用和不启用规则。
审批人员:支持编辑 SQL 变更、SQL 导入导出、权限申请工单审批节点及审批人员。
支持的数据库
前提条件
创建规则模板
1. 登录 DMC 控制台。
2. 在左侧导航栏,选择安全发布 > 实例管控 > 规则模板。
3. 在页面上方单击创建模板。
4. 在弹出的对话框中输入模板名称,选择数据库类型,单击确定。

5. 在已创建的规则模板对应的操作列单击查看。
6. 在规则概览区域,单击编辑,选择规则类型,设置具体规则。

SQL 窗口
SQL 变更
选择 SQL 变更,分别选择全部、强制改进项、风险改进项、建议改进项,对系统预置的规则,在状态列单击开关启用或不启用规则。
说明:

审批人员
选择审批人员,单击
,输入节点名称、选择审批人员,单击确定。

若需添加多级审批人员,请重复执行该步骤。

说明:
腾讯云主账号默认为主账号审批人员。
7. 设置完成后,单击提交。
新创建的规则模板默认不开启。
查看规则模板
1. 登录 DMC 控制台。
2. 在左侧导航栏,选择安全发布 > 实例管控 > 规则模板。
3. 查看规则模板列表。具体参数说明如下表所示。

参数 | 说明 |
模板 ID/名称 | 单击模板 ID,可查看规则模板详情。 在模板 ID 右侧单击 ![]() 在模板名称右侧 ![]() |
数据库类型 | 规则模板适用的数据库类型。 |
关联数据源数 | 该规则已关联的数据源数量,鼠标悬停至此列的数字处,将展示被管控的数据源名称。单击数据源名称,可跳转至管控实例详情页面。 |
是否默认模板 | 规则模板是否为默认模板。 每一种数据类型只允许开启一个默认的规则模板。 |
操作 | 查看规则模板详情:查看模板信息和规则概览,具体操作请参见 查看规则模板详情。 复制已有规则模板:单击复制,在弹出的对话框中输入新的模板名称,单击确定。 删除规则模板:单击删除,在弹出的对话框中单击确定。 说明: 预置模板和已设置为默认开启的模板不支持删除操作。 |
查看规则模板详情
1. 登录 DMC 控制台。
2. 在左侧导航栏,选择安全发布 > 实例管控 > 规则模板。
3. 单击模板 ID 或在操作列单击查看,进入规则模板详情页面。
4. 查看规则模板信息和规则概览。

模板信息
模板 ID:在右侧单击
,可复制模板 ID。

模板名称:在右侧
,可编辑模板名称。预置规则模板不支持该操作。

是否默认模板:单击开关,可启用或不启用模板。
关联实例:可查看该规则模板关联的数据源名称。单击数据源名称,可跳转至管控实例详情页面。
规则概览
可查看 SQL 窗口、SQL 变更、审批人员,可在页面右上方单击编辑,修改规则和审批人员。
说明:
预置规则不支持编辑操作。
修改规则模板,将会影响规则模板所关联的所有实例,请谨慎操作。
启用规则模板
1. 登录 DMC 控制台。
2. 在左侧导航栏,选择安全发布 > 实例管控 > 规则模板。
3. 在待启用规则模板对应的默认列开启开关。
支持单击模板 ID 或在操作列单击查看,进入规则模板详情页面,在模板信息处开启开关。
说明:
默认开启预置规则模板。
每一种数据类型只允许开启一个规则模板。
下载规则模板列表
1. 登录 DMC 控制台。
2. 在左侧导航栏,选择安全发布 > 实例管控 > 规则模板。
3. 在页面右上方单击
,下载格式为.csv 的规则模板列表。

SQL 窗口和 SQL 变更规则说明
MySQL SQL 窗口规则说明
ID | 规则组 | 规则名称 | SQL类型 | 配置值 |
10000 | DML-SQL | 允许常用查询类语句(默认) | Select,Union,SetOpr,Show,Explain,Use,Begin,Commit,Rollback | NA |
10001 | DML-SQL | 允许插入数据 | Insert | NA |
10002 | DML-SQL | 允许删除数据 | Delete | NA |
10003 | DML-SQL | 允许更新数据 | Update | NA |
10004 | DDL-SQL | 允许创建数据库 | CreateDatabase | NA |
10005 | DDL-SQL | 允许删除数据库 | DropDatabase | NA |
10006 | DDL-SQL | 允许修改数据库 | AlterDatabase | NA |
10007 | DDL-SQL | 允许创建表 | CreateTable | NA |
10008 | DDL-SQL | 允许删除表 | DropTable | NA |
10009 | DDL-SQL | 允许修改表 | AlterTable | NA |
10010 | DDL-SQL | 允许重命名表 | RenameTable | NA |
10011 | DDL-SQL | 允许清空表 | TruncateTable | NA |
10012 | DDL-SQL | 允许检查表 | CheckTable | NA |
10013 | DDL-SQL | 允许分析表 | AnalyzeTable | NA |
10014 | DDL-SQL | 允许优化表 | OptimizeTable | NA |
10015 | DDL-SQL | 允许修复表 | RepairTable | NA |
10016 | DDL-SQL | 允许创建索引 | CreateIndex | NA |
10017 | DDL-SQL | 允许删除索引 | DropIndex | NA |
10018 | DDL-SQL | 允许创建视图 | CreateView | NA |
10019 | DDL-SQL | 允许删除视图 | DropView | NA |
10020 | 用户和权限 | 允许创建用户 | CreateUser | NA |
10021 | 用户和权限 | 允许删除用户 | DropUser | NA |
10022 | 用户和权限 | 允许修改用户 | AlterUser | NA |
10023 | 用户和权限 | 允许重命名用户 | RenameUser | NA |
10024 | 用户和权限 | 允许设置密码 | SetPwd | NA |
10025 | 用户和权限 | 允许设置角色 | SetRole | NA |
10026 | 用户和权限 | 允许设置默认角色 | SetDefaultRole | NA |
10027 | 用户和权限 | 允许授权 | Grant | NA |
10028 | 系统和会话控制 | 允许 Kill | Kill | NA |
10029 | 系统和会话控制 | 允许 Binlog | Binlog | NA |
10030 | 性能和安全限制 | 允许不能识别的语句(启用有风险) | Unknown | NA |
10031 | 用户和权限 | 允许授权角色 | GrantRole | NA |
10032 | 用户和权限 | 允许回收角色权限 | RevokeRole | NA |
10033 | 用户和权限 | 允许回收权限 | Revoke | NA |
10034 | 系统和会话控制 | 允许 Flush | Flush | NA |
10035 | DDL-SQL | 允许删除存储过程 | DropProcedure | NA |
10036 | DDL-SQL | 允许创建存储过程 | ProcedureInfo | NA |
10037 | DML-SQL | 允许 Call | Call | NA |
10038 | 系统和会话控制 | 允许 Set | Set | NA |
10039 | 查询与事务控制 | 允许锁表 | LockTables | NA |
10040 | 查询与事务控制 | 允许解除表锁 | UnlockTables | NA |
10041 | 查询与事务控制 | 允许创建保存点 | SavePoint | NA |
10042 | 查询与事务控制 | 允许删除保存点 | ReleaseSavePoint | NA |
10051 | DML-SQL | 允许 Prepare | Prepare | NA |
10052 | DML-SQL | 允许 Execute | Execute | NA |
10053 | DML-SQL | 允许 Deallocate | Deallocate | NA |
10054 | DML-SQL | 允许 LoadData | LoadData | NA |
10101 | 性能和安全限制 | SQL 执行超时时间(单位:秒) | NA | 300 |
10102 | 性能和安全限制 | 禁止 DML 影响行数超过阈值执行 | NA | 2000 |
10103 | 性能和安全限制 | 禁止 DDL 表空间超过阈值执行(单位:MB) | NA | 2048 |
10104 | 性能和安全限制 | 控制单次执行 SQL 个数 | NA | 100 |
10105 | 性能和安全限制 | 控制单次执行 SELECT SQL 个数 | NA | 10 |
10106 | 性能和安全限制 | 控制单次执行 DML SQL 个数 | NA | 100 |
10107 | 窗口操作 | 禁用结果集复制 | NA | NA |
10108 | 窗口操作 | 禁用结果集导出 | NA | NA |
10109 | 性能和安全限制 | 单次查询最大返回行数 | NA | 200 |
10110 | 性能和安全限制 | 限制 SELECT 允许 SQL 全表扫描的最大值(单位:MB) | NA | 10240 |
10111 | 性能和安全限制 | 禁止 SELECT 预估扫描行数超过阈值执行 | NA | 200000 |
10112 | 性能和安全限制 | 禁止无 WHERE 条件的 UPDATE/DELETE | NA | NA |
10113 | 性能和安全限制 | 禁止无 WHERE 条件的 SELECT | NA | NA |
MySQL SQL 变更规则说明
规则分类 | 规则 ID | 规则名称 | SQL 示例 |
强制改进项 | 1001 | 不能删除数据库 | DROP DATABASE test; |
| 1002 | 不能删除表 | DROP TABLE test; |
| 1003 | 不能清空表 | TRUNCATE TABLE test; |
| 1004 | 不能删除列 | ALTER TABLE test DROP COLUMN id; |
| 1005 | DELETE/UPDATE 操作必须携带 WHERE 条件 | DELETE FROM test; |
| 1007 | 不能使用 USE 指定数据库 | USE test; |
| 1009 | 不支持事务 | BEGIN; |
| 1010 | 不支持临时表 | CREATE TEMPORARY TABLE test; |
风险改进项 | 1008 | 不能在 SQL 中指定字符集 | SET NAMES utf8; |
| 2001 | 创建表需要存在主键 | CREATE TABLE test (id bigint(20) NOT NULL) ENGINE=InnoDB; |
| 2002 | 需要指定建立 InnoDB 的存储引擎 | CREATE TABLE test (id bigint(20) NOT NULL) ENGINE=MyIsam; |
| 2003 | DELETE/UPDATE 语句需要携带 LIMIT 选项 | DELETE FROM test WHERE id > 10; |
| 2004 | DELETE/UPDATE 语句不要携带 ORDER BY 选项 | DELETE FROM test ORDER BY id; |
建议改进项 | 3001 | 创建表建议存在索引 | CREATE TABLE test (id bigint(20) NOT NULL) ENGINE=InnoDB; |
| 3002 | 创建表不建议使用外键 | CREATE TABLE test (f1 bigint(20) NOT NULL,CONSTRAINT fk_f1 FOREIGN KEY (f1) REFERENCES test2 (f1)) ENGINE=InnoDB; |
| 3003 | 不建议创建分区表 | CREATE TABLE test (id bigint(20) NOT NULL) PARTITION by hash (id) (PARTITION x, PARTITION y); |
| 3005 | 表名/字段名不建议为保留字 | CREATE TABLE charset (charset bigint(20) NOT NULL) ENGINE=InnoDB; |
| 3006 | 同一张表的多条 ALTER 语句建议合为一条 | ALTER TABLE test ADD COLUMN f1 int;ALTER TABLE test ADD COLUMN f2 int; |
TDSQL-C SQL 窗口规则说明
ID | 规则组 | 规则名称 | SQL类型 | 配置值 |
20000 | DML-SQL | 允许常用查询类语句(默认) | Select,Union,SetOpr,Show,Explain,Use,Begin,Commit,Rollback | NA |
20001 | DML-SQL | 允许插入数据 | Insert | NA |
20002 | DML-SQL | 允许删除数据 | Delete | NA |
20003 | DML-SQL | 允许更新数据 | Update | NA |
20004 | DDL-SQL | 允许创建数据库 | CreateDatabase | NA |
20005 | DDL-SQL | 允许删除数据库 | DropDatabase | NA |
20006 | DDL-SQL | 允许修改数据库 | AlterDatabase | NA |
20007 | DDL-SQL | 允许创建表 | CreateTable | NA |
20008 | DDL-SQL | 允许删除表 | DropTable | NA |
20009 | DDL-SQL | 允许修改表 | AlterTable | NA |
20010 | DDL-SQL | 允许重命名表 | RenameTable | NA |
20011 | DDL-SQL | 允许清空表 | TruncateTable | NA |
20012 | DDL-SQL | 允许检查表 | CheckTable | NA |
20013 | DDL-SQL | 允许分析表 | AnalyzeTable | NA |
20014 | DDL-SQL | 允许优化表 | OptimizeTable | NA |
20015 | DDL-SQL | 允许修复表 | RepairTable | NA |
20016 | DDL-SQL | 允许创建索引 | CreateIndex | NA |
20017 | DDL-SQL | 允许删除索引 | DropIndex | NA |
20018 | DDL-SQL | 允许创建视图 | CreateView | NA |
20019 | DDL-SQL | 允许删除视图 | DropView | NA |
20020 | 用户和权限 | 允许创建用户 | CreateUser | NA |
20021 | 用户和权限 | 允许删除用户 | DropUser | NA |
20022 | 用户和权限 | 允许修改用户 | AlterUser | NA |
20023 | 用户和权限 | 允许重命名用户 | RenameUser | NA |
20024 | 用户和权限 | 允许设置密码 | SetPwd | NA |
20025 | 用户和权限 | 允许设置角色 | SetRole | NA |
20026 | 用户和权限 | 允许设置默认角色 | SetDefaultRole | NA |
20027 | 用户和权限 | 允许授权 | Grant | NA |
20028 | 系统和会话控制 | 允许 Kill | Kill | NA |
20029 | 系统和会话控制 | 允许 Binlog | Binlog | NA |
20030 | 性能和安全限制 | 允许不能识别的语句(启用有风险) | Unknown | NA |
20031 | 用户和权限 | 允许授权角色 | GrantRole | NA |
20032 | 用户和权限 | 允许回收角色权限 | RevokeRole | NA |
20033 | 用户和权限 | 允许回收权限 | Revoke | NA |
20034 | 系统和会话控制 | 允许 Flush | Flush | NA |
20035 | DDL-SQL | 允许删除存储过程 | DropProcedure | NA |
20036 | DDL-SQL | 允许创建存储过程 | ProcedureInfo | NA |
20037 | DML-SQL | 允许 Call | Call | NA |
20038 | 系统和会话控制 | 允许 Set | Set | NA |
20039 | 查询与事务控制 | 允许锁表 | LockTables | NA |
20040 | 查询与事务控制 | 允许解除表锁 | UnlockTables | NA |
20041 | 查询与事务控制 | 允许创建保存点 | SavePoint | NA |
20042 | 查询与事务控制 | 允许删除保存点 | ReleaseSavePoint | NA |
20051 | DML-SQL | 允许 Prepare | Prepare | NA |
20052 | DML-SQL | 允许 Execute | Execute | NA |
20053 | DML-SQL | 允许 Deallocate | Deallocate | NA |
20054 | DML-SQL | 允许 LoadData | LoadData | NA |
20101 | 性能和安全限制 | SQL 执行超时时间(单位:秒) | NA | 300 |
20102 | 性能和安全限制 | 禁止 DML 影响行数超过阈值执行 | NA | 2000 |
20103 | 性能和安全限制 | 禁止 DDL 表空间超过阈值执行(单位:MB) | NA | 2048 |
20104 | 性能和安全限制 | 控制单次执行 SQL 个数 | NA | 100 |
20105 | 性能和安全限制 | 控制单次执行 SELECT SQL 个数 | NA | 10 |
20106 | 性能和安全限制 | 控制单次执行 DML SQL 个数 | NA | 100 |
20107 | 窗口操作 | 禁用结果集复制 | NA | NA |
20108 | 窗口操作 | 禁用结果集导出 | NA | NA |
20109 | 性能和安全限制 | 单次查询最大返回行数 | NA | 200 |
20110 | 性能和安全限制 | 限制 SELECT 允许 SQL 全表扫描的最大值(单位:MB) | NA | 10240 |
20111 | 性能和安全限制 | 禁止 SELECT 预估扫描行数超过阈值执行 | NA | 200000 |
20112 | 性能和安全限制 | 禁止无 WHERE 条件的 UPDATE/DELETE | NA | NA |
20113 | 性能和安全限制 | 禁止无 WHERE 条件的 SELECT | NA | NA |
TDSQL-C SQL 变更规则说明
规则分类 | 规则 ID | 规则名称 | SQL 示例 |
强制改进项 | 201002 | 不能删除表 | DROP TABLE test; |
| 201003 | 不能清空表 | TRUNCATE TABLE test; |
| 201001 | 不能删除数据库 | DROP DATABASE test; |
| 201004 | 不能删除列 | ALTER TABLE test DROP COLUMN id; |
| 201005 | DELETE/UPDATE 操作必须携带 WHERE 条件 | DELETE FROM test; |
| 201007 | 不能使用 USE 指定数据库 | USE test; |
| 201009 | 不支持事务 | BEGIN; |
| 201010 | 不支持临时表 | CREATE TEMPORARY TABLE test; |
风险改进项 | 201008 | 不能在 SQL 中指定字符集 | SET NAMES utf8; |
| 202001 | 创建表需要存在主键 | CREATE TABLE test (id bigint(20) NOT NULL) ENGINE=InnoDB; |
| 202002 | 需要指定建立 InnoDB 的存储引擎 | CREATE TABLE test (id bigint(20) NOT NULL) ENGINE=MyIsam; |
| 202003 | DELETE/UPDATE 语句需要携带 LIMIT 选项 | DELETE FROM test WHERE id > 10; |
| 202004 | DELETE/UPDATE 语句不要携带 ORDER BY 选项 | DELETE FROM test ORDER BY id; |
建议改进项 | 203001 | 创建表建议存在索引 | CREATE TABLE test (id bigint(20) NOT NULL) ENGINE=InnoDB; |
| 203002 | 创建表不建议使用外键 | CREATE TABLE test (f1 bigint(20) NOT NULL,CONSTRAINT fk_f1 FOREIGN KEY (f1) REFERENCES test2 (f1)) ENGINE=InnoDB; |
| 203003 | 不建议创建分区表 | CREATE TABLE test (id bigint(20) NOT NULL) PARTITION by hash (id) (PARTITION x, PARTITION y); |
| 203005 | 表名/字段名不建议为保留字 | CREATE TABLE charset (charset bigint(20) NOT NULL) ENGINE=InnoDB; |
| 203006 | 同一张表的多条 ALTER 语句建议合为一条 | ALTER TABLE test ADD COLUMN f1 int;ALTER TABLE test ADD COLUMN f2 int; |

