全部產品
Search
文件中心

PolarDB:使用全密態PolarMySQL

更新時間:Nov 11, 2025

當DBA或開發人員等高許可權角色在維護資料庫時,可能接觸到生產環境中的敏感性資料(如使用者身份資訊、交易記錄),存在資料泄露風險。PolarDB MySQL版全密態PolarMySQL功能,能夠在資料庫代理(Proxy)層對查詢結果進行即時加密,確保只有經過授權的應用(通過特定驅動)才能解密和訪問敏感性資料。此功能可在修改少量應用代碼的情況下,實現對敏感性資料的安全保護,滿足合規性要求。

工作原理

全密態PolarMySQL功能在資料庫代理(Proxy)層生效。當一個SQL查詢命中已設定的加密策略時,代理層會在將查詢結果返回給用戶端前,對指定欄位的資料進行加密。

  • 資料存放區:此功能不改變資料庫中資料的實體儲存體狀態,即在作業系統(Operating System,OS)檔案與雲端硬碟上以明文形式存在。

  • 使用者視角

    • 超級管理員:查詢結果始終為明文,不受加密策略影響,便於資料庫管理。

    • 普通使用者:查詢結果為密文。需配合使用特定的加密驅動(如,EncJDBC驅動GoLang驅動)和正確的密鑰才能在用戶端解密資料。

    • 其他使用者:查詢結果為密文,且無法解密,即使擁有密鑰。

適用範圍

PolarDB MySQL版叢集的資料庫代理(Proxy)版本需為2.9.12及以上。

說明
  • 查看版本號碼:您可在叢集的配置與管理 > 版本管理中查看當前叢集的資料庫代理(Proxy)版本。

  • 版本相容性:資料庫代理版本低於2.9.12但高於2.8.18,則加密規則的配置介面是與動態脫敏功能合并在一起的。為獲得最佳體驗和功能獨立性,建議您升級至2.9.12或更高版本。

配置動態加密

配置動態加密主要包括三個步驟:配置密鑰、定義角色許可權、建立加密策略。

操作流程

  1. 前往PolarDB控制台,在左側導覽列單擊叢集列表,選擇叢集所在地區,並單擊目的地組群ID進入叢集詳情頁。

  2. 在左側導覽列中,單擊配置與管理 > 安全管理,並進入加密頁簽進行操作。

步驟一:配置密鑰

加密頁面,單擊密鑰管理開關。以配置用於應用程式加密和解密的密鑰。

使用KMS密鑰(推薦)

通過阿里雲Key Management Service(KMS)託管密鑰,支援密鑰輪轉(自動更新密鑰),提供了高安全性和可維護性。即使訪問KMS的AK發生泄露,也可以通過禁用AK或收緊權限原則來控制風險,密鑰本身不會泄露。

說明

僅支援KMS中的使用者主要金鑰密鑰類型,不支援預設密鑰。詳細資料,請參見密鑰服務概述

配置KMS使用者主要金鑰

  1. 購買和啟用KMS執行個體

  2. 建立使用者主要金鑰

  3. 返回PolarDB控制台,選擇對應的使用者主要金鑰,並單擊確定

使用自持密鑰

如未配置KMS,系統將預設採用自持密鑰模式,您需自行產生、分發及保管密鑰。

重要

自持密鑰存在丟失和泄露風險,且暫不支援更新密鑰。密鑰一旦丟失,對應的加密資料將無法解密,需建立嚴格的安全流程來管理密鑰。

步驟二:定義角色許可權

加密頁面的客戶角色使用權限設定頁簽,配置不同資料庫帳號的角色,以決定其查詢資料時看到的是明文還是密文。

  1. 單擊建立角色權限原則

  2. 角色使用權限設定彈窗中,設定權限原則名稱和角色的資料庫帳號。

    1. 權限原則名稱:指定策略名稱稱。字元長度不能超過64個字元。

    2. 超級管理員:單擊複選框,選擇資料庫帳號,支援多選。此列表中的資料庫帳號查詢結果將始終為明文。

      說明

      超級管理員角色擁有最高許可權,僅將必要的管理帳號或審計帳號加入此列表,並嚴格控制其使用。

    3. 普通使用者:單擊複選框,選擇資料庫帳號,支援多選。此列表中的資料庫帳號查詢結果為密文,但可以使用特定的加密驅動與密鑰進行解密。

    說明

    其他使用者:未在以上兩個角色列表中配置的任何資料庫帳號。查詢結果為密文,且無法解密。

image

步驟三:建立並啟用加密策略

