Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Аудит безопасности

Этот документ поможет провести аудит безопасности кластера Tarantool. Здесь описаны различные аспекты безопасности, их обоснование и способы проверки. Подробнее о настройке Tarantool Enterprise Edition и ее инфраструктуры для каждого аспекта см. в инструкциях по повышению безопасности.

Шифрование внешнего трафика iproto

Tarantool использует бинарный протокол iproto для репликации данных между экземплярами, а также в библиотеках коннекторов.

Начиная с версии 2.10.0 в Enterprise Edition встроена поддержка SSL для шифрования клиент-серверного взаимодействия по бинарным соединениям. Подробнее о включении SSL-шифрования см. в разделе Защита подключений с помощью SSL этого документа.

Если встроенное шифрование не включено, для защиты обмена данными между дата-центрами рекомендуется использовать VPN.

Закрытые порты iproto

Если в кластере Tarantool не используется iproto для внешних запросов, подключение к портам iproto должно разрешаться только между экземплярами Tarantool.

Подробнее о настройке портов для iproto см. в разделе advertise_uri в документации Cartridge.

Механизм завершения HTTPS-соединения

Экземпляр Tarantool может принимать HTTP-соединения от внешних служб или предоставлять доступ к веб-интерфейсу администратора. Все такие соединения должны проходить через веб-сервер с HTTPS, работающий на том же хосте, например, nginx. Это требование действует как для виртуальных, так и для физических хостов. Прохождение HTTP-трафика через несколько отдельных хостов с завершением HTTPS недостаточно безопасно.

Закрытые HTTP-порты

Tarantool принимает HTTP-подключения на определенном порту. Этот порт должен быть доступен только на том же хосте, чтобы к нему мог подключаться nginx.

Убедитесь, что настроенный HTTP-порт закрыт, а HTTPS-порт (по умолчанию 443) открыт.

Ограниченный доступ к административной консоли

С помощью модуля console можно подключиться к рабочему экземпляру и запускать пользовательский код Lua. Это полезная возможность для разработчиков и администраторов. В следующих примерах показано, как открыть соединение по TCP-порту и на UNIX-сокете.

console.listen(<port number>)console.listen('/var/lib/tarantool/socket_name.sock')

Открывать административную консоль через TCP-порт всегда небезопасно. Убедитесь, что в коде нет вызовов функции console.listen(<port_number>).

При подключении через сокет требуется право write для директории /var/lib/tarantool. Убедитесь, что оно выдано только пользователю tarantool.

Ограничения для пользователя guest

Подключение к экземпляру с помощью команд tt connect или tarantoolctl connect без учетных данных пользователя (под пользователем guest) должно быть отключено.

Есть два способа проверить эту уязвимость:

  • Проверьте, что в исходном коде пользователю guest не предоставляется доступ. Соответствующий код может выглядеть так:

    box.schema.user.grant('guest',    'read,write',    'universe',    nil, { if_not_exists = true })

    Помимо соответствующего фрагмента кода, ищите все вхождения значения 'universe'.

  • Попробуйте подключиться с помощью команды tt connect к каждому узлу Tarantool. Подробнее см. в документации по LINK_NOT_DEFINED(../../../admin/access_control).

Авторизация в веб-интерфейсе

При использовании веб-интерфейса требуется вход по имени пользователя и паролю.

Запуск под пользователем tarantool

Все экземпляры Tarantool должны работать под пользователем tarantool.

Ограничение доступа для пользователя tarantool

Пользователь tarantool должен быть непривилегированным пользователем без права sudo. Кроме того, у него не должно быть пароля, чтобы не допустить входа через SSH или su.

Хранение двух и более снимков данных

Для надежности резервного копирования в экземпляре Tarantool должны храниться минимум два последних снимка данных. Проверьте каждый экземпляр.

Значение параметра snapshot_count определяет количество хранимых снимков данных. Значения конфигурации задаются в первую очередь в конфигурационных файлах, но могут быть переопределены через переменные окружения и аргументы командной строки. Поэтому рекомендуется проверить как значения в конфигурационных файлах, так и фактические значения с помощью консоли:

tarantool> box.cfg.checkpoint_count---- 2

Включен журнал упреждающей записи (WAL)

Tarantool фиксирует все входящие данные в журнале упреждающей записи (WAL). WAL должен быть включен, чтобы в случае перезапуска экземпляра эти данные можно было восстановить.

Безопасные значения параметра конфигурации wal.modewrite и fsync:

wal:  dir: 'var/lib/{{ instance_name }}/wals'  mode: 'write'

Исключение — когда экземпляр обрабатывает данные, которые можно свободно отбросить – например, при использовании Tarantool для кэширования. В этом случае WAL можно отключить для снижения нагрузки на ввод-вывод.

Уровень ведения журнала: INFO или выше

Уровень ведения журнала должен быть 5 (INFO), 6 (VERBOSE) или 7 (DEBUG). В этом случае журналы приложения будут содержать достаточно информации для расследования инцидента.

tarantool> box.cfg.log_level---- 5

Полный список существующих уровней см. в справке по параметру log_level.

Ведение журнала с помощью journald

В Tarantool для ведения журнала следует использовать journald.