SQL窗口-关系型数据库

数据管理DMS安全规则提供的SQL窗口模块支持关系型数据库和非关系型数据库。本文以关系型数据库MySQL为例,介绍配置SQL窗口规则的方法。

SQL窗口模块检测点

检测点

规则说明

基础配置项

规则集的基础配置,包括单次查询最大返回行数、结果集是否支持编辑、是否允许对敏感数据进行计算等。

SQL执行数量规范

控制单次提交SQL的个数。

DQL SQL规范

增加执行DQL SQL类型的限制。

其他SQL规范

对执行不同类型的SQL进行约束,例如,允许未识别SQL执行(允许执行DMS不能识别的SQL命令)、禁止全表DELETE执行等。

SQL权限规范

控制SQL库表、敏感列、行权限等。

SQL执行性能规范

禁止执行影响行数或表空间超过阈值的DDL、DML。

库表列权限识别异常规范

当DQL、DML、DDL或DCL SQL解析异常时,是否允许继续执行SQL或拒绝执行特定SQL类型。

逻辑库SQL执行规范

对执行不同类型的SQL进行约束。

说明

功能模块的检测点中内置了大量的配置和规则,您可以根据实际需求调整配置值、规则状态,或自定义新规则。具体操作,请参见配置安全规则

检测点工作流程图:

image

因子和动作

  • 因子:系统内置变量,可用来获取安全规则校验的上下文信息,如获取命令类型、影响行数等。

    • 因子全部以@fac.开头,后接因子名称。

    • 每个模块的不同检测点会提供不同因子。

    表 1. SQL窗口模块的因子

    因子

    说明

    @fac.sql_count

    单次提交的SQL条数。

    @fac.select_sql_count

    单次提交的SQL中查询类SQL的条数。

    @fac.dml_sql_count

    单次提交的SQL中DML SQL的条数。

    @fac.sql_type

    SQL分类。详情请参见DMS支持的SQL

    @fac.sql_sub_type

    SQL子类。详情请参见DMS支持的SQL

    @fac.env_type

    环境类型,值为环境标识。如:DEVPRODUCT。详情请参见实例环境类型

    @fac.fulltable_delete

    当前SQL是否为全表DELETE。取值为:

    • true

    • false

    @fac.fulltable_update

    当前SQL是否为全表UPDATE。取值为:

    • true

    • false

    @fac.current_sql

    当前的SQL。

    @fac.user_is_admin

    当前用户是否为管理员。取值为:

    • true

    • false

    @fac.user_is_dba

    当前用户是否是DBA。取值为:

    • true

    • false

    @fac.user_is_inst_dba

    当前用户是否是当前实例的DBA。取值为:

    • true

    • false

    @fac.user_is_sec_admin

    当前用户是否是安全管理员。取值为:

    • true

    • false

    @fac.sql_affected_rows

    当前SQL执行的SQL影响行数。

    说明

    会执行COUNT操作,请谨慎使用。

    @fac.sql_relate_table_store_size

    当前SQL访问的表的预估空间总大小(MB)。

    说明

    使用的是采集之后的预估值,非真实值。

  • 动作:满足if条件之后系统执行的行为,表达了安全规则的主要目的。例如禁止提交工单、选择工作流、允许执行、拒绝执行等。

    • 动作全部以@act.开头,后接动作名称。

    • 每个模块的不同检测点会提供不同动作。

    表 2. SQL窗口模块的动作

    动作

    说明

    @act.reject_execute

    拒绝执行当前SQL。

    @act.allow_execute

    允许执行当前SQL。

    @act.reject_sql_type_execute

    拒绝执行特定类型的SQL,需要指定具体的SQL子类型。例如:@act.reject_sql_type_execute 'UPDATE'

    @act.allow_sql_type_execute

    允许执行特定类型的SQL,需要指定具体的SQL子类型。例如:@act.allow_sql_type_execute 'UPDATE'

    @act.check_dml_sec_column_permission

    检查有无敏感列权限,如果没有,不执行DML变更。

    @act.uncheck_dml_sec_column_permission

    不检查敏感列权限。

    @act.check_sql_access_permission

    检查SQL操作权限,对访问的库、表、列是否有对应权限。例如查询、变更。

    @act.uncheck_sql_access_permission

    不检查SQL操作权限。

    @act.enable_sec_column_mask

    对无权限的敏感列进行数据脱敏。

    @act.disable_sec_column_mask

    不对无权限的敏感列进行数据脱敏。

