Пользователи в Tarantool DB
Пользователь – это человек или сервис, взаимодействующий с экземпляром Tarantool DB. Для корректной работы каждому пользователю назначается определенный набор прав доступа — напрямую или с помощью системных ролей (именованных наборов прав). Такой набор прав позволяет управлять доступом к объектам Tarantool DB – например спейсам, функциям или базе данных целиком.
В этом разделе описаны существующие виды пользователей в Tarantool DB, а также типы назначаемых им ролей:
- пользователи Tarantool DB и их роли, которые могут быть назначены человеку или внешним сервисам;
- служебные пользователи, необходимые для корректной работы Tarantool DB.
Пример создания пользователей в Tarantool DB описан в разделе Пример конфигурации.
Пользователи Tarantool DB – это учетные записи для управления кластером Tarantool DB. Для работы с кластером необходимы пользователи с ролями пользователя Администратор БД и Пользователь БД. Дополнительно может использоваться Пользователь словарей.
В этом разделе описаны пользователи Tarantool DB и приведены примеры операций, которые они могут выполнять:
- Администратор БД – создание пользователей БД и сущностей для работы с данными, назначение прав;
- Пользователь БД – доступ к данным кластера;
- Пользователь словарей – работа с модулем словарей (dictionary) через API или напрямую.
Пример с настройкой конфигурации для таких пользователей описан в разделе Пример конфигурации.
Администратор БД (пользователь admin) предоставляет клиенту полный доступ ко всем функциям кластера, включая
управление ролями пользователей, настройку параметров и репликацию.
Администратор БД создает пользователей БД и сущности для работы с данными, назначает права пользователям БД для работы с БД,
а также может создавать другие роли, управлять состоянием кластера и настраивать взаимодействие с другими компонентами.
Примеры поддерживаемых операций на управление пользователями (на примере пользователя db_user):
Операция | Пример команды | Описание |
|---|---|---|
Создание пользователя и пароля |
| Создает нового пользователя с указанным паролем |
Изменение пароля |
| Задает новый пароль пользователю |
Назначение прав |
| Дает права на чтение и запись в указанный спейс |
Отключение прав |
| Запрещает запись данных определенному пользователю |
Удаление пользователя |
| Удаляет пользователя из системы |
Примеры поддерживаемых операций на работу с данными:
Операция | Пример команды |
|---|---|
Создание спейса |
|
Удаление спейса |
|
Создание первичного индекса |
|
Создание вторичного индекса |
|
Задание формата данных для спейса |
|
Пользователь БД выполняет операции чтения, записи, обновления и удаления данных в указанных спейсах в рамках прав, предоставленных администратором БД (admin).
Таких пользователей может быть несколько.
В примере ниже пользователь имеет название db_user.
Примеры поддерживаемых операций на работу с данными:
Операция | Пример команды |
|---|---|
Чтение спейса целиком |
|
Чтение кортежа по ключу |
|
Вставка или замена кортежа |
|
Обновление кортежа |
|
Удаление кортежа по ключу |
|
Пользователь словарей выполняет операции чтения, записи, обновления и удаления данных в словарях двумя способами:
- через API модуля
dictionary; - напрямую через спейс
dictionary_data.
Для корректной работы со словарями требуется назначить такому пользователю в конфигурации встроенную системную роль dictionary_api_executor.
Таких пользователей может быть несколько.
Узнать больше: Начало работы с модулем dictionary.
В примере ниже пользователь имеет название dictionary_user.
Примеры поддерживаемых операций через API модуля dictionary:
Операция | Пример команды |
|---|---|
Добавление нового элемента в словарь |
|
Получение элемента словаря |
|
Удаление элемента из словаря |
|
Получение всех данных словаря |
|
Примеры поддерживаемых операций, которые выполняются напрямую через спейс dictionary_data:
Операция | Пример команды |
|---|---|
Добавление нового элемента в словарь |
|
Получение элемента словаря |
|
Удаление элемента из словаря |
|
Вставка или замена элемента словаря |
|
Импорт данных словарей через tt CLI |
|
Экспорт данных словарей через tt CLI |
|
Служебные пользователи – это специальные учетные записи, предназначенные для выполнения системных задач. В Tarantool DB два служебных пользователя:
Для корректной работы Tarantool DB необходимо создать этих пользователей в конфигурации кластера.
Эти служебные пользователи получают права через встроенные системные роли replication и sharding соответственно.
Эти роли автоматически предоставляют необходимый набор прав на системные спейсы, дополнительная настройка не требуется.
Кроме того, для корректной работы кластера нужно настроить связь между его экземплярами.
Параметры подключения задаются в секции iproto.advertise: в опциях iproto.advertise.peer.login и
iproto.advertise.sharding указываются имена служебных пользователей с ролями replication и sharding соответственно:
iproto:advertise:peer:login: replicatorsharding:login: storage
В примере пользователи называются replicator и storage соответственно, подробный пример конфигурации для таких
пользователей описан в разделе Пример конфигурации.
Пользователь используется для репликации данных между экземплярами внутри кластера Tarantool DB и проверки его состояния.
Для корректной работы репликации необходимо создать этого пользователя в конфигурации кластера и назначить ему
встроенную системную роль replication.
Роль дает минимальные права, достаточные для выполнения репликации данных.
Набор параметров и значений в конфигурации пользователя должен быть фиксированным, за исключением параметра password.
Права и действия, разрешенные для пользователя:
- репликация данных;
- выполнение операций записи данных;
- получение информации о состоянии узла.
В примере ниже пользователь имеет название replicator.
Пользователь обеспечивает работу с данными, которые шардируются между различными узлами в кластере с помощью модуля vshard.
Пользователь используется при запросах роутера к экземплярам хранилища.
Для корректной работы модуля необходимо создать этого пользователя в конфигурации кластера и назначить ему
встроенную системную роль sharding.
Набор параметров и значений в конфигурации пользователя должен быть фиксированным, за исключением параметра password.
Права и действия, разрешенные для пользователя:
- управление шардированием данных в кластере;
- выполнение операций чтения и записи для распределенных данных.
В примере ниже пользователь имеет название storage.
Пример создания пользователей в YAML-конфигурации для Tarantool DB:
credentials:users:admin:password: 'secret'roles: [super]db_user:password: 'secret'privileges:- permissions: [execute]universe: true- permissions: [ read ]spaces: [_bucket, _cooler, _ddl_sharding_key]- permissions: [ read, write ]spaces: [bands]dictionary_user:password: 'dictionary_password'roles: [dictionary_api_executor]privileges:- permissions: [ read, write ]spaces: [ dictionary_data ]replicator:password: 'replication_password'roles: [replication]storage:password: 'sharding_password'roles: [sharding]iproto:advertise:peer:login: replicatorsharding:login: storage
Пользователи:
admin: администратор БД, имеет полный доступ ко всем функциям кластера;db_user: пользователь БД;dictionary_user: пользователь для работы со словарями;replicator: пользователь для репликации между узлами кластера, также указывается в секцииiproto.advertise.peer.login;storage: пользователь для работы с модулем шардирования, также указывается в секцииiproto.advertise.sharding.login.
Параметры пользователей:
password: пароль пользователя;roles: роли, назначенные пользователю. Роль определяет разрешенные действия для пользователя в кластере;privileges: операции, разрешенные пользователю, например чтение и запись данных в указанный спейс, выполнение кода или функции;permissions: разрешения, которые могут быть предоставлены пользователю (например,read,write,execute,create,alter,drop);space: спейс, для которого предоставляются права;lua_call: глобальные пользовательские Lua-функции, которые может вызвать указанный пользователь;
iproto.advertise.peer.login: настройка указывает, что другие экземпляры кластера TDB должны подключаться к адресу, определенному в опцииiproto.listen, с помощью пользователяreplicator;iproto.advertise.sharding.loginнастройка указывает, что роутер должен подключаться к экземплярам хранилища на адрес, определенный вiproto.listen, с помощью пользователяstorage.