SQL變更作為變更SQL執行的入口,需要極高的安全性。在工單提交、審批時,通過一系列的安全規則進行校正,只有滿足規則校正的SQL,才能正常執行。
前提條件
系統角色為管理員、DBA或安全性系統管理員。
背景資訊
Data Management的安全規則具備非常靈活的DSL能力,可以根據業務需求自訂風險層級,讓不同風險的變更,走不同的審批次程序。例如,您可以用最嚴格的形式限制SQL的執行,或者以最寬鬆的形式允許存取所有SQL。
SQL變更模組檢測點
檢測點 | 說明 | 樣本 |
基礎配置項 | 基礎配置項中包含5個預設規則:
| - |
SQL執行規則 | 用於限制在SQL視窗執行SQL語句,只有被允許的SQL語句才能通過SQL視窗執行。 說明 如果相互矛盾的兩個規則同時被啟用,系統會依照更嚴格的規則執行。 例如,以下兩條規則同時被啟用,系統將按第二種規則執行。
| 僅允許DML語句對線上商品庫做出修改,可以增加如下SQL執行規則: 假設。
代碼含義:如果資料庫環境為非線上生產環境,並且SQL語句是 |
風險識別規則 | 用於識別被提交工單的風險等級,您可以根據資料庫環境、SQL影響行數、SQL類型等條件自訂風險等級。 說明 不同的安全規則針對變更任務會標記不同的風險等級,最終取所有風險等級的最大值。 例如一個SQL變更任務有5個低風險、3個中風險和1個高風險,則最終該任務被認定為高風險。 | 將線下環境定義為低風險,可以增加如下風險識別規則:
代碼含義:如果資料庫環境為非線上生產環境,則風險等級為低風險。 |
風險審批規則 | 配置或自訂風險等級的審批規則。 如果資料庫在風險識別規則檢測點中未命中任何風險等級,那麼資料庫將採用基礎配置項中資料變更預設審批模板指定的審批次程序。 | 測試環境預設為低風險等級,低風險預設無需審批。 |
批量資料匯入規則 | 適用於資料匯入工單的校正規則。 | 允許大量匯入插入語句。 |
修改預設審批模板
- 登入Data Management 5.0。
單擊控制台左上方的表徵圖,選擇
。說明若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇
。在安全規則頁簽中,單擊目標規則集操作列中的編輯。
在詳情頁面左側的導覽列中,單擊SQL變更模組。
在SQL變更模組中,單擊基礎配置項。
在資料變更預設審批模板的操作列中,單擊編輯。
在編輯配置項對話方塊中,單擊切換審批模板。
在切換審批模板對話方塊中,單擊目標模板操作中的選擇,將預設審批模板切換為目標模板。
說明如果工單不需要審批,您可以單擊重設為免審批,使工單自動跳過審批步驟。
單擊提交。
SQL變更模組因子和動作
因子
因子是系統內建變數,可用來擷取安全規則校正的上下文資訊,如擷取SQL類型、影響行數等。
因子全部以
@fac.
開頭,後接因子名稱。每個模組的不同檢測點會提供不同因子。
表 1. 因子列表
因子 | 說明 |
@fac.env_type | 環境類型,值為環境標識,如 |
@fac.sql_type | SQL指令碼的類型,如 |
@fac.detail_type | 資料變更的種類:
|
@fac.is_logic | 是否為邏輯庫。 |
@fac.extra_info | 其他變更資訊(暫無用途)。 |
@fac.is_ignore_affect_rows | 是否跳過校正。 |
@fac.insert_rows | 插入資料的影響行數。 |
@fac.update_delete_rows | 更新資料的影響行數。 |
@fac.max_alter_table_size | 修改表中,最大的資料表空間大小。 |
@fac.is_has_security_column | SQL指令碼中是否包含敏感列。 |
@fac.security_column_list | SQL指令碼中包含的敏感列列表。 |
@fac.risk_level | 識別到的風險層級。 |
@fac.risk_reason | 識別為該風險的原因。 |
@fac.table_name_list | SQL變更涉及的表名列表。使用樣本如下:
代碼含義:若SQL變更涉及的表名為tb_order或tb1_order,則風險等級為高風險。 |
動作
動作是滿足if
條件之後系統執行的行為,例如:禁止提交工單、選擇工作流程、允許執行、拒絕執行等。
動作全部以
@act.
開頭,後接動作名稱。每個模組的不同檢測點會提供不同動作。
表 2. 動作列表
動作 | 說明 |
@act.allow_submit | 允許提交工單執行。 |
@act.allow_execute_direct | 允許直接在SQL控制台執行。 |
@act.forbid_execute | 禁止執行。 |
@act.mark_risk | 標記風險。用法: |
@act.do_not_approve | 指定審批模板ID。詳情請參見設定審批次程序。 |
@act.choose_approve_template | |
@act.choose_approve_template_with_reason |