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

前提条件

数据库类型为MySQL、RDS MySQL、PolarDB MySQL、MariaDB、PolarDB-X、AnalyticDB MySQL、OceanBase for MySQL

背景信息

项目研发过程中,需要通过数据库的增、删、改、查等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控制台
  2. 在页面顶部,选择全部功能 > 优化 > SQL审核
  3. 配置SQL审核工单信息。
    配置项 说明
    项目名称 输入项目名称,减少沟通成本。
    数据源 选择SQL语句的目标数据库。
    说明 您需要有该库的查询权限,更多信息,请参见查看我的权限
    备注

    详细描述导出数据的原因或目标,减少沟通成本。

    变更相关人

    设置的相关人员都可查看工单,并协同工作,非相关人员则不能查看工单(管理员、DBA除外)。

    上传文件 单击上传,上传SQL文件,支持上传多个文件。
    支持文件类型如下:
    • iBatis框架或MyBatis框架的.xml文件
    • .txt格式的SQL文件
    更多信息,请参见上传文件示例
  4. 单击提交申请
    系统将对SQL文件进行解析,并根据当前数据库的安全规则,对SQL语句进行逐条审核,返回的SQL审核优化结果包含必须改进潜在问题建议改进索引推荐,更多信息,请参见SQL审核优化建议
  5. 查看SQL审核结果。

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

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

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

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

上传文件示例