pg_tde release notes¶
pg_tde extension brings in Transparent Data Encryption (TDE) to PostgreSQL and enables you to keep sensitive data safe and secure.
Beta 2 (2024-12-16)¶
With this release, pg_tde extension offers two database specific versions:
- PostgreSQL Community version provides only the
tde_heap_basicaccess method using which you can introduce table encryption and WAL encryption for data in the encrypted tables. Index data remains unencrypted. - Version for Percona Server for PostgreSQL provides the
tde_heapaccess method. using this method you can encrypt index data in encrypted tables thus increasing the safety of your sensitive data. For backward compatibility, thetde_heap_basicmethod is available in this version too.
The Beta 2 version introduces the following features and improvements:
New Features¶
- Added the
tde_heapaccess method with which you can now enable index encryption for encrypted tables and global WAL data encryption. To use this access method, you must install Percona Server for PostgreSQL. Check the installation guide - Added event triggers to identify index creation operations on encrypted tables and store those in a custom storage.
- Added support for secure transfer of keys using the OASIS Key Management Interoperability Protocol (KMIP). The KMIP implementation was tested with the PyKMIP server and the HashiCorp Vault Enterprise KMIP Secrets Engine.
Improvements¶
-
WAL encryption improvements:
-
Added a global key to encrypt WAL data in global space
-
Added WAL key management
-
Keyring improvements:
- Renamed functions to point their usage for principal key management
- Improved keyring provider management across databases and the global space.
- Keyring configuration now uses common JSON API. This simplifies code handling and enables frontend tools like
pg_waldumpto read the code thus improving debugging.
-
The
pg_tde_is_encryptedfunction now supports custom schemas in the format ofpg_tde_is_encrypted('schema.table'); - Changed the location of internal TDE files: instead of the database directory, now all files are stored in
$PGDATA/pg_tde - Improved error reporting when
pg_tdeis not added to theshared_preload_libraries - Improved memory usage of
tde_heap_basicduring sequential reads - Improved
tde_heap_basicfor select statements - Added encryption support for (some) command line utilities
Bugs fixed¶
- Fixed multiple bugs with
tde_heap_basicand TOAST records - Fixed various memory leaks
Beta (2024-06-30)¶
With this version, the access method for pg_tde extension is renamed tde_heap_basic. Use this access method name to create tables. Find guidelines in Test TDE tutorial.
The Beta version introduces the following bug fixes and improvements:
-
Fixed the issue with
pg_tderunning out of memory used for decrypted tuples. The fix introduces the new componentTDEBufferHeapTupleTableSlotthat keeps track of the allocated memory for decrypted tuples and frees this memory when the tuple slot is no longer needed. -
Fixed the issue with adjusting a current position in a file by using raw file descriptor for the
lseekfunction. (Thanks to user rainhard for providing the fix) -
Enhanced the init script to consider a custom superuser for the POSTGRES_USER parameter when
pg_tdeis running via Docker (Thanks to Alejandro Paredero for reporting the issue)
Alpha 1 (2024-03-28)¶
Release Highlights¶
The Alpha1 version of the extension introduces the following key features:
-
You can now rotate principal keys used for data encryption. This reduces the risk of long-term exposure to potential attacks and helps you comply with security standards such as GDPR, HIPAA, and PCI DSS.
-
You can now configure encryption differently for each database. For example, encrypt specific tables in some databases with different encryption keys while keeping others non-encrypted.
-
Keyring configuration has undergone several improvements, namely:
- You can define separate keyring configuration for each database
- You can change keyring configuration dynamically, without having to restart the server
- The keyring configuration is now stored in a catalog separately for each database, instead of a configuration file
- Avoid storing secrets in the unencrypted catalog by configuring keyring parameters to be read from external sources (file, http(s) request)
Improvements¶
- Renamed the repository and Docker image from
postgres-tde-exttopg_tde. The extension name remains unchanged - Changed the Initialization Vector (IV) calculation of both the data and internal keys
Bugs fixed¶
- Fixed toast related crashes
- Fixed a crash with the DELETE statement
- Fixed performance-related issues
- Fixed a bug where
pg_tdesent many 404 requests to the Vault server - Fixed сompatibility issues with old OpenSSL versions
- Fixed сompatibility with old Curl versions
MVP (2023-12-12)¶
The Minimum Viable Product (MVP) version introduces the following functionality:
- Encryption of heap tables, including TOAST
- Encryption keys are stored either in Hashicorp Vault server or in local keyring file (for development)
- The key storage is configurable via separate JSON configuration files
- Replication support