加密頁面的加密原則設定頁簽,配置加密策略。

  1. 單擊建立加密策略

  2. 在彈出的對話方塊中,根據下表配置策略參數。

    說明

    建議精確指定加密範圍:建立策略時,應始終明確指定資料庫名、表名與欄位名,避免使用所有資料庫或所有表的配置,以防影響無關業務。

    參數

    說明

    規則名稱

    必填。策略的唯一標識,例如encrypt-user-email。長度不超過64個字元。

    規則描述

    選填。策略的詳細說明,例如加密customer庫user表中的email欄位。長度不超過64個字元。

    啟/禁規則

    控制策略生效的開關。建立時預設啟用,且不可修改。如需調整,可在建立後進行相應修改。

    關聯權限原則

    必填。選擇在步驟二中定義的角色許可權

    資料庫

    選填。指定策略生效的資料庫。支援如下選型:

    • (預設)所有資料庫:對叢集內所有資料庫生效。

    • 填寫指定資料庫:僅對指定的資料庫生效,多個庫名用英文逗號,分隔。

    表名

    選填。指定策略生效的表。支援如下選型:

    • (預設)所有表:對指定資料庫內的所有表生效。

    • 填寫指定表:僅對指定的表生效,多個表名用英文逗號,分隔。

    欄位名

    必填。需要加密的欄位名稱,多個欄位名用英文逗號,分隔。

    密碼編譯演算法

    必填。選擇用於加密的演算法。目前支援的演算法有:

    • SM4系列:SM4-128-CBCSM4-128-ECBSM4-128-GCMSM4-128-GTR

    • AES-128系列:AES-128-CBCAES-128-ECBAES-128-GCMAES-128-GTR

    • AES-256系列:AES-256-CBCAES-256-ECBAES-256-GCMAES-256-GTR

  3. 單擊確定完成建立。

步驟四:管理加密策略

加密頁面的加密原則設定頁簽,您可以在策略列表中,可對已建立的策略進行管理。

  • 修改策略:找到目標規則,在操作列單擊修改

  • 刪除策略:找到目標規則,在操作列單擊刪除,並在彈出的對話方塊中單擊確定

  • 啟/禁策略:找到目標規則,單擊啟/禁規則列的開關。

許可權收斂與安全強化

為防止擁有控制台許可權的DBA或開發人員惡意篡改或刪除加密策略,您可使用RAM(存取控制)進行許可權加固。

核心思路

為相關人員建立獨立的RAM使用者,並授予其管理PolarDB的許可權,但明確拒絕其修改或刪除加密策略的許可權。

操作說明

  1. 建立禁用修改策略

    1. 登入RAM控制台,在左側導覽列選擇許可權管理>權限原則,並單擊建立權限原則。建立一條自訂權限原則。

    2. 在可視化編輯頁簽中,進行如下配置:

      • 效果拒絕

      • 服務雲原生資料庫 PolarDB

      • 操作:選擇指定操作,在寫操作中選擇polardb:ModifyMaskingRules 和 polardb:DeleteMaskingRules

      • 資源條件:設定當前策略授權的具體對象與生效條件,具體請參考權限原則基本元素

      • 配置完成後,單擊確定。在建立權限原則彈窗中,設定策略名稱稱備忘

  2. 配置RAM使用者權限

    1. 登入RAM控制台,在左側導覽列選擇身份管理>使用者,找到目標RAM使用者,單擊操作列的添加許可權

    2. 權限原則地區中,選擇上述建立的禁用修改策略,並單擊確認新增授權

效果展示

被限制的RAM使用者在嘗試修改或刪除加密策略時,將收到許可權不足的錯誤提示。image

後續步驟

配置好加密規則後,應用程式需通過整合了加密功能的JDBC驅動(EncJDBC)GoLang驅動才能正確讀寫加密資料。

常見問題

配置了加密策略,為什麼用資料庫用戶端查詢時看到的還是明文?

需檢查登入資料庫所使用的帳號。如果該帳號被配置為超級管理員,為方便管理,其查詢結果將始終為明文。使用被配置為普通使用者的帳號進行測試,即可看到密文結果。

如何驗證加密是否生效?

使用一個未配置在超級管理員列表中的資料庫帳號,通過常規的MySQL用戶端(如命令列或Navicat)串連資料庫並查詢加密欄位。如果您看到的是密文結果,則證明已在資料庫代理(Proxy)層對查詢結果進行即時加密。

超級管理員角色有什麼風險?

超級管理員角色可以直接讀取明文資料,完全繞過了加密保護。僅建議在資料訂正、遷移、審計等絕對必要的情境下,臨時使用此角色,並在事後立即移除相關帳號,同時做好完整的Action Trail。