全部产品
云市场

SQL窗口-MongoDB数据库

更新时间:2020-05-21 13:50:36

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

基础配置项

单次查询最大返回行数:定义查询结果最多返回多少行。

替代原配置管理中的单次查询SQL最大的行数

检测点

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

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

  • 集合规范:对Mongo 集合命令执行进行约束。

  • DB命令规范:对Mongo DB命令进行约束。
  • 查询缓存命令规范:对Mongo 查询缓存命令进行约束。
  • 用户管理命令规范:对Mongo 查询缓存命令进行约束。
  • 角色管理命令规范:对Mongo 角色管理命令进行约束。
  • 复制集命令规范:对Mongo 复制集命令进行约束。
  • 分片命令规范:对Mongo 分片命令进行约束。

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

检测点流程图

检测点流程图

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

因子和动作

  • 因子:因子是系统内置变量,可用来获取安全规则校验的上下文信息,如获取SQL类型、影响行数等。因子全部以@fac.开头,后接因子名称。每个模块的不同检测点均提供不同因子,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.开头,后接动作名称。每个模块的不同检测点均提供不同动作,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子类型。

模板库

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

检测点 模板
用户权限检查
普通用户需要检查权限。
集合命令规范
生产环境,允许执行数据更新命令。
生产环境,允许执行集合修改命令。
生产环境,允许执行索引修改命令。
生产环境,允许执行其他高危命令。
允许执行所有集合查询命令。
DB命令规范
线上环境,允许创建集合。
线下环境,允许执行其他数据库高危命令。
线上环境,允许执行其他数据库高危命令。
允许执行所有数据库查询命令。
查询缓存命令规范
允许执行所有查询计划缓存写命令。
允许执行所有查询计划缓存读命令。
用户管理命令规范
允许执行用户查询命令。
允许执行用户修改命令。
角色管理命令规范
允许执行角色查询命令。
线下环境,允许执行角色修改命令。
线下环境,允许执行角色修改命令。
复制集命令规范
允许执行副本集查询命令。
分片命令规范
允许执行分片查询命令。

新增规则操作步骤

  1. 登录DMS控制台

  2. 在页面顶部的导航栏中,单击系统管理 > 安全管理 > 安全规则
    新增安全规则

  3. 安全规则页签中,单击目标规则集右侧操作列中的编辑

  4. 详情页面左侧的导航栏中,单击SQL窗口

  5. SQL窗口页签中,单击操作右侧的新增规则
    新增安全规则

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

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

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

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