透明資料加密(TDE)需要使用ALTER語句對錶或索引進行加解密,為減少您重複加解密的操作,RDS PostgreSQL提供此外掛程式,用於大量加密、解密。
前提條件
注意事項
執行大量加密或解密命令後,會一直等待執行完成後再返回結果,如果資料庫中的表數量較多時,可能耗時較長,請謹慎使用。
建立和刪除外掛程式
說明
推薦使用高許可權帳號可以執行如下命令。
建立外掛程式
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();