透明資料加密(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();