Большие данные под защитой: лучшие практики cybersecurity в Greenplum

Автор Категория , ,
Большие данные под защитой: лучшие практики cybersecurity в Greenplum

Хотя наш новый курс «Greenplum для инженеров данных» и не предполагает подробное изучение инструментов администрирования кластера этой MPP-СУБД, сегодня мы рассмотрим некоторые из них. Читайте далее про особенности шифрования в Greenplum и лучшие практики обеспечения информационной безопасности и защиты в этой системе хранения и аналитики больших данных.

Администраторы и суперпользователи Greenplum

Для надежной защиты данных, хранящихся в MPP-СУБД Greenplum, и обеспечения информационной безопасности кластера рекомендуется применять следующие лучшие практики [1]:

  • Разрешить доступ к системному пользователю gpadmin только главному администратору для выполнения отдельных задач обслуживания системы, например, обновление или расширение.
  • Ограничить количество пользователей с атрибутом роли SUPERUSER, предоставив их только системным администраторам. Суперпользователи обходят все проверки прав доступа в базе данных и очереди ресурсов.
  • Назначить отдельную роль базы данных Greenplum каждому пользователю, приложению или службе, выполняющим вход в систему.
  • Использовать группы для управления правами доступа.
  • Защитить пароль root.
  • Обеспечить соблюдение политики надежных паролей для операционной системы.
  • Защитить важные файлы операционной системы, поверх которой установлена СУБД Greenplum.

Пользователь gpadmin является суперпользователем Greenplum по умолчанию и владельцем файловой системы СУБД. Эта учетная запись администратора является обязательной и обладает максимальными правами: пользователь gpadmin может обойти все функции безопасности, читать, изменять или удалять любые данные, включая данные системного каталога и права доступа к базе данных. Поэтому следует защитить пользователя gpadmin, разрешив доступ к нему ограниченному кругу системных администраторов и только в исключительных случаях. Простые пользователи базы данных не должны входить в систему как gpadmin, а ETL-процессы или другие рабочие нагрузки не должны запускаться от имени gpadmin. Рекомендуется назначить отдельную роль каждому пользователю, который входит в систему, чтобы обеспечить детальное логгирование и аудит выполненных действий. Аналогично следует создать отдельную роль для каждого приложения или веб-службы, которые входят в Greenplum [2].

Шифрование данных в 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 ‘ ‘) ;

Подробнее освоить практику администрирования и эксплуатации этой MPP-СУБД для эффективного хранения и аналитики больших данных вам поможет авторский курс «Greenplum для инженеров данных» в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве.

Источники

  1. https://gpdb.docs.pivotal.io/6-16/best_practices/summary.html
  2. https://gpdb.docs.pivotal.io/6-16/best_practices/security.html
  3. https://gpdb.docs.pivotal.io/6-16/best_practices/encryption.html