透明数据加密(TDE)需要使用ALTER语句对表或索引进行加解密,为减少您重复加解密的操作,RDS PostgreSQL提供此插件,用于批量加密、解密。
前提条件
RDS PostgreSQL实例需满足以下要求:
- 实例大版本为PostgreSQL 10或以上。
- 实例内核小版本为20221030或以上。
- 您已开通透明数据加密,具体请参见设置透明数据加密。
注意事项
执行批量加密或解密命令后,会一直等待执行完成后再返回结果,如果数据库中的表数量较多时,可能耗时较长,请谨慎使用。
使用示例
- 创建测试数据。
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)。
- 批量加密当前数据库下的所有表(table_a和table_b)及其关联索引。
- 批量解密。
说明
解密过程会对表进行重写,您可以选择
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)。
- 批量解密当前数据库下的所有表(table_a和table_b)及其关联索引。