Безопасность
Tarantool разрешает два типа подключений:
- Используя функцию console.listen() из модуля
console
, можно настроить порт для подключения к серверной административной консоли. Этот вариант для администраторов, которым необходимо подключиться к работающему экземпляру и послать некоторые запросы.tarantoolctl
вызываетconsole.listen()
, чтобы создать управляющий сокет для каждого запущенного экземпляра. - Используя параметр box.cfg{listen=…} из модуля
box
, можно настроить бинарный порт для соединений, которые читают и пишут в базу данных или вызывают хранимые процедуры.
Если вы подключены к административной консоли:
- Клиент-серверный протокол – это простой текст.
- Пароль не требуется.
- Пользователь автоматически получает права администратора.
- Каждая команда напрямую обрабатывается встроенным интерпретатором 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
. Еще один способ подключиться к административной консоли экземпляра, запущенного с помощью tarantoolctl
, – использовать tarantoolctl enter.
Выяснить, является ли некоторый TCP-порт портом для административной консоли, можно с помощью telnet
. Например:
$ telnet 0 3303
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
Tarantool 1.10.0 (Lua console)
type 'help' for interactive help
В этом примере в ответе от сервера нет слова «binary» и есть слова «Lua console». Это значит, что мы успешно подключились к порту для административной консоли и можем вводить администраторские запросы на этом терминале.
Если вы подключены к бинарному порту:
- Клиент-серверный протокол – бинарный.
- Автоматически выбирается пользователь „guest“.
- Для смены пользователя необходимо пройти аутентификацию.
Для удобства использования команда tarantoolctl connect
автоматически определяет тип подключения при установке соединения и использует команду бинарного протокола EVAL для выполнения Lua-команд по бинарному подключению. Чтобы выполнить команду EVAL, аутентифицированный пользователь должен иметь глобальные «EXECUTE»-права.
Поэтому при невозможности подключиться к машине по ssh
системный администратор может получить удаленный доступ к экземпляру, создав пользователя Tarantool с глобальными «EXECUTE»-правами и непустым паролем.