Безопасность
Tarantool разрешает два типа подключений:
- With console.listen() function from
console
module, you can set up a port which can be used to open an administrative console to the server. This is for administrators to connect to a running instance and make requests.tt
invokesconsole.listen()
to create a control socket for each started instance. - Используя параметр box.cfg{listen=…} из модуля
box
, можно настроить бинарный порт для соединений, которые читают и пишут в базу данных или вызывают хранимые процедуры.
Если вы подключены к административной консоли:
- Клиент-серверный протокол – это простой текст.
- Пароль не требуется.
- Пользователь автоматически получает права администратора.
- Каждая команда напрямую обрабатывается встроенным интерпретатором Lua.
Поэтому порты для административной консоли следует настраивать очень осторожно. Если это TCP-порт, он должен быть открыть только для определенного IP-адреса. В идеале вместо TCP-порта лучше настроить доменный Unix-сокет, который требует наличие прав доступа к серверной машине. Тогда типичная настройка порта для административной консоли будет выглядеть следующим образом:
console.listen('/var/lib/tarantool/socket_name.sock')
а типичный URI для соединения будет таким:
/var/lib/tarantool/socket_name.sock
if the listener has the privilege to write on /var/lib/tarantool
and the
connector has the privilege to read on /var/lib/tarantool
. Alternatively,
to connect to an admin console of an instance started with tt
, use
tt connect.
Выяснить, является ли некоторый TCP-порт портом для административной консоли, можно с помощью telnet
. Например:
$ telnet 0 3303
Trying 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“.
- Для смены пользователя необходимо пройти аутентификацию.
For ease of use, tt connect
command automatically detects the type
of connection during handshake and uses EVAL
binary protocol command when it’s necessary to execute Lua commands over a binary
connection. To execute EVAL, the authenticated user must have global «EXECUTE»
privilege.
Поэтому при невозможности подключиться к машине по ssh
системный администратор может получить удаленный доступ к экземпляру, создав пользователя Tarantool с глобальными «EXECUTE»-правами и непустым паролем.