数据管理DMS的SQL审核功能,支持对上传的SQL语句进行审核并提供优化建议,避免无索引或不规范的SQL语句,降低SQL注入风险。

前提条件

数据库类型如下:
  • RDS MySQLPolarDB MySQL版AnalyticDB MySQL版、其他来源MySQL。
  • RDS MariaDB
  • PolarDB分布式版
  • Oracle。
  • PolarDB PostgreSQL版(兼容Oracle)
  • OceanBase。

背景信息

项目研发过程中,需要通过数据库的增、删、改、查等SQL操作来完成业务逻辑的处理及页面数据的展现。而在项目正式发布到线上之前,需要对涉及的SQL进行全面的审核,避免不符合数据库开发规范的SQL发布到线上影响生产服务。例如如下建表语句未增加主键、未添加表格备注且未对字段增加备注信息:
CREATE TABLE `test_sql_review_table` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `gmt_create` datetime NOT NULL,
  `name` varchar(256) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

若所有SQL都由DBA逐一进行人工审核,人力资源消耗过大,也容易降低研发效率。

现DMS推出的SQL审核功能将结合安全规则的SQL审核优化建议,对SQL进行审核并提供优化建议,您可以在安全规则中自定义SQL规范,例如表要有主键、限制主键列类型及限制主键包含列的个数等,更多信息,请参见配置SQL审核优化建议

操作步骤

  1. 登录数据管理DMS 5.0
  2. 在顶部菜单栏中,选择数据库开发 > SQL审核 > SQL审核工单
  3. 在页面右上角,单击SQL审核
  4. 配置SQL审核工单参数。
    配置项说明
    项目名称输入项目名称。
    数据库选择SQL语句的目标数据库。
    说明 您需要有该库的查询权限,更多信息,请参见查看我的权限
    业务背景详细描述提交工单的原因或目标,减少沟通成本。
    变更相关人设置的相关人员都可查看工单,并协同工作,非相关人员则不能查看工单(管理员、DBA除外)。
    上传文件您可选择以下两种方式上传文件,取值:
    • 上传:支持上传多个SQL文件。
    • 输入文本:支持输入iBatis框架或MyBatis框架的.xml文件和.txt格式的SQL文件。
    更多信息,请参见上传文件示例
  5. 单击提交申请
    系统将对SQL文件进行解析,并根据当前数据库的安全规则,对SQL语句进行逐条审核,返回的SQL审核优化结果包含必须改进潜在问题建议改进索引推荐。更多信息,请参见配置SQL审核优化建议
  6. 查看SQL审核结果。

    系统将提供如下六种SQL审核检测状态:

    状态说明动作
    检测通过该语句不存在必须改进项,但可能存在潜在问题建议改进项。您可以单击详情,查看SQL语句与对应的SQL建议。

    若需要调整SQL语句,您可以单击调整SQL,调整SQL语句。

    检测不通过该语句存在必须改进项。请单击详情查看SQL建议,并单击调整SQL,调整SQL语句。
    人工通过/人工不通过除DMS审核SQL以外,若存在一些历史问题暂时无法修复或无需修复。您可以选择人工审核 > 人工通过人工不通过,手动标注检测结果。
    解析异常DMS无法识别的SQL语句。请单击调整SQL,调整SQL语句,并重新提交审核。
    等待分析DMS未开始识别SQL语句。
  7. 单击提交审批,管理员或DBA将再次确认SQL。
    审批通过后即工单流程结束。
    说明 若存在检测不通过解析异常状态的SQL语句,系统将在提交审批后报错。

上传文件示例