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

SQL窗口检测点

检测点 描述
基础配置项 规则集的基础配置,包括单次查询最大返回行数和结果集是否支持编辑。
用户权限检查 对用户执行权限进行约束。例如,是否需要对普通用户进行检查权限。
集合命令规范 对Mongo集合命令执行进行约束。
DB命令规范 对Mongo DB命令进行约束。
查询缓存命令规范 对Mongo查询缓存命令进行约束。
用户管理命令规范 对Mongo用户管理命令进行约束。
角色管理命令规范 对Mongo角色管理命令进行约束。
复制集命令规范 对Mongo复制集命令进行约束。
分片命令规范 对Mongo分片命令进行约束。
说明 功能模块的检测点中内置了大量的配置项,您可以根据实际需求调整默认配置或增加新规则。具体操作,请参见配置安全规则

检测点工作流程图:

1

因子和动作

  • 因子:系统内置变量,可用来获取安全规则校验的上下文信息,如获取命令类型、影响行数等。
    • 因子全部以@fac.开头,后接因子名称。
    • 每个模块的不同检测点会提供不同因子。
    表 1. SQL窗口模块的因子
    因子名 说明
    @fac.sql_sub_type SQL子类,取值可参见DMS支持的SQL
    @fac.env_type 环境类型,值是环境标识。如:DEVPRODUCT。详情请参见实例环境说明
    @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
  • 动作:满足if条件之后系统执行的行为,表达了安全规则的主要目的。例如禁止提交工单、选择工作流、允许执行、拒绝执行等。
    • 动作全部以@act.开头,后接动作名称。
    • 每个模块的不同检测点会提供不同动作。
    表 2. SQL窗口模块的动作
    动作名 说明
    @act.reject_execute 拒绝执行当前SQL。
    @act.allow_execute 允许执行当前SQL。
    @act.reject_sql_type_execute 拒绝执行特定SQL类型的SQL,动作后需要指定具体的SQL子类型,例如:@act.reject_sql_type_execute 'UPDATE'
    @act.allow_sql_type_execute 允许执行特定SQL类型的SQL,同上需要指定具体的SQL子类型。

DMS支持的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