您可以在DMS中通过SQL Console直接输入SQL语法或通过数据变更工单提交数据变更。同时,您可以自定义安全规则,实现对不同环境库定义不同的数据变更执行配置。本文将通过以下4个例子向您介绍典型场景下的安全规则设定与对应提交数据变更的方式。

注意事项

本示例中:
  • Poc_dev实例的安全规则为POC开发库规则
  • Poc_prod实例的安全规则为POC生产库规则

通过提交工单执行数据变更

本示例以提交工单的方式执行INSERT语句。

  1. 设置安全规则。
    说明 默认的安全规则规定以工单的方式执行所有DML(Data Manipulation Language)语句。
  2. 执行INSERT语句。
    1. 以普通用户账号,登录DMS数据管理服务
      说明 如果您需要切换到旧版数据管理DMS,单击页面右下角返回旧版,进入数据管理DMS平台。具体操作,请参见数据管理DMS 5.0切换至旧版
    2. 在顶部菜单栏中,选择SQL窗口 > SQL窗口
      说明 如果您使用的是旧版数据管理DMS,在顶部菜单栏中,选择全部功能 > SQLConsole > 单库查询
    3. 请先选择数据库弹框中,搜索并选择poc_prod数据库,单击确认
    4. 在SQL Console窗口中,输入如下语句单击执行

      往数据库中插入3行数据。

      INSERT INTO data_modify (name, phone, sex) VALUES ('dms_a', '19000001','男');
      INSERT INTO data_modify (name, phone, sex) VALUES ('dms_b', '19000002','女');
      INSERT INTO data_modify (name, phone, sex) VALUES ('dms_c', '19000003','男');
    5. 单击申请数据变更
      说明 由于默认的安全规则规定了INSERT语句不能在SQL Console直接执行,而是通过提交数据变更工单的方式执行数据变更,所以系统提示需要提交数据变更工单。
      申请数据变更
    6. 创建SQL变更工单弹窗中,配置如下信息。创建SQL变更工单
      配置项 说明
      原因类别(必选) 根据实际情况选择插入数据的原因。
      业务背景(必选) 详细填写本次操作的业务背景。
      相关人(可选) 被设置的人员可查看工单并协同工作,非相关人员则不能查看工单(管理员、DBA除外)。
      执行方式(必填) 选择审批通过后,提交者执行(默认),同时还支持:
      • 审批通过后,自动执行
      • 最后审批人执行
      影响行数(必填) 预估本次更新会影响的数据行数,可在SQL Console以count统计。
      回滚SQL(选填) 可直接执行的SQL语句,变更脚本对应的逆向脚本。
    7. 单击确认,此时系统将自动生成工单,继续单击查看工单查看工单
    8. 工单详情页中,再次确认工单详情信息。
      说明 您可以在工单详情页中,查看工单的详情信息,同时系统也会对将要执行的SQL进行执行前的预检查,包括SQL语法解析、安全规则中的SQL类型校验、工单提交人的权限检查、预计检查扫描行数等。
    9. 确认信息无误且预检查通过后,单击提交审批,并等待审批完成。提交审批按钮
      说明
      • 在提交审批前,您可以修改工单内容,一旦提交审批后,将不能修改相关信息。
      • 关于审批的操作详情请参见审批数据变更工单
      • 您可以在审批页签下,单击查看审批详情查询审批进度。数据变更-查看审批详情
    10. 待审批通过后,单击执行变更,配置如下信息,单击确定执行执行变更任务设置
      配置项 说明
      是否立即执行 选择是否立即执行,支持:
      • 立即执行:提交即刻执行。
      • 定时执行:按需指定在业务特定时间执行。
      默认为立即执行
      是否事务控制 选择是否开启事务控制,支持:
      • 开启:遇到失败则全部回滚(仅限DML,DDL不在范围内)。
      • 关闭:逐条提交,遇到失败则终止但不回滚。
      默认为关闭。
      是否备份数据 选择是否备份数据,支持:
      • 开启:针对UPDATE、DELETE语句将要影响数据,系统生成对应的INSERT脚本附件,对原数据进行备份。
      • 关闭:不生成备份附件。
      默认为开启。
      说明 在创建工单时,若执行方式选择为审批通过后,自动执行,系统会自动跳过此步骤。
    11. 系统将自动执行,工单结束。

      待执行成功后,您可通过单击详情按钮,查看执行日志详细,包括执行语句、执行所用时间、调度详情等信息。

设置开发库可免工单执行DML语句

若开发库的数据变更均需提交工单执行,会导致开发人员研发效能下降。您可以通过DMS内置的安全规则引擎,设置允许研发人员直接在SQL Console对开发库执行DML语句,且不需要提交工单审批,即可实现在不影响数据安全的情况下提升研发效能。

