这个项目能做什么
pg_vault_tde 是一个开源的 PostgreSQL 扩展,为 PostgreSQL 17 和 18 版本提供透明数据加密(TDE),并计划支持 19 版本。它使用 AES-256-GCM 加密算法,在表访问方法(Table Access Method)层运行,这意味着数据在存储前被加密,在检索时被解密,无需对 PostgreSQL 核心进行任何修改。
该扩展支持多种密钥管理解决方案:HashiCorp Vault、OpenBao、本地 PKCS#12 钱包和 PKCS#11 HSM。加密密钥在外部管理,并缓存在共享内存中,具备自动轮换能力。
主要特性包括:
* **透明加密**:使用 AES-256-GCM 加密每个元组。数据在到达存储管理器之前被加密,并在离开存储管理器后被解密。
* **密钥管理选项**:支持 HashiCorp Vault/OpenBao、本地 PKCS#12 钱包和 PKCS#11/HSM 集成。
* **无需修改核心**:作为即插即用扩展运行。
* **索引加密**:支持用于 B-Tree 索引的 AES-256-SIV(`tde_btree`)。未来版本计划支持 GIN、Hash 和 GiST 等值索引。
* **WAL 加密**:数据在写入预写日志(WAL)之前被加密。
* **每数据库 KMS 配置**:允许在同一集群内为各个数据库设置不同的 KMS 配置。
* **密钥轮换**:支持每表 DEK 轮换(在线)和 KEK 轮换。
可以通过从源代码构建或使用 `pgxn install` 进行安装。配置涉及修改 `postgresql.conf`,将 `pg_vault_tde` 添加到 `shared_preload_libraries` 中,然后在数据库中创建扩展。使用特定的 GUC 参数来配置所选的 KMS 提供程序及其设置。
该扩展定义了一个新的表访问方法 `encrypted_heap`,用于创建加密表。数据在读取时被透明解密。加密元组的线格式包括头部、IV、密文、GCM 标签、版本和生成计数器,每个元组会增加少量开销。
评论
0 评分人数达到10人后显示
登录后参与讨论。