本頁面為您介紹 TDE(Transparent Data Encryption) 透明加密的操作步驟。TDE 透明加密功能開啟之后將無法關閉,請謹慎操作。
背景信息
云數據庫 OceanBase 支持 TDE(Transparent Data Encryption)透明加密,可對存儲和 RPC 進行加密。
存儲的加密,即磁盤的加密。
RPC 的加密,主要是 OBServer 之間的通信的加密。
OceanBase 數據庫 V3.2.3、V3.2.4 和 V4.2.1 版本支持 TDE 加密功能。
TDE 透明加密功能當前支持服務密鑰和自定義密鑰兩種方式。
服務密鑰
由 OceanBase 云數據庫生成和管理的密鑰。
自定義密鑰
采用阿里云 KMS 服務創建的密鑰,當您購買了阿里云 KMS 服務時,可到 KMS 管理控制臺創建您的自定義密鑰,具體操作參見 創建密鑰。
使用限制
服務密鑰使用限制
TDE 加密功能開啟后將不能關閉。
Oracle 租戶支持的密鑰類型包括 AES-256,AES-128,AES-192,SM4-CBC,MySQL 租戶支持密鑰類型為 AES-256,設置后不能修改,不能做類型轉換。
自定義密鑰使用限制
TDE 加密功能開啟后將不能關閉。
Oracle租戶支持的密鑰類型包括 AES-256,AES-128,AES-192,SM4-CBC,MySQL 租戶支持密鑰類型為 AES-256,密鑰類型設置后不能修改,不能做類型轉換。
自定義密鑰目前支持 OceanBase 數據庫 V2.2.77 及以上版本。
云產品將觸發創建服務角色 AliyunServiceRoleForOceanBase(如已創建,不會重復創建),便于您加密 OceanBase 云服務數據。請確保您使用的賬號為主賬號,或者具有 AliyunSTSAssumeRoleAccess 權限的賬號。
請勿在 KMS 平臺進行禁用密鑰、設置密鑰計劃刪除或者刪除密鑰的操作,此類操作將導致 TDE 加密功能無法正常開啟。
當您在 KMS 管理平臺創建完密鑰后,需要給密鑰添加
oceanbase:encryption: true
標簽。KMS 只能選擇 HSM 的版本。
開啟 TDE 功能后,update 場景性能無影響,但其他場景的性能略有損耗。具體情況參見透明數據加密 TDE 測試報告。
開啟 TDE 透明加密
在左側導航欄單擊 實例列表,選擇目標集群實例,進入 集群實例工作臺 頁面。
在左側導航欄單擊 安全設置。
在 TDE 透明加密 頁簽中,可查看 TDE 設置列表。
單擊 操作 列下的 開啟加密,開啟 TDE 加密功能。
說明TDE 透明加密功能開啟之后將無法關閉,并且對性能有一定的影響,請謹慎操作。
在彈出框中單擊 確定,設置密鑰類型。
密鑰類型分為服務密鑰和自定義密鑰:
服務密鑰:由 OceanBase 云數據庫生成和管理的密鑰。
說明目前支持的密鑰類型為 Aliyun_AES_256,Aliyun_SM4,密鑰類型設置后不能修改,不能做類型轉換。
自定義密鑰:采用阿里云 KMS 服務創建的密鑰,當您購買了阿里云 KMS 服務時,可到 KMS 管理控制臺創建您的自定義密鑰,具體操作參見 創建密鑰。
- 說明
目前支持的密鑰類型為 Aliyun_AES_256,Aliyun_SM4,密鑰類型設置后不能修改,不能做類型轉換。
云產品將觸發創建服務角色 AliyunServiceRoleForOceanBase(如已創建,不會重復創建),便于您加密 OceanBase 云服務數據。
選擇您的密鑰類型后,單擊 確定,完成 TDE 加密功能的開啟。
創建表空間加密
單擊 操作 列下的 創建表空間。
在 創建表空間 彈窗中填寫 加密表空間名 和 加密算法。
單擊 確定,創建表空間。
當您完成加密表空間的創建之后,還可通過數據研發功能或其他命令行工具進行 DDL 操作,創建表并將表指定到加密的表空間,示例如下:
Oracle 租戶
create table table_name (column1 int, column2 int) tablespace tablespace_name;
MySQL 租戶
create table table_name (column1 int, column2 int) tablespace tablespace_name;
說明開啟 TDE 之后,在當前頁面創建加密表空間,再進行創建加密表的 DDL 操作才能進行數據加密。創建加密表 DDL:
CREATE TABLE t1 (id int,id2 int) TABLESPACE sectest_ts1;
若有歷史數據表加入表加密空間,加入后請進行一次全量合并,實現數據的持久化。
單擊某個租戶前面的“+”號,可以查看該租戶下所有的加密表空間信息,包括加密表空間名、加密算法和創建時間。
單擊加密表空間名,可以查看加密表的狀態、加密進度等信息。加密進度表示當前數據表中,已完成加密的數據塊百分比。
對歷史數據表執行全量合并
對歷史數據表執行全量合并的操作步驟如下,以已有表 t1
為例:
將參數
progressive_merge_num
的值設置為1
。obclient> ALTER TABLE t1 set progressive_merge_num = 1;
在集群實例工作臺頁面手動觸發一次數據合并,詳情請參見 數據合并。
待數據合并完成后,再將參數
progressive_merge_num
的值設置為0
。obclient> ALTER TABLE t1 set progressive_merge_num = 0;