本文介绍如何在数据库工作台 DBW 控制台管理安全规则。
安全管控是为了保护数据库系统中的数据和资源而制定的规则和措施。该功能可以帮助您在 DBW 实现精细化管控数据库实例,例如免密登录实例、工单管理、安全规则管理等。更多信息,请参见安全规则集管理。
只有在数据交互台的 SQL 窗口或通过工单执行的 SQL 语句才会被拦截生效。
安全规则集内开启的安全规则请勿出现冲突的情况,否则您的实例绑定的安全规则将失效。
系统默认提供一个安全规则集即名称为 mysql default
。默认的安全规则集和新建的安全规则集默认包含的安全规则,请参见参考文档。
一个基础规则可以由多个子规则组成,多个子规则按照顺序执行。
系统规则不支持删除和修改仅支持修改和关闭;您自定义的安全规则在删除后不支持恢复,需谨慎操作。
登录 DBW 控制台。
在顶部菜单栏,选择地域。
在左侧导航栏,选择数据管理 > 安全规则。
在安全规则集页面,单击目标安全规则集操作列的查看。
在目标安全规则集页面,单击创建规则。
在创建安全规则控制面板,配置以下参数信息。
参数 | 说明 |
---|---|
规则名称 | 自定义安全规则名称。安全规则名称的长度不能超过 128 个字符,且不能为空。 |
生效场景 | 从下拉列表中选择安全规则的生效场景,支持选择数据交互台、工单管理。 |
基础规则 | 一个基础规则可以由多个子规则组成,多个子规则按照顺序执行。基础规则的具体配置如下:
说明
|
默认规则 | 按需选择是否开启默认规则。开启后在没有命中基础规则包含的所有子规则时,执行默认规则。生效场景不同,该设置也不同,具体如下:
|
规则预览 | 在该区域展示您设置的规则生成的 SQL 语句,您无需修改。 |
您可以根据需求启用或关闭安全规则集内的规则。
登录 DBW 控制台。
在顶部菜单栏,选择地域。
在左侧导航栏,选择数据管理 > 安全规则。
在安全规则集页面,单击目标安全规则集操作列的查看。
在目标安全规则集页面,单击目标规则是否启用列下的开关。
在确定开启吗? 或确定关闭吗? 对话框,单击确定。
系统规则不支持修改,仅支持修改您自定义的安全规则。
登录 DBW 控制台。
在顶部菜单栏,选择地域。
在左侧导航栏,选择数据管理 > 安全规则。
在安全规则集页面,单击目标安全规则集操作列的查看。
在目标安全规则集页面,单击目标规则操作列下的编辑。
在编辑配置项对话框,修改安全规则的规则。
系统规则不支持删除,您自定义的安全规则在删除后不支持恢复,需谨慎操作。
登录 DBW 控制台。
在顶部菜单栏,选择地域。
在左侧导航栏,选择数据管理 > 安全规则。
在安全规则集页面,单击目标安全规则集操作列的查看。
在目标安全规则集页面,单击目标规则操作列的删除。
在确认删除对话框,单击确定。
安全规则集中默认的安全规则(即系统规则)如下表所示。
说明
只有在数据交互台的 SQL 窗口或通过工单执行的 SQL 语句才会被拦截生效。
生效场景 | 安全规则名称 | 是否默认启用 | 默认值 |
---|---|---|---|
数据交互台 | 禁止 CREATE_TABLE 在数据库交互台直接执行,请提交工单执行。 | 启用 | 无 |
数据交互台 | 禁止 DROP_TABLE 在数据库交互台直接执行,请提交工单执行。 | 启用 | 无 |
数据交互台 | 禁止 TRUNCATE 在数据库交互台直接执行,请提交 DDL 工单执行。 | 启用 | 无 |
数据交互台 | 禁止 INSERT 在数据库交互台直接执行,请提交 DML 工单执行。 | 启用 | 无 |
数据交互台 | 禁止 UPDATE 在 SQL 控制台直接执行,请提交 DML 工单执行。 | 启用 | 无 |
数据交互台 | 禁止 DELETE 在 SQL 控制台直接执行,请提交 DML 工单执行。 | 启用 | 无 |
数据交互台 | 禁止 ALTER_TABLE 在数据库交互台直接执行,请提交 DDL 工单执行。 | 启用 | 无 |
数据交互台 | 禁止 KILL 在数据库交互台直接执行,请提交 DML 工单执行。 | 启用 | 无 |
数据交互台 | 禁止存储过程在数据库交互台直接创建,请提交 DDL 工单执行。 | 启用 | 无 |
数据交互台 | 禁止无法识别 SQL 解析异常继续执行【继续执行会导致安全规则失效】。 | 启用 | 无 |
数据交互台 | 禁止无法解析权限的 SQL 继续执行【继续执行会导致安全规则失效】。 | 启用 | 无 |
数据交互台 | 控制 SQL 库表权限校验。 | 启用 | 无 |
数据交互台 | 仅支持特定类型 SQL 执行。 | 禁用 | SHOW TABLES、SHOW CREATE TABLE、EXPLAIN、SELECT、DBATMAN HELP、DBATMAN SHOW |
数据交互台 | 仅支持 select_type 在范围内的 SQL 执行。 | 禁用 | SIMPLE、PRIMARY、DERIVED、UNION、UNION RESULT、SUBQUERY、DEPENDENT SUBQUERY、MATERIALIZED、DEPENDENT UNION |
数据交互台 | 仅支持 index_type 在范围内 SQL 执行。 | 禁用 | index、range、ref、eq_ref、const、system、NULL |
数据交互台 | 仅支持 SQL 扫描行数小于 10 万行的语句执行,请优化 SQL 语句。 | 禁用 | 100000 |
数据交互台 | SELECT 语句建议指定 WHERE 条件。 | 禁用 | 无 |
数据交互台 | 限制 SELECT 语句 LIMIT 的 OFFSET 大小。 | 禁用 | 2000 |
数据交互台 | SELECT 时不建议 GROUP BY 常量。 | 禁用 | 无 |
数据交互台 | 限制 SELECT 语句多表关联的数量。 | 禁用 | 3 |
数据交互台 | SELECT 语句不建议使用 * 。 | 禁用 | 无 |
数据交互台 | SELECT 语句不建议对不同的表 GROUP BY 或 ORDER BY 。 | 禁用 | 无 |
数据交互台 | SELECT 语句不建议对常量进行 ORDER BY 。 | 禁用 | 无 |
数据交互台 | SELECT 语句不建议 ORDER BY 多个字段使用不同方向排序。 | 禁用 | 无 |
数据交互台 | SELECT 语句不建议 GROUP BY 表达式或函数。 | 禁用 | 无 |
数据交互台 | SELECT 语句不建议 ORDER BY 表达式或函数。 | 禁用 | 无 |
数据交互台 | SELECT 语句不建议使用 ORDER BY RAND() 。 | 禁用 | 无 |
数据交互台 | SELECT 语句不建议使用 HAVING 子句。 | 禁用 | 无 |
数据交互台 | SELECT 语句不建议使用 UNION 。 | 禁用 | 无 |
数据交互台 | WHERE 条件中不建议使用前通配符查找。 | 禁用 | 无 |
数据交互台 | WHERE 条件中不建议使用反向查询(NOT IN / NOT LIKE )。 | 禁用 | 无 |
数据交互台 | WHERE 条件中检测是否通过 OR 操作符连接过滤条件。 | 禁用 | 无 |
数据交互台 | WHERE 条件中检测没有通配符的 LIKE 语句。 | 禁用 | 无 |
| 表要有主键。 | 禁用 | 无 |
| 表要有备注。 | 禁用 | 无 |
| 表不能使用外键。 | 禁用 | 无 |
| 限制表名大小写。 | 禁用 |
|
| 限制表存储引擎。 说明 仅支持在 | 禁用 | InnoDB |
| 限制表使用分区设置。 说明 在 | 禁用 | 无 |
| 表需要包含某些列。 说明 仅支持在 | 禁用 | 无 |
| 限制表字符集。 说明 仅支持在 | 禁用 | utf8mb4 |
| 限制表校验规则。 说明 仅支持在 | 禁用 | utf8_general_ci、 utf8_bin、 utf8mb4_general_ci、 utf8mb4_bin |
| 表名不能是关键字。 | 禁用 | analyze、add、all、alter、and、before、between、bigint、binary、blob、both、by、call、cascade、case、change、char、character、check、collate、column、condition、as、asc、asensitive、connection、constraint、continue、convert、create、cross、current_date、current_time、current_timestamp、current_user、cursor、database、databases、day_hour、day_microsecond、day_minute、day_second、dec、decimal、declare、default、delayed、delete、desc、describe、deterministic、distinct、distinctrow、div、double、drop、dual、each、else、exit、explain、false、fetch、float、float4、float8、elseif、enclosed、escaped、exists、for、force、foreign、from、fulltext、goto、grant、group、having、high_priority、hour_microsecond、hour_minute、hour_second、if、ignore、in、index、infile、inner、inout、insensitive、insert、int、int1、int2、int3、int4、int8、integer、interval、into、is、iterate、join、key、keys、kill、label、leading、leave、left、like、limit、linear、lines、low_priority、localtime、localtimestamp、lock、long、longblob、longtext、loop、load、matchediumblob、mediumint、mediumtext、middleint、minute_microsecond、minute_second、mod、modifies、no_write_to_binlog、null、numeric、on、optimize、option、optionally、natural、not、or、order、ut、uter、outfile、precision、primary、procedure、urge、raid0、ange、read、reads、eal、references、regexp、release、ename、epeat、replace、require、restrict、return、evoke、ight、rlike、schema、schemas、second_microsecond、select、sensitive、separator、set、show、smallint、spatial、specific、sql、sqlexception、sqlstate、sqlwarning、sql_big_result、sql_calc_found_rows、sql_small_result、ssl、starting、traight_join、able、terminated、then、tinyblob、inyint、tinytext、o、trailing、trigger、true、ndo、union、unique、nlock、unsigned、pdate、usage、use、using、utc_date、tc_time、tc_timestamp、values、varbinary、x509、xor、year_month、zerofill、varchar、varcharacter、varying、when、where、while、with、write |
| 限制表索引的数量。 说明 仅支持在 | 禁用 | 7 |
| 限制表字段的数量。 说明 仅支持在 | 禁用 | 128 |
| 限制建表自增初始值。 | 禁用 | 1 |
| 限制主键列必须自增。 说明 仅支持在 | 禁用 | 无 |
| 字段名不能是关键字。 | 禁用 | analyze、add、all、alter、and、before、between、bigint、binary、blob、both、by、call、cascade、case、change、char、character、check、collate、column、condition、as、asc、asensitive、connection、constraint、continue、convert、create、cross、current_date、current_time、current_timestamp、current_user、cursor、database、databases、day_hour、day_microsecond、day_minute、day_second、dec、decimal、declare、default、delayed、delete、desc、describe、deterministic、distinct、distinctrow、div、double、drop、dual、each、else、exit、explain、false、fetch、float、float4、float8、elseif、enclosed、escaped、exists、for、force、foreign、from、fulltext、goto、grant、group、having、high_priority、hour_microsecond、hour_minute、hour_second、if、ignore、in、index、infile、inner、inout、insensitive、insert、int、int1、int2、int3、int4、int8、integer、interval、into、is、iterate、join、key、keys、kill、label、leading、leave、left、like、limit、linear、lines、low_priority、localtime、localtimestamp、lock、long、longblob、longtext、loop、load、match、mediumblob、mediumint、mediumtext、middleint、minute_microsecond、minute_second、mod、modifies、no_write_to_binlog、null、numeric、on、optimize、option、optionally、natural、not、or、order、out、outer、outfile、precision、primary、procedure、purge、raid0、range、read、reads、real、references、regexp、release、rename、repeat、replace、require、restrict、return、revoke、right、rlike、schema、schemas、second_microsecond、select、sensitive、separator、set、show、smallint、spatial、specific、sql、sqlexception、sqlstate、sqlwarning、sql_big_result、sql_calc_found_rows、sql_small_result、ssl、starting、straight_join、table、terminated、then、tinyblob、tinyint、tinytext、to、trailing、trigger、true、undo、union、unique、unlock、unsigned、update、usage、use、using、utc_date、utc_time、utc_timestamp、values、varbinary、x509、xor、year_month、zerofill、varchar、varcharacter、varying、when、where、while、with、write |
| 限制字段名大小写。 | 禁用 |
|
| 不能设置列的字符集。 | 禁用 | 无 |
| 列要有注释。 | 禁用 | 无 |
| 限制 | 禁用 | 256 |
| 限制 | 禁用 | 2560 |
| 限制列都不可空( | 禁用 | 无 |
| 限制自增列名字为 ID。 | 禁用 | 无 |
| 限制自增列为无符号。 | 禁用 | 无 |
| 不能使用 | 禁用 | 无 |
| 每个列都要有默认值。 | 禁用 | 无 |
| 不能设置列的校验集。 | 禁用 | 无 |
| 不能使用 ENUM 类型(建议用 | 禁用 | 无 |
| 字段禁用 | 禁用 | 无 |
| 索引需要设置名字。 | 禁用 | 无 |
| 限制 | 禁用 | uk_\w+ |
| 限制普通索引名格式。 | 禁用 | idx_\w+ |
| 限制单个索引包含列的个数。 | 禁用 | 5 |
| 限制主键包含列的个数。 说明 仅支持在 | 禁用 | 2 |
| 限制主键列类型。 | 禁用 | int、bigint |
| 限制列不能使用部分数据类型。 | 禁用 | 无 |
| 索引中的字段要求设置为 说明 仅支持在 | 禁用 | 无 |
开启安全管控:在开启实例的安全管控时,设置安全规则集。