本文為您介紹如何對錶中行資料進行管控,以及申請行許可權。
應用情境
DMS的行級管控可保護橫向資料安全,所有的行通過一個或若干個確定的值(管控欄位的取值)進行區分,實現對行資料的管控。
如果您需要使員工僅可查看自己負責地區的資料,不能查看全部地區的資料,可以使用DMS的行級管控功能。
如果您資料庫下有多張表,且多張表都需要使用同樣的管控值進行行級管控,則可通過一個管控組同時對多張表進行管控。
前提條件
執行個體的管控模式為安全協同。更多資訊,請參見管控模式。
執行個體已開啟Sensitive Data Discovery and Protection。具體操作,請參見開通Sensitive Data Discovery and Protection。
系統角色為DBA、管理員或安全性系統管理員。查看系統角色的操作,請參見查看我的系統角色。
資料庫為關係型資料庫。例如RDS MySQL、RDS PostgreSQL、PolarDB MySQL版等。
說明當前僅支援物理庫。
操作步驟
本樣本以滿足前提條件的poc_prod
生產類型資料庫舉例。
步驟一:添加行級管控
單擊控制台左上方的表徵圖,選擇
。說明若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇
。單擊頁面右上方的全域敏感性資料列表,進入設定行級管控的頁面。
說明您也可以在執行個體列表地區的已開啟頁簽下,單擊目標執行個體右側的敏感性資料列表,進入設定行級管控的頁面。
添加管控組。
在行級管控頁簽下,單擊添加管控組,並輸入管控組名稱。
添加行配置。
單擊添加行配置。
搜尋並選擇目標資料庫。
選擇目標表和需要設定管控的欄位。
說明同一個管控組中不可重複定義行級管控表,且一張表僅支援定義一個欄位。
單擊添加。
添加管控行值。
單擊管控組名稱右側的詳情。
在詳情頁面,單擊添加行值,配置如下資訊。
配置項
說明
是否追加
取值及說明如下:
是:本次匯入將在現有的行值列表上繼續新增。
否:本次匯入將會覆蓋原來的行值列表。
行值內容
增加管控的行值。多行值內容,需要使用英文逗號(,)分隔。
單擊匯入。
出現匯入行值成功的提示後,表示行值已追加成功。
步驟二:申請行許可權
所有使用者(包含管理員、DBA)在查詢該行的資料前,都需要申請受管控的行許可權。
單擊控制台左上方的表徵圖,選擇
。說明若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇
。在許可權申請工單列表頁面,單擊右上方的
。選中目標行,單擊添加,將其移動至確認已選擇的庫/表/列框中。
在選擇許可權地區,選擇查詢許可權,再配置期限和申請原因等資訊。
配置完成後,單擊提交申請。等待審批通過,在SQL視窗查詢行級管控資料。
說明提交申請後,請等待審批通過,您可以在工作台的首頁,查看許可權申請工單的審核進度。
其他動作
刪除行級管控組:在行級管控的頁簽下,刪除管控組。刪除管控組後,設定的行級管控能力將失效。
編輯行級管控組:在行級管控的頁簽下,編輯管控組名稱及設定的原管控欄位等資訊。
常見問題
Q:為什麼在授予管控行的查詢許可權後,在SQL視窗執行查詢SQL時還會失敗?
A:請根據如下步驟進行排查:
請確保您具有目標資料庫、表的查詢許可權。授權的具體操作,請參見申請行許可權。
在SQL視窗使用包含WHERE條件的SQL語句查詢管控的資料行。
例如,受管控的欄位為buyer_name,受管控的行值為name1、name2和name3,在已有資料庫、表dms_test的查詢許可權的前提下,通過SQL視窗執行如下SQL,查詢受管控的資料行。
查詢單個管控值所在的資料行時,可在SQL語句的WHERE條件中使用
=
和IN
。樣本SQL如下:SELECT * FROM dms_test WHERE buyer_name ='name1';
查詢多個管控值所在的資料行時,可在WHERE條件中使用
IN
。樣本SQL如下:SELECT * FROM dms_test WHERE buyer_name IN ('name1', 'name2','name3');