透明数据加密(TDE)需要使用ALTER语句对表或索引进行加解密,为减少您重复加解密的操作,RDS PostgreSQL提供此插件,用于批量加密、解密。
前提条件
RDS PostgreSQL实例需满足以下要求:
- 实例大版本为PostgreSQL 10或以上。
- 实例内核小版本为20221030或以上。
说明 如需升级内核小版本,请参见升级内核小版本。 - 您已开通透明数据加密,具体请参见设置透明数据加密。
注意事项
执行批量加密或解密命令后,会一直等待执行完成后再返回结果,如果数据库中的表数量较多时,可能耗时较长,请谨慎使用。
创建和删除插件
说明 推荐使用高权限账号可以执行如下命令。
- 创建插件
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();
-
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/156107.html