
记得我在 PostgreSQL中的TDE使用体验一文中提到TDE的超强plugin,那个时候,还没有正式的Release, 一些字段类型的加密也不太灵。这篇文章里已经有相关介绍,有兴趣的可以参考一下原文。现在半年过去了,这个TDE PLUGIN进展如何?
原来的仓库地址已经变了,从:https://github.com/Percona-Lab/postgres-tde-ext.git 变为:https://github.com/Percona-Lab/pg_tde/
看来,Percona-Lab是有意要把这个项目做成完全正式的项目。
看了下2024.3.28日的release, 里边已经有了不少的fix。估计对我上次验证的一些字段类型不支持的情况有所改善。
我们不妨简单的试验一下:
1. pg16安装 (略)
2. 编译pg_tde (取release版本的code)
[08:05:00-postgres@centos3:/iihero/source/plugins]$ wget https://github.com/Percona-Lab/pg_tde/archive/refs/tags/1.0.0-alpha.tar.gz
2024-05-22 08:05:12 (1.11 MB/s) - ‘1.0.0-alpha.tar.gz’ saved [1070128]
[08:05:37-postgres@centos3:/iihero/source/plugins]$ tar xf 1.0.0-alpha.tar.gz
[08:05:51-postgres@centos3:/iihero/source/plugins]$ cd pg_tde-1.0.0-alpha/
sudo yum install libcurl-devel
source ~/.bash_profile # 填充相关环境变量
./configure
make USE_PGXS=1
sudo PATH=$PATH make USE_PGXS=1 install
......
[08:14:01-postgres@centos3:/iihero/source/plugins/pg_tde-1.0.0-alpha]$ sudo PATH=$PATH make USE_PGXS=1 install
/usr/bin/mkdir -p '/usr/pgsql-16/lib'
/usr/bin/mkdir -p '/usr/pgsql-16/share/extension'
/usr/bin/mkdir -p '/usr/pgsql-16/share/extension'
/usr/bin/install -c -m 755 pg_tde.so '/usr/pgsql-16/lib/pg_tde.so'
/usr/bin/install -c -m 644 .//pg_tde.control '/usr/pgsql-16/share/extension/'
/usr/bin/install -c -m 644 .//pg_tde--1.0.sql '/usr/pgsql-16/share/extension/'
我们这里只简单验证一下上一次出现的问题。
配置文件同上次:
vi postgresql.conf
log_filename = 'postgresql-%Y-%m-%d.log'
logging_collector = on
log_directory = 'log'
# 添加插件预加载
shared_preload_libraries = 'pg_tde'
# keyring配置文件项
pg_tde.keyringConfigFile = '/iihero/tde/keyring.json'
keyring配置文件:
vi /iihero/tde/keyring.json
{
'provider': 'file',
'datafile': '/tmp/pgkeyring'
}
启动完pg以后。
[08:22:32-postgres@centos3:/var/lib/pgsql/16/data]$ pg_ctl start
waiting for server to start....2024-05-22 08:22:35.506 CST [3195] LOG: Initializing TDE master key info
2024-05-22 08:22:35.506 CST [3195] LOG: registered custom resource manager "test_pg_tde_custom_rmgr" with ID 128
2024-05-22 08:22:35.506 CST [3195] LOG: tde_shmem_request: requested 819264 bytes
2024-05-22 08:22:35.510 CST [3195] LOG: initializing shared state for master key
2024-05-22 08:22:35.510 CST [3195] LOG: creating DSA area of size 819200
2024-05-22 08:22:35.510 CST [3195] LOG: initializing dsa area objects for master key
2024-05-22 08:22:35.510 CST [3195] LOG: setting no limit to DSA area of size 819200
2024-05-22 08:22:35.511 CST [3195] LOG: redirecting log output to logging collector process
2024-05-22 08:22:35.511 CST [3195] HINT: Future log output will appear in directory "log".
done
server started
我们能看到一些TDE相关的启动LOG:
Initializing TDE master key info
LOG: registered custom resource manager "test_pg_tde_custom_rmgr" with ID 128
LOG: tde_shmem_request: requested 819264 bytes
看看加密效果,直接上到多种字段类型进行验证:
CREATE EXTENSION pg_tde;
postgres=# SELECT pg_tde_add_key_provider_file('file','/tmp/pgkeyring');
pg_tde_add_key_provider_file
------------------------------
1
(1 row)
postgres=# create table t4_tde(id int primary key, col2 varchar(36), col3 timestamp, col4 char(36), col5 bytea, col6 varbit(256)) using pg_tde;
ERROR: Master key does not exists for the database
HINT: Use set_master_key interface to set the master key
这里提示没有设置master_key,哈哈,看来使用步骤比以前多了些。
postgres=# SELECT pg_tde_set_master_key('my-master-key','file');
pg_tde_set_master_key
-----------------------
t
(1 row)
postgres=# create table t4_tde(id int primary key, col2 varchar(36), col3 timestamp, col4 char(36), col5 bytea, col6 varbit(256)) using pg_tde;
CREATE TABLE
postgres=# create table t_tde(id int primary key, col2 text) using pg_tde;
CREATE TABLE
postgres=# insert into t_tde values(1, 'wangjing');
INSERT 0 1
postgres=# select * from t_tde;
id | col2
----+----------
1 | wangjing
(1 row)
看来这下全都好使了。爽。
虽然现在是alpha版本,看来离正式的Release也不太远了。期待中。。。。。。。。。
历经半年时间,pg_tde进展神速。据我所知,OpenGauss也有类似功能并且是开放的。PolarDB好像也有。没来得及去试,也不确定是否开源版本就给公开。有时间后续再验!希望有惊喜。
SAP BTP中的hyperscaler PG,同样支持TDE,它有自己的解决方案,并且客户能自己指定其中的key, 直接面向多租户的PaaS和SaaS应用。有时间再总结一下。
我是【Sean】, 欢迎大家长按关注并加星公众号:数据库杂记。有好资源相送,同时为你提供及时更新。已关注的朋友,发送0、1到7,都有好资源相送。

往期导读: (安全相关)
1. PostgreSQL中的TDE使用体验
2. 聊聊数据库中的用户安全策略
3. 云上黑暗森林:打爆云账单,只需要S3桶名
4. 熊大 - 原来HANA DB抓连接数也很容易
5. HANA与PostgreSQL的多租户实现方案的对比
6. PostgreSQL中的权限: 一个有关schema、角色的问题及思考
7. SAP BTP也开始正式支持PostgreSQL实例级的全加密
8. Redis 7.0.X 在Windows下编译支持TLS连接,遇坑埋坑
9. Cloud环境中Hyperscaler PostgreSQL的简要介绍
10. HANA Cloud案例 : 多个Hana Container的数据库连接全部用尽
11.PostgreSQL兼具审计与反背锅功能之pgAudit插件介绍
原文作者:数据库杂记;如有侵权,请联系管理员删除。