當DBA或開發人員等高許可權角色在維護資料庫時,可能接觸到生產環境中的敏感性資料(如使用者身份資訊、交易記錄),存在資料泄露風險。PolarDB MySQL版全密態資料庫功能,能夠在資料庫代理(Proxy)層對查詢結果進行即時加密,確保只有經過授權的應用(通過特定驅動)才能解密和訪問敏感性資料。此功能可在修改少量應用代碼的情況下,實現對敏感性資料的安全保護,滿足合規性要求。
工作原理
全密態資料庫功能在資料庫代理(Proxy)層生效。當一個SQL查詢命中已設定的加密策略時,代理層會在將查詢結果返回給用戶端前,對指定欄位的資料進行加密。
適用範圍
PolarDB MySQL版叢集的資料庫代理(Proxy)版本需為2.9.12及以上。
-
查看版本號碼:您可在叢集的中查看當前叢集的資料庫代理(Proxy)版本。
-
版本相容性:資料庫代理版本低於2.9.12但高於2.8.18,則加密規則的配置介面是與動態脫敏功能合并在一起的。為獲得最佳體驗和功能獨立性,建議您升級至2.9.12或更高版本。
配置動態加密
配置動態加密主要包括三個步驟:配置密鑰、定義角色許可權、建立加密策略。
操作流程
-
前往PolarDB控制台,在左側導覽列單擊集群列表,選擇叢集所在地區,並單擊目的地組群ID進入叢集詳情頁。
-
在左側導覽列中,單擊,並進入加密頁簽進行操作。
步驟一:配置密鑰
在加密頁面,單擊密钥管理開關。以配置用於應用程式加密和解密的密鑰。
使用KMS密鑰(推薦)
通過阿里雲Key Management Service(KMS)託管密鑰,支援密鑰輪轉(自動更新密鑰),提供了高安全性和可維護性。即使訪問KMS的AK發生泄露,也可以通過禁用AK或收緊權限原則來控制風險,密鑰本身不會泄露。
僅支援KMS中的使用者主要金鑰密鑰類型,不支援預設密鑰。詳細資料,請參見密鑰服務概述。
配置KMS使用者主要金鑰
-
返回PolarDB控制台,選擇對應的使用者主要金鑰,並單擊确定。
使用自持密鑰
如未配置KMS,系統將預設採用自持密鑰模式,您需自行產生、分發及保管密鑰。
自持密鑰存在丟失和泄露風險,且暫不支援更新密鑰。密鑰一旦丟失,對應的加密資料將無法解密,需建立嚴格的安全流程來管理密鑰。
步驟二:定義角色許可權
在加密頁面的客户角色权限设置頁簽,配置不同資料庫帳號的角色,以決定其查詢資料時看到的是明文還是密文。
-
單擊建立角色權限原則。
-
在角色权限设置彈窗中,設定權限原則名稱和角色的資料庫帳號。
-
权限策略名称:指定策略名稱稱。字元長度不能超過64個字元。
-
超级管理员:單擊複選框,選擇資料庫帳號,支援多選。此列表中的資料庫帳號查詢結果將始終為明文。
說明超级管理员角色擁有最高許可權,僅將必要的管理帳號或審計帳號加入此列表,並嚴格控制其使用。
-
普通用户:單擊複選框,選擇資料庫帳號,支援多選。此列表中的資料庫帳號查詢結果為密文,但可以使用特定的加密驅動與密鑰進行解密。
說明其他使用者:未在以上兩個角色列表中配置的任何資料庫帳號。查詢結果為密文,且無法解密。
-
步驟三:建立並啟用加密策略
在加密頁面的加密策略设置頁簽,配置加密策略。
-
單擊建立加密策略。
-
在彈出的對話方塊中,根據下表配置策略參數。
說明建議精確指定加密範圍:建立策略時,應始終明確指定資料庫名、表名與欄位名,避免使用所有資料庫或所有表的配置,以防影響無關業務。
參數
說明
规则名称
必填。策略的唯一標識,例如
encrypt-user-email。長度不超過64個字元。规则描述
選填。策略的詳細說明,例如
加密customer庫user表中的email欄位。長度不超過64個字元。启/禁规则
控制策略生效的開關。建立時預設啟用,且不可修改。如需調整,可在建立後進行相應修改。
关联权限策略
必填。選擇在步驟二中定義的角色許可權。
資料庫
選填。指定策略生效的資料庫。支援如下選型:
-
(預設)所有資料庫:對叢集內所有資料庫生效。
-
填寫指定資料庫:僅對指定的資料庫生效,多個庫名用英文逗號
,分隔。
表名
選填。指定策略生效的表。支援如下選型:
-
(預設)所有表:對指定資料庫內的所有表生效。
-
填寫指定表:僅對指定的表生效,多個表名用英文逗號
,分隔。
字段名
必填。需要加密的欄位名稱,多個欄位名用英文逗號
,分隔。加密算法
必填。選擇用於加密的演算法。目前支援的演算法有:
-
SM4系列:
SM4-128-CBC、SM4-128-ECB、SM4-128-GCM、SM4-128-GTR。 -
AES-128系列:
AES-128-CBC、AES-128-ECB、AES-128-GCM、AES-128-GTR。 -
AES-256系列:
AES-256-CBC、AES-256-ECB、AES-256-GCM、AES-256-GTR。
-
-
單擊确定完成建立。
步驟四:管理加密策略
在加密頁面的加密策略设置頁簽,您可以在策略列表中,可對已建立的策略進行管理。
-
修改策略:找到目標規則,在操作列單擊修改。
-
刪除策略:找到目標規則,在操作列單擊刪除,並在彈出的對話方塊中單擊确定。
-
啟/禁策略:找到目標規則,單擊启/禁规则列的開關。
許可權收斂與安全強化
為防止擁有控制台許可權的DBA或開發人員惡意篡改或刪除加密策略,您可使用RAM(存取控制)進行許可權加固。
核心思路
為相關人員建立獨立的RAM使用者,並授予其管理PolarDB的許可權,但明確拒絕其修改或刪除加密策略的許可權。
操作說明
-
建立禁用修改策略
-
配置RAM使用者權限
-
登入RAM控制台,在左側導覽列選擇身份管理>用戶,找到目標RAM使用者,單擊操作列的添加許可權。
-
在權限原則地區中,選擇上述建立的禁用修改策略,並單擊確認新增授權。
-
效果展示
被限制的RAM使用者在嘗試修改或刪除加密策略時,將收到許可權不足的錯誤提示。配置完成後,RAM 使用者嘗試修改加密策略時,控制台將彈出 沒有許可權 錯誤提示,提示當前操作被顯式拒絕,錯誤碼為 Forbidden.RAM,鑒權操作為 polardb:ModifyMaskingRules,策略類型為基於身份策略(帳號級),許可權判定為 顯式拒絕,需聯絡帳號管理員授權。
後續步驟
配置好加密規則後,應用程式需通過整合了加密功能的JDBC驅動(EncJDBC)或GoLang驅動才能正確讀寫加密資料。