透明存儲加密方式(Transparent Data Encryption, TDE)是一種保護數據庫中靜態數據的加密技術,使數據在存儲時自動加密,有助于防止未授權訪問和數據泄露。透明存儲加密的特點是數據在加密和解密過程對應用程序透明,該過程中應用程序無需進行任何修改,從而簡化了實施流程。加密操作(函數調用)與業務側解耦合,業務只負責傳遞原始數據到數據庫內核,后續的加密計算在數據庫內部完成,從而業務側操作上無感知。
透明加密的方案
透明加密是由自動加密與解密和加密密鑰管理兩部分機制組成。
- 自動加密與解密:當數據寫入磁盤,TDE會自動對數據進行加密。當數據從磁盤讀取時, TDE會自動對數據進行解密。整個加密與解密過程,用戶和應用程序將不會感知。文件在硬盤上是密文,在內存中是明文。一旦離開使用環境,由于應用程序無法得到自動解密的服務而無法打開,從而起到保護文件內容的效果。
- 加密密鑰管理:TDE通常使用對稱加密算法(如AES)。加密密鑰被存儲在數據庫管理系統外部或安全位置,加密算法的由數據庫維護,包括加密算法的選擇、秘鑰管理,都可以由安全員獨立操作完成,以確保數據安全。
開啟透明存儲加密
TeleDB數據庫支持提供TDE功能。當用戶需要對磁盤上存儲的數據進行加密和解密來實現對數據的保護時,可以對該功能進行開啟。
注意TDE功能僅能在實例開通時開啟,且開啟后無法關閉。
支持加密功能的內核版本為:5.1.5。
您可參考如下操作開啟透明加密。
管控側操作:
- 以用戶名和密碼登錄TeleDB-DCP管理控制臺。
- 進入TeleDB-DCP控制臺管理頁面,開通實例。您可參考《安裝部署》中實例服務初始化及實例開通章節開通實例。
- 在實例開通頁面,填寫基本信息頁面,打開KMS開關,選擇KMS機器。
說明KMS開啟后無法關閉,選擇后無法更改。
數據庫側操作:
說明用戶可以通過函數創建加密算法,之后可以通過函數將創建的算法綁定到schema,表和列上,實現加密算法和數據庫對象建?關聯。同時?持,將已經綁定的算法從schema,表和列上解綁,從?取消加密算法和數據庫對象之間的關聯關系。
- 創建加密算法
SELECT MLS_TRANSPARENT_CRYPT_CREATE_ALGORITHM(algo_name, password)
- 注銷加密算法
SELECT MLS_TRANSPARENT_CRYPT_DROP_ALGORITHM(algo_id)
- 加密算法綁定
(1) 綁定到Schema
SELECT MLS_TRANSPARENT_CRYPT_ALGORITHM_BIND_SCHEMA(schema_name, algo_id)
(2) 綁定到表
SELECT MLS_TRANSPARENT_CRYPT_ALGORITHM_BIND_TABLE(schema_name, table_name, algo_id)
(3) 綁定到列
SELECT MLS_TRANSPARENT_CRYPT_ALGORITHM_BIND_TABLE(schema_name, table_name, attr_name, algo_id)
- 加密算法解綁
SELECT MLS_TRANSPARENT_CRYPT_ALGORITHM_UNBIND_SCHEMA(schema_name)
SELECT MLS_TRANSPARENT_CRYPT_ALGORITHM_UNBIND_TABLE(schema_name, table_name, need_cascade)
使用示例
-- 創建管理插件
CREATE EXTENSION teledbx_mls;
-- 切換為安全管理員??
\c - mls_admin
-- 注冊內置的加密算法和對應密鑰(此處使?國測sm4加密算法進?注冊),獲得對應的algo id
select MLS_TRANSPARENT_CRYPT_CREATE_ALGORITHM('SM4','0123456789012345');
select MLS_TRANSPARENT_CRYPT_CREATE_ALGORITHM('AES128','0123456789012345');
\c - xieyuecreate table t1(id int,content int);
\c - mls_admin
-- 將加密算法綁定到表上
select MLS_TRANSPARENT_CRYPT_ALGORITHM_BIND_TABLE('public','t1',1);
insert into t1 values(1,0), (2,0), (3,0);
insert into t1 values(7, 0), (8,0), (9,0);