本示例将在SQL Console对开发库执行INSERT语句。

  1. 设置安全规则。
    1. 以管理员账号,登录DMS数据管理服务
      说明 如果您需要切换到旧版数据管理DMS,单击页面右下角返回旧版,进入数据管理DMS平台。具体操作,请参见数据管理DMS 5.0切换至旧版
    2. 在顶部菜单栏中,选择安全与规范 > 安全规则
      说明 如果您使用的是旧版数据管理DMS,在顶部菜单栏中,选择全部功能 > 系统管理 > 安全 > 安全规则
    3. 单击POC开发库规则右侧操作列下的编辑
    4. 详情页左侧的导航栏中,单击SQL变更,并单击SQL执行规则
    5. 找到允许所有DML在SQL控制台直接执行规则名,单击右侧的编辑编辑开发库规则
    6. 替换如下规则DSL,并单击提交编辑规则-开发库
      if
          @fac.sql_type in
          [ 'UPDATE','DELETE','INSERT','INSERT_SELECT','REPLACE','REPLACE_INTO','MERGE']
          AND
          @fac.env_type not in ['product','pre']
      then
          @act.allow_execute_direct
      elseif
          @fac.sql_type in
          [ 'UPDATE','DELETE','INSERT','INSERT_SELECT','REPLACE','REPLACE_INTO','MERGE']
          AND
          @fac.env_type in ['product','pre']
      then
          @act.allow_submit
      end
      说明 您可以在DMS中将数据库定义成多种环境类型,例如生产环境(product)、预发环境(pre)、开发环境(dev)、测试环境(test)等。该段安全规则DSL表示:数据库环境类型不为productpre的数据库可以直接执行UPDATEDELETEINSERT等上述DML语句,数据库环境类型为productpre的数据库需要通过提交工单执行上述DML语句。更多安全规则语法介绍请参见安全规则DSL语法
    7. 启用允许所有DML在SQL控制台直接执行规则,并禁用与其对应的原规则。开发库启用新规则
      说明
      • 允许所有DML在SQL控制台直接执行规则对应的规则为禁止所有DML在SQL控制台直接执行,必须以工单方式执行规则。
      • 若同时启用相对应的一组规则,系统将执行严管控原则。在本示例中,即会以工单的方式执行。
  2. 执行INSERT语句。
    1. 以普通用户账号,登录DMS数据管理服务
      说明 如果您需要切换到旧版数据管理DMS,单击页面右下角返回旧版,进入数据管理DMS平台。具体操作,请参见数据管理DMS 5.0切换至旧版
    2. 在顶部菜单栏中,选择SQL窗口 > SQL窗口
      说明 如果您使用的是旧版数据管理DMS,在顶部菜单栏中,选择全部功能 > SQLConsole > 单库查询
    3. 请先选择数据库弹框中,搜索并选择poc_dev数据库,单击确认
    4. 在SQL Console窗口中,输入如下语句并单击执行

      往数据库中插入1行数据。

      INSERT INTO data_modify (name, phone, sex) VALUES ('dms_a', '19000001','男');
      INSERT INTO data_modify (name, phone, sex) VALUES ('dms_b', '19000002','女');
      INSERT INTO data_modify (name, phone, sex) VALUES ('dms_c', '19000003','男');
    5. 单击确认确认执行变更

      单击确认后,系统执行SQL语句,流程结束。

      开发库执行成功

设置生产库的高风险SQL需提工单

DMS安全规则引擎可以根据SQL类型设置不同的审批流程。例如生产库中,DELETE语句会造成数据丢失,安全风险相对较大,可以为其设置更严格的审批流程,确保数据安全。接下来的示例将会演示如何将DELETE语句的审批流程配置为数据Owner+DBA,并提交数据工单申请。

  1. 设置审批流程。
    1. 以管理员账号,登录DMS数据管理服务
      说明 如果您需要切换到旧版数据管理DMS,单击页面右下角返回旧版,进入数据管理DMS平台。具体操作,请参见数据管理DMS 5.0切换至旧版
    2. 在顶部菜单栏中,选择安全与规范 > 审批流程
      说明 如果您使用的是旧版数据管理DMS,在顶部菜单栏中,选择全部功能 > 系统管理 > 安全 > 审批流程
    3. 单击新增审批模板
    4. 配置如下信息,单击提交新增审批模板
      参数名称 说明
      模板名称 审批模板名称。
      备注 审批模板的备注信息。
      审批节点 单击增加节点增加审批节点。审批顺序从小到大,例如:0为第一位审批节点,1为第二位审批节点。
      说明 本示例为先由数据Onwer进行审批,再由DBA进行审批。

      单击提交后,审批流程页将新增一个审批模板,本示例中模板ID为770096

      审批模板列表
  2. 设置安全规则。
    1. 以管理员账号,登录DMS数据管理服务
      说明 如果您需要切换到旧版数据管理DMS,单击页面右下角返回旧版,进入数据管理DMS平台。具体操作,请参见数据管理DMS 5.0切换至旧版
    2. 在顶部菜单栏中,选择安全与规范 > 安全规则
      说明 如果您使用的是旧版数据管理DMS,在顶部菜单栏中,选择全部功能 > 系统管理 > 安全 > 安全规则
    3. 单击POC生产库规则右侧操作列下的编辑编辑生产库规则
    4. 详情页左侧的导航栏中,单击SQL变更
    5. 单击风险识别规则,并单击操作右侧的新增规则生产库新增规则
    6. 新增规则 - SQL变更对话框中,配置如下信息,单击提交新增规则-高风险操作
      配置项 说明
      检测点(必选) 选择风险识别规则,同时系统还支持其他三个检测点:
      • SQL执行规则
      • 风险审批规则
      • 批量数据导入规则
      模板库(可选) 系统会在不同的检测点下提供大量规则模板,详细请参见SQL变更
      说明 本示例为手动输入DSL语法。
      规则名称(必填) 创建规则名称为生产环境,DELETE语句为高风险操作
      规则DSL(必填)