数据管理DMS提供的SQL窗口支持关系型数据库和非关系型数据库,安全规则的定义和分类各不相同。本文档介绍Redis数据库的SQL窗口安全规则。

检测点

  • SQL权限规范:对SQL执行权限进行约束。
    说明 如提交者是否拥有对应的库、表、列权限。
  • keys命令规范:可对key命令执行进行约束。
  • string命令规范:可对string命令进行约束。
  • list命令规范:可对list命令进行约束。
  • set命令规范:可对set命令进行约束。
  • sortedset命令规范:可对sortedset命令进行约束。
  • hash命令规范:可对hash命令进行约束。
  • 其他命令规范:可对其他命令进行约束。
说明 您可以使用安全规则模板库中提供的规则,也可以自定义新增规则。详情请参见新增规则操作步骤

检测点流程图

DMS支持的SQL

目前DMS企业版能够通过语法解析识别的SQL大类和SQL子类说明如下:

命令分类 具体类型枚举
keys读命令
  • EXISTS
  • TTL
  • PTTL
  • RANDOMKEY
  • TYPE
  • SCAN
keys写命令
  • DEL
  • DUMP
  • EXPIRE
  • EXPIREART
  • MOVE
  • PERSIST
  • RENAME
  • RENAMENX
  • TOUCH
  • UNLIMK
string读命令
  • GET
  • GETRANGE
  • BITCOUNT
  • GETBIT
  • MGET
  • STRLEN
string写命令
  • APPEND
  • DECR
  • DECRBY
  • GETSET
  • INCR
  • INCRBY
  • INCRBYFLOAT
  • MSET
  • MSETNX
  • SET
  • SETRANGE
  • SETBIT
list读命令
  • LINDEX
  • LLEN
  • LRANGE
list写命令
  • BLPOP
  • BRPOP
  • BRPOPLPUSH
  • LINSERT
  • LPOP
  • LPUSH
  • LPUSHX
  • LREM
  • LSET
  • LTRIM
  • RPOP
  • RPOPLPUSH
  • RPUSH
  • RPUSHX
set读命令
  • SCARD
  • SISMEMBER
  • SRANDMEMBER
  • SSCAN
  • SDIFF
  • SINTER
  • SMEMBERS
  • SUNION
set写命令
  • SADD
  • SMOVE
  • SPOP
  • SREM
  • SDIFFSTORE
  • SINTERSTORE
  • SUNIONSTORE
sortedset读命令
  • ZCARD
  • ZCOUNT
  • ZLEXCOUNT
  • ZRANGE
  • ZRANGEBYLEX
  • ZRANGEBYSCORE
  • ZRANK
  • ZREVRNGE
  • ZREVRANGEBYLEX
  • ZREVRANGEBYSCORE
  • ZREVRANK
  • ZSCAN
  • ZSCORE
sortedset写命令
  • ZADD
  • ZINCRBY
  • ZINTERSTORE
  • ZPOPMAX
  • ZPOPMIN
  • ZREM
  • ZUNIONSTORE
  • BZPOPMIN
  • BZPOPMAX
  • ZREMRANGEBYLEX
  • ZREMRANGEBYRANK
  • ZREMRANGEBYSCORE
  • ZUNIONSTORE
hash读命令
  • HEXISTS
  • HGET
  • HLEN
  • HMGET
  • HSCAN
  • HSTRLEN
  • HGETALL
  • HKEYS
  • HVALS
hash写命令
  • HDEL
  • HINCRBY
  • HINCRBYFLOAT
  • HMESET
  • HSET
  • HSETNX
server读命令
  • DBSIZE
  • CLIENT LIST
  • INFO
  • SLOWLOG
connection命令
  • PING
HyperLogLog命令
  • PFCOUNT
  • PFADD
  • PFMERGE
TairDoc读命令
  • JSONGET
  • JSONMGET
  • JSONTYPE
  • JSONSTRLEN
  • JSONARRLEN
TairDoc写命令
  • JSONDEL
  • JSONSET
  • JSONNUMINCRBY
  • JSONSTRAPPEND
  • JSONARRAPPEND
  • JSONARRPOP
  • JSONARRINSERT
  • JSONARRTRIM
TairString读命令
  • EXGET
TairString写命令
  • CAS
  • CAD
  • EXSET
  • EXSETVER
  • EXINCRBY
  • EXINCRBYFLOAT
  • EXCAS
  • EXCAD
TairBloom读命令
  • BFEXISTS
  • BFMEXISTS
  • BFDEBUG
TairBloom写命令
  • BFADD
  • BFMADD
  • BFINSERT
  • BFRESERVE
TairGis读命令
  • GISGET
  • GISSEARCH
  • GISCONTAINS
  • GISINTERSECTS
  • GISGETALL
