ITPub博客

首页 > 数据库 > 数据库开发技术 > 别慌,最新进展, PostgreSQL中的TDE很快可以用了

别慌,最新进展, PostgreSQL中的TDE很快可以用了

原创 数据库开发技术 作者:数据库杂记 时间:2024-05-23 06:01:00 0 删除 编辑

前言

记得我在  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插件介绍

原文作者:数据库杂记;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-04-22

  • 博文量
    276
  • 访问量
    160269