В Firebird существует возможность зашифровать данные хранимые в базе данных.Не весь файл базы данных шифруется: только страницы данных, индексов и blob.
Для того чтобы сделать шифрование базы данных возможным, необходимо получить или написать плагин шифрования базы данных.
Note
|
Пример плагина шифрования в examples/dbcrypt не производит реального шифрования, это просто пример того, как можно написать этот плагин. |
Основная проблема с шифрованием базы данных состоит в том, как хранить секретный ключ.Firebird предоставляет помощника для передачи этого ключа от клиента, но это вовсе не означает, что хранение ключей на клиенте является лучшим способом: это не более чем одна возможных альтернатив.Хранение ключей на том же диске, что и база данных, является очень плохим вариантом.
Для эффективного разделения шифрования и доступа к ключу, плагин шифрования базы данных разделён на две части: само шифрование и держатель секретного ключа.Это может быть эффективным подходом, когда вы хотите использовать некоторый хороший алгоритм шифрования, но у вас есть собственный секретный способ хранение ключей.
После того как вы определитесь с плагином и ключом, вы можете включить процесс шифрования.
ALTER DATABASE ENCRYPT WITH plugin_name [KEY key_name]
Параметр | Описание |
---|---|
plugin_name |
Имя плагина шифрования. |
key_name |
Имя ключа шифрования. |
Шифрование начинается сразу после этого оператора и будет выполняться в фоновом режиме.Нормальная работа с базами данных не нарушается во время шифрования.
Tip
|
Процесс шифрования может быть проконтролирован с помощью поля gstat –h также будет предоставлять ограниченную информацию о состоянии шифрования. Например, следующий запрос
будет отображать процент завершения процесса шифрования. |
Необязательное предложение KEY
позволяет передать имя ключа для плагина шифрования.Что делать с этим именем ключа решает плагин.
Для дешифрования базы данных выполните:
ALTER DATABASE DECRYPT
Для Linux пример плагина с именем libDbCrypt_example.so можно найти в поддиректории /plugins/.