全部产品
云市场

功能模块详细配置映射表

更新时间:2019-08-19 11:14:43

SQLConsole作为SQL/命令执行的入口,在SQL执行的时候,可以通过设置一系列的安全规则校验,让只有满足规则校验的SQL,才能正常下发执行;新版的安全规则具备非常灵活的能力(DSL),能够让SQLConsole以最严格的形式(对想要限制执行的SQL进行限制)或者以最宽松的模式(基本上等同于终端模式,对一切SQL进行放行)

SQLConsole支持的数据库分为关系型数据库(NewSQL目前基本上都是按兼容关系型数据库来设计,因此也当成关系型数据库看待)和非关系型数据库(NoSQL),安全规则的定义和分类不同

SQLConsole for 关系型数据库

常用配置项说明

  • 单次查询最大返回行数:定义查询结果行数最多返回多少行,用于替换原来配置管理里面的“单次查询SQL最大的行数”(对接新的安全规则后,配置管理里面的“单次查询SQL最大行数”配置项将废弃,无效)
  • 单次查询包含敏感列条件的最大返回行数:用于替换原来配置管理里面的“单次查询包含敏感列条件条件的SQL最大的行数”(对接新的安全规则后,配置管理里面的“单次查询SQL最大行数”配置项将废弃,无效)
  • 限制允许SQL全表扫描的最大值(MB):仅MYSQL和Oracle有效,查询SQL下发前检查执行计划,若扫描大小超过此配置值,则会拒绝SQL执行,提示用户优化查询SQL再执行
  • 关闭执行变更SQL校验影响行数和提示:是否关闭在执行变更SQL的时候进行预校验影响行数并弹框确认,系统缺省行为是进行校验并弹框确认的

检测点说明

  • 所有的安全规则(包括配置项和每个自定义的规则),都在SQL下发之前进行,为了更好归类自定义规则,做了如下检测点:

  • SQL执行数量规范:可在此检测点对单次提交的SQL个数进行约束

  • DQL规范:可在此检测点对DQL类型的SQL执行进行约束
  • DML规范:可在此检测点对DML类型的SQL执行进行约束
  • DDL规范:可在此检测点对DDL类型的SQL执行进行约束
  • DCL规范:可在此检测点对DCL类型的SQL执行进行约束
  • 其他SQL规范:可在此检测点对泛化的SQL执行进行约束,比如高危SQL,每个企业对高危SQL的定义不同,可能包含了部分DML种类、部分DCL种类,部分DDL种类的SQL;再比如,DMS平台识别不出来的SQL,也可以在此进行约束
  • SQL权限规范:可在此检测点对SQL执行权限(提交者是否对应的库、表、列权限)进行约束
  • SQL执行性能规范:可在此检测点对待执行的SQL进行性能方面的约束,比如DML影响行数超过阈值,拒绝执行;DDL涉及到的表空间(统计值)超过一定阈值,拒绝执行
  • 库表列权限识别异常规范:DMS企业版对用户提交的SQL,会进行一次SQL语法解析,在此语法解析基础上,对访问的库表列资源进行权限校验,但是受限于目前解析能力的不足,有部分复杂的SQL仍不支持,但是用户其实是想让这类SQL可以被执行的,这个检测点提供这样的能力,当复杂的SQL解析异常导致无法正常下发,可通过配置规则,让SQL执行,注意,这将会使SQL权限规范、SQL规范校验、SQL执行性能规范等安全规则失效
  • 逻辑库SQL执行规范:针对逻辑库查询预留的检测点,物理库查询不适用;

检测点作用流程示意图

关系型数据库

SQL大类和SQL子类

  • 目前DMS企业版能够通过语法解析识别的SQL大类和SQL子类说明如下:
SQL分类 SQL子类
DQL
- SELECT
- DESC
- EXPLAIN
- SHOW
DML
- INSERT
- INSERT_SELECT
- REPLACE
- REPLACE_INTO
- UPDATE
- DELETE
- MERGE
DDL
- DATABASE_OP
- CREATE
- CREATE_INDEX
- CREATE_VIEW
- CREATE_SEQUENCE
- CREATE_TABLE
- CREATE_SELECT
- TRUNCATE
- DROP
- DROP_INDEX
- DROP_VIEW
- DROP_TABLE
- RENAME
- ALTER
- ALTER_INDEX
- ALTER_VIEW
- ALTER_TABLE
- ALTER_SEQUENCE
- CREATE_FUNCTION
- CREATE_PROCEDURE
- ALTER_FUNCTION
- ALTER_PROCEDURE
- DROP_FUNCTION
- DROP_PROCEDURE
DCL
- GRANT
- DECLARE
- SET
- ANALYZE
- FLUSH
- OPTIMIZE
- KILL

SQLConsole for MongoDB

常用配置项说明

  • 单次查询最大返回行数:定义查询结果行数最多返回多少行,用于替换原来配置管理里面的“单次查询SQL最大的行数”(对接新的安全规则后,配置管理里面的“单次查询SQL最大行数”配置项将废弃,无效)

检测点说明

  • 所有的安全规则(包括配置项和每个自定义的规则),都在SQL下发之前进行,为了更好归类自定义规则,做了如下检测点:

  • 用户执行权限:可在此检测点对SQL执行权限(提交者是否对应的库、集合权限)进行约束

  • 集合规范:可在此检测点对【Mongo 集合命令】执行进行约束
  • DB命令规范:可在此检测点对【Mongo DB命令】进行约束
  • 查询缓存命令规范:可在此检测点对【Mongo 查询缓存命令】进行约束
  • 用户管理命令规范:可在此检测点对【Mongo 查询缓存命令】进行约束
  • 角色管理命令规范:可在此检测点对【Mongo 角色管理命令】进行约束
  • 复制集命令规范:可在此检测点对【Mongo 复制集命令】进行约束
  • 分片命令规范:可在此检测点对【Mongo 分片命令】进行约束

检测点作用流程示意图

MongoDB

命令分类和枚举

  • 目前DMS企业版能够通过语法解析识别的SQL大类和SQL子类说明如下:
命令分类 具体类型枚举
集合命令 查询命令列表
- aggregate,find,findOne,count,distinct,getIndexes,getShardDistribution,isCapped,stats,dataSize,storageSize,totalIndexSize,totalSize
数据更新命令列表
- insert,save,findAndModify,remove,update
集合修改命令列表
- drop,renameCollection
索引修改命令列表
- createIndex,createIndexes,dropIndexes,reIndex
其他命令
- validate
DB命令 数据库查询命令
- commandHelp,currentOp,getCollectionInfos,getCollectionNames,getLastError,getLastErrorObj,getLogComponents,getPrevError,getProfilingStatus,getReplicationInfo,getSiblingDB,help,isMaster,listCommands,printCollectionStats,printReplicationInfo,version,serverBuildInfo,serverStatus,stats
创建集合命令
- createCollection
高危命令
- dropDatabase,fsyncLock,fsyncUnlock,killOp,repairDatabase,resetError,runCommand
查询缓存命令 读命令
- getPlanCache,getPlansByQuery,listQueryShapes
写命令
- clearPlansByQuery
用户管理命令 用户查询命令
- getUser,getUsers
用户修改命令
- createUser,changeUserPassword,dropUser,dropAllUsers,grantRolesToUser,revokeRolesFromUser,updateUser
角色管理命令
角色查询命令
- getRole,getRoles
角色修改命令
- createRole,dropRole,dropAllRoles,grantPrivilegesToRole,revokePrivilegesFromRole,revokeRolesFromRole,updateRole
复制集命令
- help,printReplicationInfo,status,conf
分片命令 - getBalancerState,isBalancerRunning

SQLConsole for Redis

检测点说明

  • 所有的安全规则(包括配置项和每个自定义的规则),都在命令下发之前进行,为了更好归类自定义规则,做了如下检测点:

  • 用户执行权限:可在此检测点对SQL执行权限(提交者是否对应的库、集合权限)进行约束

  • keys命令规范:可在此检测点对【key命令】执行进行约束
  • string命令规范:可在此检测点对【string命令】进行约束
  • list命令规范:可在此检测点对【list命令】进行约束
  • set命令规范:可在此检测点对【set命令】进行约束
  • sortedset命令规范:可在此检测点对【sortedset命令】进行约束
  • hash命令规范:可在此检测点对【hash命令】进行约束
  • 其他命令规范:可在此检测点对【其他命令】进行约束

