RDS PostgreSQL支援透明資料加密(Transparent Data Encryption,簡稱TDE),對資料檔案進行即時加密和解密,保護使用者資料隱私,本文介紹透明資料加密的基本概念和加密原理。
什麼是透明資料加密
透明資料加密指對資料檔案執行即時I/O加密和解密。通過在資料庫層執行待用資料加密,阻止可能的攻擊者繞過資料庫直接從儲存中讀取敏感資訊。經過資料庫身分識別驗證的應用和使用者可以繼續透明地訪問應用資料(不需要更改應用代碼或配置),而嘗試讀取資料表空間檔案中的敏感性資料的OS使用者以及嘗試讀取磁碟或備份資訊的未知使用者將不允許訪問明文資料。
透明:資料在使用過程中無感知,資料在寫入磁碟時自動加密,在資料被讀取時自動解密。
資料加密:使用Key Management Service(Key Management Service,簡稱KMS)提供的服務密鑰或您上傳至KMS的自訂密鑰,對資料檔案進行加密。
說明TDE加密使用的密鑰由KMS產生和管理,RDS不提供加密所需的密鑰和認證。
RDS PostgreSQL支援Aliyun_AES_256和Aliyun_SM4兩種類型的KMS密鑰。
透明資料加密的優勢
阿里雲RDS PostgreSQL透明資料加密具有以下優勢:
表級、索引級加密粒度:支援對錶層級、索引層級進行TDE加密和解密。
批量對象加密解密:支援表中所有索引大量加密和解密,支援資料庫內所有表大量加密和解密。
效能損耗低:開啟TDE功能後,效能影響小,常規業務情境下加密的表效能損耗約4%。
TDE加密解密原理
名詞解釋
加密金鑰(Key Encryption Key,簡稱KEK):可使用KMS服務密鑰或使用者自訂密鑰(Customer Master Key,簡稱CMK),用於保護資料密鑰。
資料密鑰(Data Encryption Key,簡稱DEK):由資料庫產生,用於加密或解密資料。
加密解密流程
所有加密解密操作均在記憶體中進行,記憶體中的資料是明文,磁碟中的資料是密文,這可以避免因磁碟被盜而產生的資料泄露問題,同時資料庫的使用方式保持不變,沒有適配成本。
資料庫啟動時會從KMS擷取KEK,從而解密DEK,解密後的DEK存放在記憶體中,用於寫入資料或讀取資料時進行加密或解密。