DMS支持的SQL

DML

  • INSERT

  • INSERT_SELECT

  • SELECT_INTO

  • MULTI_INSERT

  • REPLACE

  • REPLACE_INTO

  • UPDATE

  • DELETE

  • MERGE

  • REMOVE

  • MSCK_REPAIR

  • REFRESH_MATERIALIZED_VIEW

  • BEGIN

  • START_TRANSACTION

  • COMMIT

  • ROLLBACK

  • SAVEPOINT

  • RELEASE_SAVEPOINT

  • SET

  • ADD_EDGE

  • ADD_VERTEX

  • SET_PROPERTY

  • GDB_DROP

  • INSERT_MANY

  • INSERT_ONE

  • DELETE_MANY

  • DELETE_ONE

  • UPDATE_MANY

  • UPDATE_ONE

  • WLM_ADD_RULE

DDL

  • CREATE

  • CREATE_SCHEMA

  • CREATE_INDEX

  • CREATE_VIEW

  • CREATE_SEQUENCE

  • CREATE_TABLE

  • CREATE_TABLEGROUP

  • CREATE_PACKAGE

  • CREATE_SELECT

  • TRUNCATE

  • DROP

  • DROP_SCHEMA

  • DROP_INDEX

  • DROP_VIEW

  • DROP_TABLE

  • DROP_TABLEGROUP

  • DROP_SEQUENCE

  • RENAME

  • ALTER_TABLE_DROP_COLUMN

  • ALTER_TABLE_CHARACTER_COLLATE

  • ALTER_TABLE_AUTOINCREMENT

  • ALTER

  • ALTER_SCHEMA

  • ALTER_INDEX

  • ALTER_VIEW

  • ALTER_TABLE

  • ALTER_TABLEGROUP

  • ALTER_SEQUENCE

  • CREATE_FUNCTION

  • ALTER_FUNCTION

  • DROP_FUNCTION

  • CREATE_PROCEDURE

  • ALTER_PROCEDURE

  • DROP_PROCEDURE

  • MONGO_CREATE_INDEX

  • MONGO_DROP_INDEX

  • CREATE_DATABASE

  • ALTER_DATABASE

  • DROP_DATABASE

  • CREATE_USER

  • ALTER_USER

  • DROP_USER

  • CREATE_ROLE

  • DROP_ROLE

  • EXEC

  • CALL_PROCEDURE

  • CREATE_TRIGGER

  • ALTER_TRIGGER

  • DROP_TRIGGER

  • CREATE_EVENT

  • ALTER_EVENT

  • DROP_EVENT

  • ROLLBACK_DDL

  • CANCEL_DDL

  • VACUUM

  • SUBMIT_JOB

  • CANCEL_JOB

  • BUILD_TABLE

  • IF

DQL

  • SELECT

  • DESC

  • EXPLAIN

  • SHOW_INDEX

  • SHOW

  • CHECK_TABLE

  • SHOW_DDL

  • LIST

  • GDB_QUERY

  • CHECKSUM

  • SELECT_PG_TERMINATION_BACKEND

  • WLM_LIST_RULE

DCL

  • GRANT

  • DECLARE

  • SET

  • ANALYZE

  • FLUSH

  • OPTIMIZE

  • KILL

  • RECOVER_DDL

  • REMOVE_DDL

  • SELECT_PG_TERMINATION_BACKEND