全部產品
Search
文件中心

ApsaraDB RDS:TDE批量加解密外掛程式(rds_tde_utils)

更新時間:Jun 19, 2024

透明資料加密(TDE)需要使用ALTER語句對錶或索引進行加解密,為減少您重複加解密的操作,RDS PostgreSQL提供此外掛程式,用於大量加密、解密。

前提條件

RDS PostgreSQL執行個體需滿足以下要求:
  • 執行個體大版本為PostgreSQL 10或以上。
  • 執行個體核心小版本為20221030或以上。
    說明 如需升級核心小版本,請參見升級核心小版本
  • 您已開通透明資料加密,具體請參見設定透明資料加密

注意事項

執行大量加密或解密命令後,會一直等待執行完成後再返回結果,如果資料庫中的表數量較多時,可能耗時較長,請謹慎使用。

建立和刪除外掛程式

說明 推薦使用高許可權帳號可以執行如下命令。
  • 建立外掛程式
    CREATE EXTENSION rds_tde_utils;
  • 刪除外掛程式
    DROP EXTENSION rds_tde_utils;

使用樣本

  1. 建立測試資料。
    CREATE TABLE table_a(id int);
    CREATE INDEX index_a1 ON table_a(id);
    CREATE INDEX index_a2 ON table_a USING hash(id);
    CREATE TABLE table_b(id int);
    CREATE INDEX index_b1 ON table_b(id);
    CREATE INDEX index_b2 ON table_b USING hash(id);
  2. 大量加密。
    說明
    加密過程會對錶進行重寫,您可以選擇rds_tde_lazy_encrypt_tablerds_tde_encrypt_table任意一個函數對錶進行加密,兩個函數的重寫邏輯如下:
    • rds_tde_lazy_encrypt_table的重寫邏輯與LAZY VACUUM類似。
    • rds_tde_encrypt_table的重寫邏輯與VACUUM FULL類似,請勿在業務高峰期進行加密。
    • 大量加密表table_a及其關聯索引(index_a1和index_a2)。
      • SELECT rds_tde_lazy_encrypt_table('table_a'::regclass);
      • SELECT rds_tde_encrypt_table('table_a'::regclass);
    • 大量加密當前資料庫下的所有表(table_a和table_b)及其關聯索引。
      • SELECT rds_tde_lazy_encrypt_database();
      • SELECT rds_tde_encrypt_database();
  3. 批量解密。
    說明
    解密過程會對錶進行重寫,您可以選擇rds_tde_lazy_decrypt_tablerds_tde_decrypt_table中任意一個函數對錶進行解密,兩個函數的重寫邏輯如下:
    • rds_tde_lazy_decrypt_table的重寫邏輯與LAZY VACUUM類似。
    • rds_tde_decrypt_table的重寫邏輯與VACUUM FULL類似,請勿在業務高峰期進行解密。
    • 批量解密表table_a及其關聯索引(index_a1和index_a2)。
      • SELECT rds_tde_lazy_decrypt_table('table_a'::regclass);
      • SELECT rds_tde_decrypt_table('table_a'::regclass);
    • 批量解密當前資料庫下的所有表(table_a和table_b)及其關聯索引。
      • SELECT rds_tde_lazy_decrypt_database();
      • SELECT rds_tde_decrypt_database();