您可以在DMS中通過SQL視窗直接輸入SQL文法或通過資料變更工單提交資料變更。同時,您可以自訂安全規則,實現對不同環境庫定義不同的資料變更執行配置。本文將通過以下4個例子向您介紹典型情境下的安全規則設定與對應提交資料變更的方式。
準備工作
本文已通過DMS的結構設計功能在安全協同模式的
poc_prod
生產庫和poc_dev
開發庫下建立data_modify
表。您也可以通過DMS的SQL Console建立data_modify
表,免提工單執行DDL語句的操作,請參見免提工單執行DML語句。POC_prod執行個體關聯的安全規則為POC生產規則,POC_dev執行個體關聯的安全規則為POC開發規則。
通過提交工單執行普通資料變更
本樣本以提交工單的方式給poc_prod
庫下的data_modify
表中插入資料。
單擊控制台左上方的表徵圖,選擇
。說明若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇
。配置工單資訊。部分配置資訊說明如下:
SQL文本:輸入文法正確的、可直接執行的SQL語句。多條SQL之間,使用英文分號
;
隔開。附件:變更SQL附件與復原SQL附件僅支援
.txt
、.zip
和.sql
檔案類型,且最大不能超過15 MB。
單擊提交申請。
提交申請後,系統會自動進行預檢查,如果預檢查沒有通過,根據提示修改SQL,然後重試。
預檢查通過後,單擊提交審批,在提示對話方塊中單擊確認。
說明資料變更預設審批模板的審批人為DBA。更改預設審批模板,請參見修改預設審批模板。
審批通過後,單擊執行變更,在任務設定對話方塊中設定任務執行參數,並單擊確定執行。
說明建立工單時,如果執行方式選擇審批通過後,自動執行,系統會自動跳過此步驟。
已暫停任務重啟後,將從暫停位置繼續執行指令碼。
配置項
說明
執行策略
選擇是否立即執行策略,支援如下:
立即執行(預設):提交即刻執行。
定時執行:指定特定時間開始執行任務。
開啟整體事務
選擇是否開啟整體事務,預設關閉。
開啟:執行失敗則全部復原(僅限DML,DDL不在範圍內)。
關閉:逐條提交SQL任務,執行失敗則終止任務,但不復原。
開啟備份
選擇是否開啟備份,預設開啟。
說明僅執行
UPDATE
和DELETE
語句時,支援備份資料。MongoDB和Redis不支援備份資料。
開啟:執行
UPDATE
、DELETE
語句前,系統自動產生對應的備份指令碼附件。如果資料庫類型為MySQL和MariaDB,產生
REPLACE INTO
備份語句。說明MySQL包括:RDS MySQL、PolarDB MySQL版、PolarDB分布式版、其他來源MySQL。
如果資料庫類型為除MySQL、MariaDB外的其他引擎,產生
INSERT
備份語句。
關閉:不產生備份附件。
(可選)工單執行成功後,進入poc_prod資料庫的SQL視窗,查看資料變更是否符合預期。
設定開發庫免提工單執行DML語句
若開發庫的資料變更均需提交工單執行,會導致開發人員研發效能下降。您可以通過DMS內建的安全規則引擎,設定允許開發人員直接在SQL Console對開發庫執行DML語句,且不需要提交工單審批,即可實現在不影響資料安全的情況下提升研發效能。
本樣本以在SQL Console執行INSERT
語句舉例。
調整poc_dev庫的安全規則POC開發庫規則。
說明DMS預設的安全規則規定以工單的方式執行DML(Data Manipulation Language)語句。
以管理員帳號登入Data Management 5.0。
單擊控制台左上方的表徵圖,選擇
。說明若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇
。在安全規則列表中,單擊POC開發庫規則右側操作列下的編輯。
在左側導航列表地區,單擊SQL變更,檢測點選擇SQL執行規則。
啟用允許所有DML在SQL控制台直接執行規則,並禁用禁止所有DML在SQL控制台直接執行,必須以工單方式執行規則。
給data_modify表中插入資料。
在首頁左側的資料庫執行個體地區,搜尋並單擊poc_dev資料庫。
在SQL Console中,輸入如下
INSERT
語句並單擊執行。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','男');
在執行確認對話方塊中,單擊直接執行。出現執行成功提示表示安全規則調整成功。
設定生產庫的高風險SQL需提工單
DMS安全規則引擎可以根據SQL類型設定不同的審批次程序。例如生產庫中,DELETE
語句會造成資料丟失,安全風險相對較大,可以為其設定更嚴格的審批次程序,確保資料安全。
本樣本以設定DELETE語句為高風險SQL,並指定執行DELETE
語句工單的審批次程序舉例。
設定審批次程序。
以管理員帳號登入Data Management服務。
單擊控制台左上方的表徵圖,選擇
。說明若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇
。單擊新增審批模板,在新增審批模板面板中配置模板相關資訊。
審批節點:單擊增加節點增加審批節點。審批順序從小到大,例如1為第一位審批節點,2為第二位審批節點。
配置完成後,單擊提交。
設定安全規則。
單擊控制台左上方的表徵圖,選擇
。說明若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇
。在安全規則列表中,單擊POC生產庫規則右側操作列下的編輯。
在詳情頁左側導覽列中,單擊SQL變更。
檢測點選擇風險識別規則,單擊新增規則。
在新增規則 - SQL變更對話方塊中,配置規則資訊。
部分配置資訊說明如下:
配置項
說明
規則名稱(必填)
建立規則名稱為
生產環境,DELETE語句為高風險操作
。規則DSL(必填)
輸入如下規則DSL:
if @fac.env_type in ['product','pre'] and @fac.sql_type in [ 'DELETE'] then @act.mark_risk 'high' '高風險:線上環境,生產環境, DELETE語句為高風險操作' end
單擊提交。
單擊生產環境,DELETE語句為高風險操作規則右側的啟用按鈕,並單擊確認。
單擊確認後,該規則會立即生效,即所有
DELETE
語句都會被識別為高風險操作。檢測點選擇風險審批規則,選擇高風險審批次程序,單擊其右側的編輯。
將高風險審批次程序中規則DSL地區的模板ID修改為步驟1中建立的模板ID,並單擊提交。
單擊高風險審批次程序規則右側的啟用按鈕,再單擊確認。
執行
DELETE
語句。在首頁左側的資料庫執行個體地區,搜尋並單擊
poc_prod
資料庫。在SQL Console中,輸入如下
DELETE
語句並單擊執行。DELETE FROM data_modify WHERE id = 1;
執行結果地區顯示由於安全規則導致執行失敗,您可單擊申請資料變更,通過提交工單執行
DELETE
語句。說明在該生產庫中執行
DELETE
語句屬於高風險操作,需要提交工單且需要指定審批模板中的審批人通過後才可執行。
設定生產庫禁止執行TRUNCATE語句
TRUNCATE
語句會直接清空表中所有資料,一般在生產庫中是不會執行的,如果執行的話會造成大量資料丟失的問題。您可以通過安全規則禁止TRUNCATE
語句執行。
本樣本以禁止生產庫在SQL Console或提交工單執行TRUNCATE
語句為例。
調整安全規則。
以管理員帳號登入Data Management控制台。
單擊控制台左上方的表徵圖,選擇
。說明若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇
。在安全規則列表中,單擊
POC生產庫規則
右側操作列下的編輯。在左側導覽列中,單擊SQL變更,檢測點選擇SQL執行規則。
找到允許TRUNCATE在SQL控制台直接執行規則名,單擊右側操作列下的編輯。
將規則名修改為
禁止TRUNCATE執行
,並替換原規則DSL為如下DSL,再單擊提交。if @fac.sql_type in ['TRUNCATE'] then @act.forbid_execute end
說明該段安全規則DSL表示禁止在SQL Console或提交工單執行
TRUNCATE
語句。更多安全規則文法介紹請參見安全規則DSL文法。單擊禁止TRUNCATE執行規則右側的啟用按鈕,並單擊確認。
在SQL Console執行
TRUNCATE
語句。在首頁左側的資料庫執行個體地區,搜尋並單擊
poc_prod
資料庫。在SQL Console中,輸入如下
TRUNCATE
語句並單擊執行。TRUNCATE TABLE `data_modify`;
顯示執行失敗。由於設定的安全規則,系統禁止在SQL Console執行
TRUNCATE
語句。
提交資料工單執行
TRUNCATE
語句。提交工單的操作,請參見通過提交工單執行普通資料變更。說明在資料變更工單的變更SQL參數中填入如下SQL:
TRUNCATE TABLE `data_modify`;
提交工單後,系統將會顯示預檢查失敗,說明禁止通過提交工單執行
TRUNCATE
語句的安全規則已生效。