Об этом проекте
pg_vault_tde — это расширение PostgreSQL с открытым исходным кодом, обеспечивающее прозрачное шифрование данных (TDE) для версий PostgreSQL 17 и 18, с запланированной поддержкой версии 19. Оно использует алгоритм шифрования AES-256-GCM и работает на уровне Table Access Method, что означает шифрование данных перед записью и их расшифровку при чтении без необходимости изменений в ядре PostgreSQL.
Расширение поддерживает несколько решений для управления ключами: HashiCorp Vault, OpenBao, локальные хранилища PKCS#12 и HSM PKCS#11. Ключи шифрования управляются внешними системами и кэшируются в разделяемой памяти с возможностью автоматической ротации.
Ключевые особенности:
* **Прозрачное шифрование**: Шифрует каждую кортежу с помощью AES-256-GCM. Данные шифруются перед попаданием в менеджер хранилища и расшифровываются после извлечения.
* **Варианты управления ключами**: Поддержка HashiCorp Vault/OpenBao, локальных хранилищ PKCS#12 и интеграции с PKCS#11/HSM.
* **Отсутствие модификаций ядра**: Работает как подключаемое расширение.
* **Шифрование индексов**: Поддерживает AES-256-SIV для B-Tree индексов (`tde_btree`). В будущих версиях планируется поддержка индексов GIN, Hash и GiST для равенства.
* **Шифрование WAL**: Данные шифруются перед записью в журнал предзаписи (Write-Ahead Log, WAL).
* **Настройка KMS для каждой базы данных**: Позволяет использовать разные настройки KMS для отдельных баз данных в одном кластере.
* **Ротация ключей**: Поддерживает ротацию DEK для каждой таблицы (онлайн) и ротацию KEK.
Установку можно выполнить путем сборки из исходного кода или с помощью `pgxn install`. Конфигурация включает добавление `pg_vault_tde` в параметр `shared_preload_libraries` в файле `postgresql.conf`, а затем создание расширения в базе данных. Для настройки выбранного провайдера KMS и его параметров используются специфические параметры GUC.
Расширение определяет новый метод доступа к таблицам `encrypted_heap` для создания зашифрованных таблиц. Данные прозрачно расшифровываются при чтении. Формат данных для зашифрованных кортежей включает заголовок, вектор инициализации (IV), шифротекст, тег GCM, версию и счетчик поколений, что добавляет небольшие накладные расходы на каждую кортежу.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.