Cегодня рассмотрим некоторые инструменты защиты данных в Greenplum. Читайте далее про особенности шифрования в этой MPP-СУБД и лучшие практики обеспечения информационной безопасности и защиты в этой системе хранения и аналитики больших данных.
Администраторы и суперпользователи Greenplum
Для надежной защиты данных, хранящихся в MPP-СУБД Greenplum, и обеспечения информационной безопасности кластера рекомендуется применять следующие лучшие практики [1]:
- Разрешить доступ к системному пользователю gpadmin только главному администратору для выполнения отдельных задач обслуживания системы, например, обновление или расширение.
- Ограничить количество пользователей с атрибутом роли SUPERUSER, предоставив их только системным администраторам. Суперпользователи обходят все проверки прав доступа в базе данных и очереди ресурсов.
- Назначить отдельную роль базы данных Greenplum каждому пользователю, приложению или службе, выполняющим вход в систему.
- Использовать группы для управления правами доступа.
- Защитить пароль root.
- Обеспечить соблюдение политики надежных паролей для операционной системы.
- Защитить важные файлы операционной системы, поверх которой установлена СУБД Greenplum.
Пользователь gpadmin является суперпользователем Greenplum по умолчанию и владельцем файловой системы СУБД. Эта учетная запись администратора является обязательной и обладает максимальными правами: пользователь gpadmin может обойти все функции безопасности, читать, изменять или удалять любые данные, включая данные системного каталога и права доступа к базе данных. Поэтому следует защитить пользователя gpadmin, разрешив доступ к нему ограниченному кругу системных администраторов и только в исключительных случаях. Простые пользователи базы данных не должны входить в систему как gpadmin, а ETL-процессы или другие рабочие нагрузки не должны запускаться от имени gpadmin. Рекомендуется назначить отдельную роль каждому пользователю, который входит в систему, чтобы обеспечить детальное логгирование и аудит выполненных действий. Аналогично следует создать отдельную роль для каждого приложения или веб-службы, которые входят в Greenplum [2].
Greenplum для инженеров данных и аналитиков данных
Код курса
GPDE
Ближайшая дата курса
27 января, 2025
Продолжительность
24 ак.часов
Стоимость обучения
72 000 руб.
Шифрование данных в GP
Для защиты данных в Greenplum можно использовать шифрование следующими способами [3]:
- зашифровать соединения между клиентами и главной базой данных с помощью SSL, включив параметр конфигурации ssl-сервера и отредактировав файл conf;
- использовать SSL-шифрование данных при передаче между сервером параллельного распространения файлов Greenplum, gpfdist и узлами сегментов (в случае версии 4.2.1 и выше);
- зашифровать сетевое взаимодействие между хостами в кластере Greenplum с помощью IPsec. Если операционная система не поддерживает этот протокол. Можно воспользоваться сторонним решением, например, Zettaset. Зашифрованное сетевое соединение устанавливается между каждой парой хостов в кластере в виде зашифрованного VPN с проверкой подлинности.
- защитить данные в СУБД с помощью модуля pgcrypto с функций шифрования/дешифрования. Это шифрование на уровне столбца защитит конфиденциальную информацию, такую как пароли и персональные данные.
При использовании шифрования рекомендуется учитывать особенности этого способа защиты данных в Greenplum [3]:
- шифрование гарантирует, что данные будут видны только пользователям, у которых есть ключ для расшифровки данных;
- шифрование и дешифрование данных требуют производительности, поэтому шифровать следует только те данные, которые действительно необходимо защитить, предварительно протестировав производительность и оценив допустимость ее некоторого снижения;
- сертификаты сервера Greenplum должны быть подписаны центром сертификации (ЦС), чтобы клиенты могли аутентифицировать сервер. ЦС может быть локальным, если все клиенты находятся внутри организации.
- клиентские подключения к Greenplum должны использовать SSL-шифрование всегда, когда соединение проходит через небезопасный канал;
- симметричное шифрования, когда один и тот же ключ используется для шифрования и для дешифрования, имеет лучшую производительность, чем асимметричное, и должно использоваться, когда ключ можно безопасно передавать;
- для шифрования данных на диске существуют функции модуля pgcrypto, чтобы защитить клиентское соединение с помощью SSL и избежать передачи незашифрованных данных;
- протокол gpfdists защитит данные ETL-процессов при их загрузке или выгрузке из Greenplum. Протокол gpfdists — это безопасная версия протокола gpfdist, которая надежно идентифицирует файловый сервер и СУБД, шифруя обмен данными между ними. Gpfdists защитит от подслушивания и атак типа «злоумышленник посередине».
Протокол gpfdists имеет ряд особенностей, о которых мы поговорим далее.
Протокол gpfdists
При использовании протокол gpfdists для безопасного SSL-взаимодействия клиент-сервер стоит помнить о некоторых его отличительных характеристиках [3]:
- наличие клиентских сертификатов SSL с учетом того, что список отозванных сертификатов (CRL) и многоязычные сертификаты не поддерживаются;
- протокол TLSv1 используется с алгоритмом шифрования TLS_RSA_WITH_AES_128_CBC_SHA и эти параметры SSL нельзя изменить;
- поддерживается повторное согласование SSL;
- для параметра ignore host mismatch установлено значение false;
- закрытые ключи, содержащие парольную фразу, не поддерживаются для файлового сервера gpfdist (server.key) или для базы данных Greenplum (client.key). Поэтому не нужно защищать закрытый ключ парольной фразой: сервер не запрашивает ее для закрытого ключа, и загрузка данных завершается ошибкой, если она требуется.
- За выдачу сертификатов, соответствующих используемой операционной системе, отвечает пользователь, преобразуя сертификаты в нужный формат с помощью SSL- конвертера.
- Сервер gpfdist, запущенный с параметром —ssl, может взаимодействовать только с протоколом gpfdists. Сервер gpfdist, запущенный без опции —ssl, может взаимодействовать только с протоколом gpfdist.
Включить протокол gpfdists можно двумя способами:
- запустить сервер gpfdist с параметром —ssl, а затем использовать протокол gpfdists в условии LOCATION SQL-оператора по созданию внешней таблицы Greenplum CREATE EXTERNAL TABLE;
- использовать контрольный файл YAML с параметром SSL, установленным в значение true, и запустить gpload, что запустит сервер gpfdist с параметром –ssl и протоколом gpfdists.
Важно, что при использовании протокола gpfdists следующие сертификаты клиентов должны находиться в каталоге $PGDATA/gpfdists в каждом сегменте:
- файл сертификата клиента client.crt;
- файл закрытого ключа клиента client.key;
- доверенные центры сертификации, root.crt.
Таким образом, можно безопасно загрузить данные во внешнюю таблицу. Например, создадим для чтения внешнюю таблицу ext_expenses из всех txt-файлов, используя протокол gpfdists. Файлы форматируются вертикальной чертой (|) в качестве разделителя столбцов (DELIMITER) и пустым пространством как null. Запустив gpfdist с параметром —ssl на узлах сегмента, следует войти в базу данных и выполнить следующую команду:
=# CREATE EXTERNAL TABLE ext_expenses( name text, date date, amount float4, category text, desc1 text ) LOCATION ('gpfdists://etlhost-1:8081/*.txt', 'gpfdists://etlhost-2:8082/*.txt') FORMAT 'TEXT' ( DELIMITER '|' NULL ' ') ;
Узнайте больше подробностей про администрирование и эксплуатацию Greenplum с Arenadata DB для эффективного хранения и аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники
- https://gpdb.docs.pivotal.io/6-16/best_practices/summary.html
- https://gpdb.docs.pivotal.io/6-16/best_practices/security.html
- https://gpdb.docs.pivotal.io/6-16/best_practices/encryption.html