Инструкции по повышению безопасности
В этом руководстве описано, как повысить безопасность кластера Tarantool Enterprise Edition с помощью встроенных средств, а также приведены общие рекомендации по усилению защиты. Если необходимо провести аудит безопасности кластера Tarantool Enterprise ознакомьтесь с соответствующим LINK_NOT_DEFINED(../audit).
В Tarantool Enterprise Edition не предусмотрен отдельный API для управления безопасностью. Все необходимые настройки выполняются через административную консоль или код инициализации.
В Tarantool Enterprise есть следующие встроенные средства безопасности:
Tarantool Enterprise поддерживает аутентификацию на основе паролей и допускает два типа соединений:
- Через административную консоль.
- Через бинарный порт для операций чтения и записи, а также вызова процедур. Подробнее об аутентификации и типах соединений см. в разделе Безопасность в Руководстве администратора.
Кроме того, Tarantool предоставляет следующую функциональность:
- Сессии – состояния, связывающие соединения с пользователями и предоставляющие им доступ к API Tarantool после аутентификации.
- Триггеры аутентификации, выполняющие действия при наступлении событий аутентификации.
- Сторонние (внешние) протоколы и службы аутентификации, такие как LDAP или Active Directory – поддерживаются в веб-интерфейсе, но недоступны на уровне бинарного протокола.
Для администраторов Tarantool Enterprise предоставляет средства для предотвращения несанкционированного доступа к базе данных и к определенным функциям.
Tarantool различает:
- Различных пользователей (простых пользователей и администраторов);
- Привилегии, связанные с пользователями;
- Роли (контейнеры привилегий), назначаемые пользователям.
Для хранения пользователей и привилегий используются следующие системные спейсы:
- Спейс
_userдля хранения имен пользователей и хэшированных паролей для аутентификации. - Спейс
_privдля хранения привилегий для управления доступом.
Подробнее см. в разделе Пользователи.
Пользователи, создающие объекты (спейсы, индексы, пользователи, роли, последовательности и функции) в базе данных, становятся их владельцами и автоматически получают привилегии на созданные объекты. Подробнее см. в разделе Привилегии.
В Tarantool Enterprise есть встроенный журнал аудита, в котором записываются такие события, как:
- Успешные и неуспешные попытки аутентификации;
- Закрытия соединений;
- Создание, удаление, включение и отключение пользователей;
- Изменения паролей, привилегий и ролей;
- Отказы в доступе к объектам базы данных.
В журнал аудита записываются:
- Метки времени;
- Имена пользователей, выполнивших действия;
- Типы событий (например,
user_create,user_enable,disconnect); - Описания.
Для журнала аудита можно настроить следующие параметры:
- audit_log.to – включение ведения журнала аудита и определение места записи (файл, канал или syslog). Параметр аналогичен параметру log.
- audit_log.nonblock – поведение при записи в журнал, если система не готова к записи. Параметр аналогичен параметру log_nonblock.
Для получения дополнительной информации о журналировании см. следующие разделы:
- Раздел Журналирование;
- Раздел log в справочнике по конфигурации;
- Раздел Модуль аудита Tarantool.
Права доступа к файлам журнала можно настроить, как для любого другого объекта файловой системы Unix – через chmod.
Ниже описаны рекомендации, которые помогут вам повысить безопасность кластера.
Начиная с версии 2.10.0 в Tarantool Enterprise Edition встроена поддержка SSL для шифрования клиент-серверного взаимодействия по бинарным соединениям, то есть между экземплярами Tarantool в кластере. Подробнее о включении SSL-шифрования см. в разделе Защита подключений с помощью SSL.
Если для определенных соединений встроенное шифрование не настроено, рассмотрите следующие рекомендации по безопасности:
- Настройка туннелирования соединений;
- Шифрование самих данных, хранящихся в базе данных.
Подробнее о шифровании данных см. в справочнике по модулю crypto.
Модуль HTTP-сервера, предоставляемый системой пакетов (rocks), не поддерживает протокол HTTPS. Для настройки защищенного соединения с клиентом (например, REST-сервисом) рекомендуется разместить экземпляр Tarantool (роутер, если это кластер экземпляров) за сервером Nginx и настроить для него SSL-сертификат.
Чтобы исключить перехват данных извне, запустите Nginx на том же физическом сервере, что и экземпляр, и настройте их взаимодействие через Unix-сокет. Подробнее см. в справочнике по модулю socket.
Для защиты кластера от нежелательной сетевой активности извне настройте брандмауэр на каждом сервере так, чтобы разрешить трафик только на портах, указанных в сетевых требованиях.
Если вы используете статические IP-адреса, повторно внесите их в белый список на каждом сервере, поскольку кластер работает на принципах полносвязной (ячеистой) топологии (full mesh topology). Рекомендуется внести в черный список все остальные адреса на всех серверах, кроме роутера (работающего за сервером Nginx).
Tarantool Enterprise не предоставляет защиту от DoS-атак или DDoS-атак. Для этих целей рекомендуется использовать сторонние программы.
В Tarantool Enterprise Edition не ведутся контрольные суммы и не предоставляются средства контроля целостности данных. Тем не менее, данные сохраняются с помощью журнала упреждающей записи (write-ahead log, WAL), регулярного создания снимков всего набора данных на диск и проверки формата данных при каждом чтении данных с диска. Подробнее см. в разделе Сохранение данных.