pg_tde
Percona加密存储引擎
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_tde | 2.1 | SEC | MIT | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 7500 | pg_tde | 否 | 是 | 是 | 是 | 否 | 否 | - |
| 相关扩展 | pgsodium pgsmcrypto pgcrypto anon pgcryptokey faker sslutils uuid-ossp |
|---|
works on percona postgres tde fork
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 2.1 | 1817161514 | pg_tde | - |
| RPM | PIGSTY | 2.1.1 | 1817161514 | percona-postgresql$v | - |
| DEB | PIGSTY | 2.1.1 | 1817161514 | percona-postgresql-$v | - |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| el8.aarch64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| el9.x86_64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| el9.aarch64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| el10.x86_64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| el10.aarch64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| d12.x86_64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| d12.aarch64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| d13.x86_64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| d13.aarch64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| u22.x86_64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| u22.aarch64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| u24.x86_64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| u24.aarch64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
安装
您可以直接安装 pg_tde 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pg_tde; # 当前活跃 PG 版本安装
pig ext install -y pg_tde -v 18 # PG 18
pig ext install -y pg_tde -v 17 # PG 17
dnf install -y percona-postgresql18 # PG 18
dnf install -y percona-postgresql17 # PG 17
apt install -y percona-postgresql-18 # PG 18
apt install -y percona-postgresql-17 # PG 17
预加载配置:
shared_preload_libraries = 'pg_tde';
创建扩展:
CREATE EXTENSION pg_tde;
用法
pg_tde 在文件级别提供透明数据加密(TDE),对元组、WAL 和索引进行加密。它使用 tde_heap 访问方法,支持基于文件的密钥环和外部密钥管理系统(KMS)。
CREATE EXTENSION pg_tde;
配置
添加到 postgresql.conf:
shared_preload_libraries = 'pg_tde'
设置密钥提供者
-- 基于文件的密钥提供者(数据库级别)
SELECT pg_tde_add_database_key_provider_file('file_keyring', '/path/to/keyring');
-- 或全局级别的密钥提供者
SELECT pg_tde_add_global_key_provider_file('file_keyring', '/path/to/keyring');
-- 使用数据库密钥提供者设置加密密钥
SELECT pg_tde_set_key_using_database_key_provider('my_key', 'file_keyring');
-- 或使用全局密钥提供者
SELECT pg_tde_set_key_using_global_key_provider('my_key', 'file_keyring');
创建加密表
CREATE TABLE sensitive_data (
id serial PRIMARY KEY,
secret text
) USING tde_heap;
使用 USING tde_heap 创建的表中的所有数据都会在磁盘上透明加密。
检查加密状态
SELECT pg_tde_is_encrypted('sensitive_data');
附加函数
| 函数 | 描述 |
|---|---|
pg_tde_add_database_key_provider_file(name, path) | 添加基于文件的数据库密钥提供者 |
pg_tde_add_global_key_provider_file(name, path) | 添加基于文件的全局密钥提供者 |
pg_tde_add_database_key_provider_vault_v2(...) | 添加 HashiCorp Vault 数据库密钥提供者 |
pg_tde_add_global_key_provider_vault_v2(...) | 添加 HashiCorp Vault 全局密钥提供者 |
pg_tde_set_key_using_database_key_provider(key, provider) | 通过数据库提供者设置加密密钥 |
pg_tde_set_key_using_global_key_provider(key, provider) | 通过全局提供者设置加密密钥 |
pg_tde_is_encrypted(table) | 检查表是否已加密 |
注意事项
- 仅适用于 Percona Server for PostgreSQL 17+
- 加密元组、WAL 和索引
- 尚不支持加密临时文件和统计信息