Параметры преобразования
Эта страница переведена при помощи нейросети GigaChat.
PostgreSQL предлагает преобразование на нескольких уровнях и обеспечивает гибкость защиты данных от раскрытия из-за кражи сервера баз данных, нечестных администраторов и ненадежных сетей. Преобразование также может потребоваться для защиты конфиденциальных данных, таких как медицинские записи или финансовые транзакции.
Преобразование паролей
: Пароли пользователей базы данных хранятся в виде хешей (определяемых настройкой password_encryption), поэтому администратор не может определить фактический пароль, назначенный пользователю. Если для аутентификации клиента используется преобразование SCRAM или MD5, непреобразованный пароль никогда даже временно не присутствует на сервере, потому что клиент преобразует его перед отправкой через сеть. Предпочтительнее использовать SCRAM, поскольку это стандарт Интернета и он более безопасен, чем специфичный для PostgreSQL протокол аутентификации MD5.
Преобразование для определенных столбцов
: Модуль pgcrypto позволяет хранить определенные поля в преобразованном виде. Это полезно, если только некоторые данные являются конфиденциальными. Клиент предоставляет ключ расшифровки, а данные расшифровываются на сервере, а затем отправляются клиенту.
Расшифрованные данные и ключ расшифровки присутствуют на сервере непродолжительное время во время их расшифровки и передачи между клиентом и сервером. Это создает краткий момент, когда данные и ключи могут быть перехвачены кем-то с полным доступом к серверу баз данных, например системным администратором.
Преобразование раздела данных
: Преобразование хранилища может выполняться на уровне файловой системы или на уровне блоков. Варианты преобразования файловой системы Linux включают eCryptfs и EncFS, а FreeBSD использует PEFS. Варианты полного преобразования диска или уровня блока включают dm-crypt + LUKS в Linux и модули GEOM geli и gbde в FreeBSD. Многие другие операционные системы поддерживают эту функциональность, включая Windows.
Этот механизм предотвращает чтение незащищенных данных с дисков, если диски или весь компьютер украдены. Однако это не защищает от атак при монтировании файловой системы, поскольку после монтирования операционная система предоставляет непреобразованный вид данных. Тем не менее, для монтирования файловой системы нужно каким-то образом передать ключ преобразования операционной системе, и иногда ключ хранится где-то на хосте, который монтирует диск.
Преобразование данных при передаче по сети
: SSL-соединения преобразуют все данные, передаваемые по сети: пароль, запросы и возвращаемые данные. Файл pg_hba.conf
позволяет администраторам указывать, какие хосты могут использовать незащищенные соединения (host
) и для каких требуется преобразование с использованием SSL (hostssl
). Кроме того, клиенты могут указать, что они подключаются к серверам только через SSL.
Соединения, преобразованные с помощью GSSAPI, преобразуют все данные, передаваемые по сети, включая запросы и возвращаемые данные. (Никакой пароль не передается по сети.) Файл pg_hba.conf
позволяет администраторам указывать, какие хосты могут использовать незащищенные соединения (host
) и для которых требуются соединения, преобразованные с использованием GSSAPI (hostgssenc
). Также клиенты могут указать, что они подключаются к серверам только на преобразованных соединениях GSSAPI (gssencmode=require
).
Также можно использовать Stunnel или SSH для преобразования передач.
Аутентификация хоста SSL
: Как клиент, так и сервер могут предоставлять друг другу сертификаты SSL. Это требует некоторой дополнительной настройки с каждой стороны, но это обеспечивает более надежную проверку подлинности, чем простое использование паролей. Это предотвращает возможность для компьютера притвориться сервером достаточно долго, чтобы прочитать пароль, отправленный клиентом. Это также помогает предотвратить атаки типа «человек посередине», когда компьютер между клиентом и сервером притворяется сервером и читает и передает все данные между клиентом и сервером.
Преобразование на стороне клиента
: Если системный администратор машины сервера не может быть доверенным лицом, клиенту необходимо преобразовать данные таким образом, чтобы непреобразованные данные никогда не появлялись на сервере баз данных. Данные преобразуются на клиенте перед отправкой на сервер, а результаты базы данных должны быть расшифрованы на клиенте перед использованием.