透明數據加密(TDE)需要使用ALTER語句對表或索引進行加解密,為減少您重復加解密的操作,RDS PostgreSQL提供此插件,用于批量加密、解密。
您可以加入RDS PostgreSQL插件交流釘釘群(103525002795),進行咨詢、交流和反饋,獲取更多關于插件的信息。
前提條件
注意事項
執行批量加密或解密命令后,會一直等待執行完成后再返回結果,如果數據庫中的表數量較多時,可能耗時較長,請謹慎使用。
創建和刪除插件
推薦使用高權限賬號可以執行如下命令。
創建插件
CREATE EXTENSION rds_tde_utils;
刪除插件
DROP EXTENSION rds_tde_utils;
使用示例
創建測試數據。
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);
批量加密。
說明加密過程會對表進行重寫,您可以選擇
rds_tde_lazy_encrypt_table
或rds_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();
批量解密。
說明解密過程會對表進行重寫,您可以選擇
rds_tde_lazy_decrypt_table
或rds_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();