SQLConsole作为SQL/命令执行的入口,在SQL执行的时候,可以通过设置一系列的安全规则校验,让只有满足规则校验的SQL,才能正常下发执行;新版的安全规则具备非常灵活的能力(DSL),能够让SQLConsole以最严格的形式(对想要限制执行的SQL进行限制)或者以最宽松的模式(基本上等同于终端模式,对一切SQL进行放行)
SQLConsole支持的数据库分为关系型数据库(NewSQL目前基本上都是按兼容关系型数据库来设计,因此也当成关系型数据库看待)和非关系型数据库(NoSQL),安全规则的定义和分类不同
常用配置项说明
检测点说明
所有的安全规则(包括配置项和每个自定义的规则),都在SQL下发之前进行,为了更好归类自定义规则,做了如下检测点:
SQL执行数量规范:可在此检测点对单次提交的SQL个数进行约束
检测点作用流程示意图
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 |
常用配置项说明
检测点说明
所有的安全规则(包括配置项和每个自定义的规则),都在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 |
检测点说明
所有的安全规则(包括配置项和每个自定义的规则),都在命令下发之前进行,为了更好归类自定义规则,做了如下检测点:
用户执行权限:可在此检测点对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提交规则
风险识别规则
风险审批规则
检测点作用流程示意图