全部产品
云市场

SQL窗口-Redis数据库

更新时间:2020-05-14 09:48:56

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

检测点

  • SQL权限规范:对SQL执行权限进行约束。

    如提交者是否拥有对应的库、表、列权限。

  • keys命令规范:可对key命令执行进行约束。

  • string命令规范:可对string命令进行约束。

  • list命令规范:可对list命令进行约束。

  • set命令规范:可对set命令进行约束。

  • sortedset命令规范:可对sortedset命令进行约束。

  • hash命令规范:可对hash命令进行约束。

  • 其他命令规范:可对其他命令进行约束。

您可以使用安全规则模板库中提供的规则,也可以自定义新增规则。详情请参见新增规则操作步骤

检测点流程图

image

DMS支持的SQL

目前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
其他命令 暂时没有。
@fac.user_is_inst_dba 当前用户是否为当前实例的DBA。取值为:
  • true
  • false

因子和动作

  • 因子:因子是系统内置变量,可用来获取安全规则校验的上下文信息,如获取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窗口页签中,单击操作右侧的新增规则
    新增安全规则1

  6. 新增规则 - SQL窗口对话框中,设置如下参数:

    参数 说明
    检测点(必选)选择需要增加规则的检测点。检测点的详情请参见检测点
    模板库(可选) 安全规则模板库中提供了大量规则模板,选择了检测点以后,您可以从模板库中按需加载规则模板。可选的模板库列表请参见模板库
    规则名称(必填) 自定义规则名称。(如您在模板库中选择了规则模板,此处会自动填充。)
    规则DSL(必填) 填写规则DSL,DSL语法请参见安全规则DSL语法。如您在模板库中选择了规则模板,此处会自动填充。
  7. 单击提交

  8. 新增的规则默认处于已禁用状态,单击规则右侧操作列中的启用

  9. 在弹出的对话框中单击确认