本文介绍如何在数据库工作台 DBW 控制台管理安全规则。
安全管控是为了保护数据库系统中的数据和资源而制定的规则和措施。该功能可以帮助您在 DBW 实现精细化管控数据库实例,例如免密登录实例、工单管理、安全规则管理等。更多信息,请参见安全规则集管理。
只有在数据交互台的 SQL 窗口或通过工单执行的 SQL 语句才会被拦截生效。
安全规则集内开启的安全规则请勿出现冲突的情况,否则您的实例绑定的安全规则将失效。
系统默认提供一个安全规则集即名称为 vedb_mysql default
。默认的安全规则集和新建的安全规则集默认包含的安全规则,请参见参考文档。
一个基础规则可以由多个子规则组成,多个子规则按照顺序执行。
系统规则不支持删除和修改仅支持修改和关闭;您自定义的安全规则在删除后不支持恢复,需谨慎操作。
当前暂不支持自定义 SQL 审核的安全规则。关于系统提供的 SQL 审核规则请参见参考文档。
登录 DBW 控制台。
在顶部菜单栏,选择地域。
在左侧导航栏,选择数据管理 > 安全规则。
在安全规则集页面,单击目标安全规则集操作列的查看。
在目标安全规则集页面,单击创建规则。
在创建安全规则控制面板,配置以下参数信息。
参数 | 说明 |
---|---|
规则名称 | 自定义安全规则名称。安全规则名称的长度不能超过 128 个字符,且不能为空。 |
生效场景 | 从下拉列表中选择安全规则的生效场景,支持选择数据交互台、工单管理。 |
基础规则 | 一个基础规则可以由多个子规则组成,多个子规则按照顺序执行。基础规则的具体配置如下:
说明
|
默认规则 | 按需选择是否开启默认规则。开启后在没有命中基础规则包含的所有子规则时,执行默认规则。生效场景不同,该设置也不同,具体如下:
|
规则预览 | 在该区域展示您设置的规则生成的 SQL 语句,您无需修改。 |
您可以根据需求启用或关闭安全规则集内的规则。
登录 DBW 控制台。
在顶部菜单栏,选择地域。
在左侧导航栏,选择数据管理 > 安全规则。
在安全规则集页面,单击目标安全规则集操作列的查看。
在目标安全规则集页面,单击目标规则是否启用列下的开关。
在确定开启吗? 或确定关闭吗? 对话框,单击确定。
系统规则不支持修改,仅支持修改您自定义的安全规则。
登录 DBW 控制台。
在顶部菜单栏,选择地域。
在左侧导航栏,选择数据管理 > 安全规则。
在安全规则集页面,单击目标安全规则集操作列的查看。
在目标安全规则集页面,单击目标规则操作列下的编辑。
在编辑配置项对话框,修改安全规则的规则。
系统规则不支持删除,您自定义的安全规则在删除后不支持恢复,需谨慎操作。
登录 DBW 控制台。
在顶部菜单栏,选择地域。
在左侧导航栏,选择数据管理 > 安全规则。
在安全规则集页面,单击目标安全规则集操作列的查看。
在目标安全规则集页面,单击目标规则操作列的删除。
在确认删除对话框,单击确定。
安全规则集中默认的安全规则(即系统规则)如下表所示。
安全规则名称 | 生效场景 | 是否默认启用 | 默认值 |
---|---|---|---|
禁止 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 条件。 | 数据交互台 | 未启用 | 无 |
表要有主键。 |
| 未启用 | 无 |
表要有备注。 |
| 未启用 | 无 |
表不能使用外键。 |
| 未启用 | 无 |
限制表名大小写。 |
| 未启用 |
|
限制表存储引擎。 说明 仅支持在 |
| 未启用 | 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 |
限制列不能使用部分数据类型。 |
| 未启用 | 无 |
索引中的字段要求设置为 说明 仅支持在 |
| 未启用 | 无 |
安全规则名称 | 是否默认启用 | 级别 | 默认值 |
---|---|---|---|
SQL 语法解析异常,建议检查 SQL 语句是否合法。 | 启用 |
| 无 |
SELECT 语句建议指定 WHERE 条件。 | 未启用 |
| 无 |
限制 UPDATE/DELETE 语句多表关联的数量 | 未启用 |
| 5 |
UPDATE/DELETE 语句检测多表关联语法是否完整(JOIN 遗漏 ON 子句)。 | 未启用 |
| 无 |
UPDATE/DELETE 语句建议指定 WHERE 条件。 | 未启用 |
| 无 |
INSERT 语句字段名不能重复。 | 未启用 |
| 无 |
INSERT 语句字段列表和值列表要匹配 | 未启用 |
| 无 |
INSERT 语句建议指定 INSERT 字段列表。 | 未启用 |
| 无 |
INSERT 语句不能为 | 未启用 |
| 无 |
INSERT 语句不建议使用 | 未启用 |
| 无 |
限制 INSERT 语句一条 | 未启用 |
| 1000 |
INSERT 语句检测 | 未启用 |
| 无 |
UPDATE 多表时检测 SET 的列是否指定表前缀。 | 未启用 |
| 无 |
UPDATE 语句不建议更新表上的“创建时间”列。 | 未启用 |
|
|
UPDATE 语句建议更新表上的“修改时间”列。 | 未启用 |
|
|
UPDATE 语句检测 SET 多个列之间的分隔符( AND 非法)。 | 未启用 |
| 无 |
UPDATE/DELETE 语句检测 WHERE 条件是否包含子查询。 | 未启用 |
| 无 |
限制 WHERE 条件中 IN 子句包含元素个数。 | 未启用 |
| 无 |
UPDATE 语句检测是否更新了主键。 | 未启用 |
| 无 |
UPDATE 语句检测 UPDATE 的表/字段是否存在。 | 未启用 |
| 无 |
UPDATE 语句检测是否更新了唯一键。 | 未启用 |
| 无 |
限制 SELECT 语句 LIMIT 的 | 未启用 |
| 2000 |
SELECT 时不建议 | 未启用 |
| 无 |
限制 SELECT 语句多表关联的数量。 | 未启用 |
| 3 |
SELECT 语句不建议使用 | 未启用 |
| 无 |
SELECT 语句不建议对不同的表 | 未启用 |
| 无 |
SELECT 语句不建议对常量进行 | 未启用 |
| 无 |
SELECT 语句不建议 | 未启用 |
| 无 |
SELECT 语句不建议 | 未启用 |
| 无 |
SELECT 语句不建议 | 未启用 |
| 无 |
SELECT 语句不建议使用 | 未启用 |
| 无 |
SELECT 语句不建议使用 | 未启用 |
| 无 |
SELECT 语句不建议使用 | 未启用 |
| 无 |
WHERE 条件中不建议使用前通配符查找。 | 未启用 |
| 无 |
WHERE 条件中不建议使用反向查询( | 未启用 |
| 无 |
WHERE 条件中检测是否通过 OR 操作符连接过滤条件。 | 未启用 |
| 无 |
WHERE 条件中检测没有通配符的 LIKE 语句。 | 未启用 |
| 无 |
开启安全管控:在开启实例的安全管控时,设置安全规则集。