數(shù)據(jù)管理DMS的SQL審核功能,支持對上傳的SQL語句進行審核并提供優(yōu)化建議,避免無索引或不規(guī)范的SQL語句,降低SQL注入風險。

前提條件

數(shù)據(jù)庫類型如下:
  • RDS MySQLPolarDB MySQL版AnalyticDB MySQL版、其他來源MySQL。
  • RDS MariaDB
  • PolarDB分布式版
  • Oracle。
  • PolarDB PostgreSQL版(兼容Oracle)
  • OceanBase。

背景信息

項目研發(fā)過程中,需要通過數(shù)據(jù)庫的增、刪、改、查等SQL操作來完成業(yè)務邏輯的處理及頁面數(shù)據(jù)的展現(xiàn)。而在項目正式發(fā)布到線上之前,需要對涉及的SQL進行全面的審核,避免不符合數(shù)據(jù)庫開發(fā)規(guī)范的SQL發(fā)布到線上影響生產(chǎn)服務。例如如下建表語句未增加主鍵、未添加表格備注且未對字段增加備注信息:
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逐一進行人工審核,人力資源消耗過大,也容易降低研發(fā)效率。

現(xiàn)DMS推出的SQL審核功能將結合安全規(guī)則的SQL審核優(yōu)化建議,對SQL進行審核并提供優(yōu)化建議,您可以在安全規(guī)則中自定義SQL規(guī)范,例如表要有主鍵、限制主鍵列類型及限制主鍵包含列的個數(shù)等,更多信息,請參見配置SQL審核優(yōu)化建議

操作步驟

  1. 登錄數(shù)據(jù)管理DMS 5.0
  2. 在頂部菜單欄中,選擇數(shù)據(jù)庫開發(fā) > SQL審核 > SQL審核工單
  3. 在頁面右上角,單擊SQL審核
  4. 配置SQL審核工單參數(shù)。
    配置項說明
    項目名稱輸入項目名稱。
    數(shù)據(jù)庫選擇SQL語句的目標數(shù)據(jù)庫。
    說明 您需要有該庫的查詢權限,更多信息,請參見查看我的權限
    業(yè)務背景詳細描述提交工單的原因或目標,減少溝通成本。
    變更相關人設置的相關人員都可查看工單,并協(xié)同工作,非相關人員則不能查看工單(管理員、DBA除外)。
    上傳文件您可選擇以下兩種方式上傳文件,取值:
    • 上傳:支持上傳多個SQL文件。
    • 輸入文本:支持輸入iBatis框架或MyBatis框架的.xml文件和.txt格式的SQL文件。
    更多信息,請參見上傳文件示例
  5. 單擊提交申請
    系統(tǒng)將對SQL文件進行解析,并根據(jù)當前數(shù)據(jù)庫的安全規(guī)則,對SQL語句進行逐條審核,返回的SQL審核優(yōu)化結果包含必須改進潛在問題建議改進索引推薦。更多信息,請參見配置SQL審核優(yōu)化建議
  6. 查看SQL審核結果。

    系統(tǒng)將提供如下六種SQL審核檢測狀態(tài):

    狀態(tài)說明動作
    檢測通過該語句不存在必須改進項,但可能存在潛在問題建議改進項。您可以單擊詳情,查看SQL語句與對應的SQL建議。

    若需要調整SQL語句,您可以單擊調整SQL,調整SQL語句。

    檢測不通過該語句存在必須改進項。請單擊詳情查看SQL建議,并單擊調整SQL,調整SQL語句。
    人工通過/人工不通過除DMS審核SQL以外,若存在一些歷史問題暫時無法修復或無需修復。您可以選擇人工審核 > 人工通過人工不通過,手動標注檢測結果。
    解析異常DMS無法識別的SQL語句。請單擊調整SQL,調整SQL語句,并重新提交審核。
    等待分析DMS未開始識別SQL語句。
  7. 單擊提交審批,管理員或DBA將再次確認SQL。
    審批通過后即工單流程結束。
    說明 若存在檢測不通過解析異常狀態(tài)的SQL語句,系統(tǒng)將在提交審批后報錯。

上傳文件示例