TairGis写命令
  • GISADD
  • GISDEL
TairHash读命令
  • EXHPTTL
  • EXHTTL
  • EXHVER
  • EXHGET
  • EXHGETALL
  • EXHGETWITHVER
  • EXHMGET
  • EXHMGETWITHVER
  • EXHLEN
  • EXHSTRLEN
  • EXHKEYS
  • EXHVALS
  • EXHSCAN
  • EXHEXISTS
TairHash写命令
  • EXHSET
  • EXHSETNX
  • EXHMSET
  • EXHMSETWITHOPTS
  • EXHPEXPIREAT
  • EXHPEXPIRE
  • EXHEXPIREAT
  • EXHEXPIRE
  • EXHSETVER
  • EXHINCRBY
  • EXHINCRBYFLOAT
  • EXHDEL

因子和动作

  • 因子

    因子是系统内置变量,可用来获取安全规则校验的上下文信息,如获取SQL类型、影响行数等。因子全部以@fac.开头,后接因子名称。每个模块的不同检测点均提供不同因子,SQL窗口中提供因子的说明请参见下表:

    因子名 说明
    @fac.cmd_type 命令类型,取值请参见DMS支持的SQL
    @fac.env_type 环境类型,值是环境标识。如:DEVPRODUCT。详情请参见实例环境说明
    @fac.is_read 是否为读命令。取值为:
    • true
    • false
    @fac.is_write 是否为写命令。取值为:
    • 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
  • 动作

    动作是满足if条件之后系统执行的行为,例如禁止提交工单、选择工作流、允许执行、拒绝执行等,这些动作表达了安全规则的主要目的。动作全部以@act.开头,后接动作名称。每个模块的不同检测点均提供不同动作,SQL窗口中提供动作的说明请参见下表:

    动作名 说明
    @act.reject_execute 拒绝执行当前SQL。
    @act.allow_execute 允许执行当前SQL。

模板库

安全规则提供了大量的规则模板可直接选择启用,也可以在模板基础上按照实际需求自行调整启用。SQL窗口中的模板如下所示:

检测点 模板
执行权限规范 普通用户需要检查权限。
所有用户都不需要检查权限。
命令规范-Keys 测试环境,允许执行Key读命令(白名单集合)。
生产环境,允许执行Key读命令(白名单集合)。
生产环境,允许执行Key写命令(白名单集合)。
命令规范-String 测试环境,允许执行String读命令(白名单集合)。
生产环境,允许执行String读命令(白名单集合)。
生产环境,允许执行String写命令(白名单集合)。
命令规范-List 测试环境,允许执行List读命令(白名单集合)。
生产环境,允许执行List读命令(白名单集合)。
生产环境,允许执行List写命令(白名单集合)。
命令规范-SET 测试环境,允许执行Set读命令(白名单集合)。
生产环境,允许执行Set读命令(白名单集合)。
生产环境,允许执行Set写命令(白名单集合)。
命令规范-SortedSet 测试环境,允许执行SortedSet读命令(白名单集合)。
生产环境,允许执行SortedSet读命令(白名单集合)。
生产环境,允许执行SortedSet写命令(白名单集合)。
命令规范-Hash 测试环境,允许执行Hash读命令(白名单集合)。
生产环境,允许执行Hash读命令(白名单集合)。
生产环境,允许执行Hash写命令(白名单集合)。
命令规范-其他 测试环境,允许执行其他读命令(白名单集合)。
测试环境,允许执行其他写命令(白名单集合)。
生产环境,允许执行Hash读命令(白名单集合)。
生产环境,允许执行Hash写命令(白名单集合)。

新增规则操作步骤

  1. 登录DMS控制台
  2. 在页面顶部的导航栏中,单击系统管理 > 安全规则 > 安全规则
  3. 安全规则页签中,单击目标规则集右侧操作列中的编辑
  4. 详情页面左侧的导航栏中,单击SQL窗口
  5. SQL窗口页签中,单击操作右侧的新增规则
  6. 新增规则 - SQL窗口对话框中,设置如下参数:
    参数 说明
    检测点(必选) 选择需要增加规则的检测点。检测点的详情请参见检测点
    模板库(可选) 安全规则模板库中提供了大量规则模板,选择了检测点以后,您可以从模板库中按需加载规则模板。可选的模板库列表请参见模板库
    规则名称(必填) 自定义规则名称。(如您在模板库中选择了规则模板,此处会自动填充。)
    规则DSL(必填) 填写规则DSL,DSL语法请参见安全规则DSL语法。如您在模板库中选择了规则模板,此处会自动填充。
  7. 单击提交
  8. 新增的规则默认处于已禁用状态,单击规则右侧操作列中的启用
  9. 在弹出的对话框中单击确认