内容提要
PostgreSQL 16发布了pg_tde扩展的技术预览版本,支持多租户和密钥轮换,配置更简化。不建议在生产环境中使用,可用于开发环境。
延伸解读
多租户加密的配置方式
pg_tde 技术预览版将配置从只读文件改为按数据库通过 SQL 函数进行。这意味着每个使用 pg_tde 的数据库都需要单独配置,但好处是不同数据库可以使用不同的密钥存储和密钥,并在数据库整个生命周期内保持隔离。这种设计适合多租户场景,但增加了管理复杂度,需要为每个数据库执行配置命令。
密钥存储的选择与建议
扩展支持本地文件和 HashiCorp Vault 两种密钥存储方式。文章明确推荐使用 Vault,因为文件存储仅用于开发和演示。使用 Vault 需要提供 vault_url、vault_secret_token、vault_mount_point 等参数,并可选提供 vault_ca_path。对于生产环境,Vault 能提供更好的安全性和集中管理。
加密范围与索引限制
与之前的 MVP 版本一样,技术预览版仅加密表数据本身,不加密索引。这意味着索引结构中可能存在的敏感数据仍会以明文形式存储在文件中。如果表包含敏感信息,并且索引会暴露这些信息,那么加密保护是不完整的。用户需要评估索引是否包含敏感数据,并考虑额外的保护措施。
动态密钥轮换与提供者切换
新版本支持通过 pg_tde_rotate_key 函数动态更改配置,可以生成新主密钥或切换密钥存储提供者。两个参数均可选,若都为空则自动版本化,在相同提供者上创建下一个版本的主密钥。若要使用新密钥名或新提供者,只需指定相应参数。这简化了密钥轮换流程,但需注意轮换后旧数据可能仍用旧密钥加密,需确保密钥管理策略一致。
Q&A
pg_tde扩展的主要功能是什么?
pg_tde扩展支持多租户和密钥轮换,并提供简化的配置机制。
如何在PostgreSQL中配置pg_tde?
需要重启服务器,并在postgresql.conf中添加到shared_preload_libraries,然后使用SQL命令为每个数据库单独配置pg_tde。
pg_tde扩展是否适合生产环境使用?
不建议在生产环境中使用pg_tde的技术预览版本,但可以用于开发环境。
推荐的密钥存储方式是什么?
推荐使用HashiCorp Vault服务器存储密钥,而非本地文件。
如何动态更改pg_tde的配置?
可以使用pg_tde_rotate_key函数动态生成新主密钥或更换密钥存储提供者。
pg_tde扩展的下载来源是什么?
pg_tde扩展可以从Percona实验性仓库下载。