检测点作用流程示意图

redis

命令分类和枚举

  • 目前DMS企业版能够通过语法解析识别的SQL大类和SQL子类说明如下:
命令分类 具体类型枚举
kes命令 keys读命令
- EXISTS,TTL,PTTL,RANDOMKEY,TYPE,SCAN,OBJECTS
keys写命令
- DEL,DUMP,EXPIRE,EXPIREART,MOVE,PERSIST,PEXPIRE,PEXPIREAT,RENAME,RENAMENX,RESTORE,SORT,TOUCH,UNLIMK,WAIT,MIGRATE
string命令
string读命令
- GET,GETRANGE,BITCOUNT,GETBIT,MGET,STRLEN,BITOPS
string写命令
- APPEND,BITFIELD,BITOP,DECR,DECRBY,GETSET,INCR,INCRBY,INCRBYFLOAT,MSET,MSETNX,PSETEX,SET,SETNX
list命令 list读命令
- LINDEX,LLEN,LRANGE
list写命令
- BLPOP,BRPOP,BRPOPLPUSH,LINSERT,LPOP,LPUSH,LPUSHX,LREM,LSET,LTRIM,RTOP,RPOPLPUSH,RPUSH,RPUSHX
set命令
set读命令
- SCARD,SISMEMBER,SRANDMEMBER,SSCAN
set写命令
- SADD,SMOVE,SPOP,SREM
sortedset命令 sortedset读命令
- ZCARD,ZCOUNT,ZLEXCOUNT,ZRANGE,ZRANGEBYLEX,ZRANGEBYSCORE,ZRANK,ZREVRNGE,ZREVRANGEBYLEX,ZREVRANGEBYSCORE,ZREVRANK,ZSCAN,ZSCORE
sortedset写命令
- ZADD,ZINCRBY,ZINTERSTORE,ZPOPMAX,ZPOPMIN,ZREM,ZUNIONSTORE,BZPOPMIN,BZPOPMAX
hash命令
hash读命令
- HEXISTS,HGET,HLEN,HMGET,HSCAN,HSTRLEN
hash写命令
- HDEL,HINCRBY,HINCRBYFLOAT,HMESET,HSET,HSETNX
其他命令 待补充

数据变更-安全规则配置

数据变更作为变更SQL执行的入口,在工单提交、审批时,可以通过设置一系列的安全规则校验,让只有满足规则校验的SQL,才能正常提交工单;同时可以自定义风险级别,让不同风险的变更,走不同的审批流程;

新版的安全规则具备非常灵活的能力(DSL),能够让【数据变更】以最严格的形式(对想要限制执行的SQL进行限制)或者以最宽松的模式(基本上等同于终端模式,对一切SQL进行放行)

常用配置项说明

风险等级列表

  • 不同的变更类型和场景,可以设置不同的风险等级,走不同的审批流程;
    目前系统默认四种风险:低风险、中风险、高风险、重大风险;
    这里的风险等级主要是在后面的【风险识别】和【风险审批】两个检查点中使用

检测点说明

  • 所有的安全规则(包括配置项和每个自定义的规则),都在最终执行前进行,为了更好归类自定义规则,做了如下检测点

SQL提交规则

  • SQL提交规则,主要是为了限制SQL类型的提交,比如只允许提交DML语句,具体的SQL类型可以参考SQLConsole中关于SQL类型的说明;

风险识别规则

  • 当【SQL提交规则】检查通过后,用户就可以提交审批了,在提交审批前,会执行风险识别规则,主要是为了识别本次工单的风险,可以根据数据库环境、SQL影响行数、SQL类型等条件,自定义风险等级;
    比如 提交线上DML语句,设置为中风险;删除线上字段,设置为高风险;

风险审批规则

  • 当【风险识别规则】执行后,就可以执行【风险审批规则】了,风险审批规则可以根据不同的风险级别,定义不同的审批流。
    这里需要注意的是,如果本次变更,同时触发了不同级别的风险,则系统会默认使用最高级别风险对应的审批流;

检测点作用流程示意图

数据变更