pg_tde

Percona加密存储引擎

概览

扩展包名版本分类许可证语言
pg_tde2.1SECMITC
ID扩展名BinLibLoadCreateTrustReloc模式
7500pg_tde-
相关扩展pgsodium pgsmcrypto pgcrypto anon pgcryptokey faker sslutils uuid-ossp

works on percona postgres tde fork

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY2.11817161514pg_tde-
RPMPIGSTY2.1.11817161514percona-postgresql$v-
DEBPIGSTY2.1.11817161514percona-postgresql-$v-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el8.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el9.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el9.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el10.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el10.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d12.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d12.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d13.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d13.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u22.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u22.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u24.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u24.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS

安装

您可以直接安装 pg_tde 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

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: PostgreSQL 透明数据加密

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 和索引
  • 尚不支持加密临时文件和统计信息

最后修改 2026-03-12: update extension pages (f579993)