Безопасность
В Tarantool поддерживаются два типа подключений:
-
С помощью функции console.listen() из модуля
consoleможно настроить порт, используемый для открытия административной консоли сервера. Он предназначен для подключения администраторов к работающему экземпляру и выполнения запросов.ttвызываетconsole.listen()для создания управляющего сокета для каждого запущенного экземпляра. -
С помощью параметра box.cfg{listen=...} из модуля
boxможно настроить бинарный порт для подключений, которые выполняют чтение и запись в базу данных или вызывают хранимые процедуры.
При подключении к административной консоли:
- Клиент-серверный протокол – простой текстовый.
- Пароль не требуется.
- Пользователь автоматически определяется как
admin. - Каждая команда передается напрямую во встроенный интерпретатор Lua.
Поэтому порты для административной консоли следует настраивать с осторожностью. Если это TCP-порт, он должен быть открыт только для определенного IP-адреса. Вместо TCP-порта предпочтительнее настроить доменный Unix-сокет, который требует наличия прав доступа к серверной машине. Тогда типичная настройка порта для административной консоли будет выглядеть следующим образом:
console.listen('/var/lib/tarantool/socket_name.sock')
А типичный URI для соединения будет таким:
/var/lib/tarantool/socket_name.sock
При этом серверный процесс имеет права на запись в /var/lib/tarantool, а клиентский – права на чтение /var/lib/tarantool.
В качестве альтернативы для подключения к административной консоли экземпляра, запущенного с помощью
утилиты tt, используйте команду tt connect.
Выяснить, является ли некоторый TCP-порт портом для административной консоли, можно с помощью telnet. Например:
$ telnet 0 3303Trying 0.0.0.0...Connected to 0.Escape character is '^]'.Tarantool 2.1.0 (Lua console)type 'help' for interactive help
В этом примере в ответе сервера нет слова "binary", но есть "Lua console". Это значит, что подключение к порту административной консоли выполнено успешно и можно вводить команды на этом терминале.
Если вы подключены к бинарному порту:
- Клиент-серверный протокол – бинарный.
- Пользователь автоматически определяется как
guest. - Для смены пользователя необходимо пройти аутентификацию.
Для удобства использования команда tt connect автоматически определяет тип подключения во время установления соединения и
использует команду бинарного протокола EVAL,
когда необходимо выполнить Lua-команды через бинарное подключение. Для выполнения EVAL аутентифицированный пользователь должен
иметь глобальную привилегию execute.
Поэтому если подключение по ssh невозможно, системный администратор может получить удаленный доступ к экземпляру, создав в
Tarantool пользователя с глобальными привилегиями execute и непустым паролем.