Пользователи Tarantool | Clusters_Federation

Пользователи Tarantool

Пользователи Tarantool – это учетные записи для управления кластером Tarantool (или продуктов на его основе).

В этом разделе описаны два пользователя Tarantool:

  • пользователь admin предоставляет клиенту полный доступ ко всем функциям кластера, включая управление ролями пользователей, настройку параметров и репликацию. Он может создавать другие роли, управлять состоянием кластера и настраивать взаимодействие с другими компонентами.

    Примечание

    Набор привилегий и область действия пользователя admin являются фиксированными и не подлежат изменению. Пользователь admin всегда обладает полным доступом ко всем функциям и объектам кластера, независимо от конфигурации других пользователей или параметров доступа.

  • DML-пользователь выполняет DML-операции (чтение, запись, обновление, удаление данных). Когда кластер переводится в пассивное состояние, TCF блокирует доступ для всех DML-пользователей данного кластера. Таким образом организуется запрет изменения данных на пассивном кластере. Может быть создано несколько пользователей с такой ролью. Его создание и добавление в файл конфигурации необходимо для корректной работы TCF.

Примеры операций, которые могут выполнять пользователи admin и DML-пользователь.

Операции для пользователя admin

Управление пользователями

Операции пользователя admin на примере DML-пользователя:

Операция

Команда

Описание

Создание пользователя и пароля

box.schema.user.create('dml_user', {password = 'dml_password'})

Создает нового пользователя с заданным паролем

Изменение пароля

box.schema.user.passwd('dml_user', 'new_password')

Задает новый пароль пользователю

Назначение прав

box.schema.user.grant('dml_user', 'read,write', 'space', 'orders')

Дает права на чтение и запись в указанный спейс

Отключение прав на пассивном кластере

box.schema.user.revoke('dml_user', 'write', 'universe')

Запрещает запись на пассивном кластере

Включение прав на активном кластере

box.schema.user.grant('dml_user', 'read,write', 'space', 'orders')

Возвращает права при переключении на активный кластер

Удаление пользователя

box.schema.user.drop('dml_user')

Удаляет пользователя из системы

Основные операции администратора по организации работы с данными

Операция

Пример команды

Описание

Создание спейса

box.schema.space.create('test')

Создает новый спейс для хранения данных

Удаление спейса

box.space.test:drop()

Удаляет указанный спейс

Создание первичного индекса

box.space.test:create_index('primary')

Создает первичный индекс для упрощения доступа по ключу

Создание вторичного индекса

box.space.test:create_index('status_index', {parts = {3, 'str'}})

Добавляет индекс по полю status для ускорения выборок по статусу

Задание формата данных для спейса

box.space.test:format(...)

Задает формат данных для спейса

Операции для DML-пользователя

DML-пользователь выполняет операции чтения, записи, обновления и удаления данных в рамках прав, предоставленных администратором (admin).
При переключении кластера в пассивный режим этот пользователь теряет права на изменение данных для предотвращения некорректных записей. Таких пользователей может быть несколько.

  • Чтение данных:

    -- Чтение всех записей из спейса 'accounts'
    box.space.accounts:select{}
    
    -- Чтение записи с определённым ключом (например, по ID аккаунта)
    box.space.accounts:get{1}
    

    Пример ответа:

    {'1', 'Account #1', 'Active'}
    
  • Добавление новых данных:

    -- Вставка новой записи о банковском аккаунте
    box.space.accounts:insert{2, 'Account #2', 'Pending'}
    

    Пример ответа:

    {'2', 'Account #2', 'Pending'}
    
  • Обновление данных:

    -- Обновление статуса аккаунта
    box.space.accounts:update({2}, {{'=', 3, 'Approved'}})
    

    Пример ответа:

    {'2', 'Account #2', 'Approved'}
    
  • Удаление данных:

    -- Удаление записи по ключу (удаление аккаунта)
    box.space.accounts:delete{2}
    

    Пример ответа:

    {'2', 'Account #2', 'Approved'}
    

Операция

Команда

Описание

Чтение всех данных

box.space.accounts:select{}

Чтение всех записей из спейса accounts

Чтение по ключу

box.space.accounts:get{1}

Чтение записи по первичному ключу в спейсе accounts

Добавление данных

box.space.accounts:insert{2, 'Account #2', 'Pending'}

Добавление новой записи о банковском аккаунте

Обновление данных

box.space.accounts:update({2}, {{'=', 3, 'Approved'}})

Обновление существующей записи (например, статус аккаунта)

Удаление данных

box.space.accounts:delete{2}

Удаление записи по ключу из спейса accounts

Пример конфигурации

Пример создания пользователей в YAML-конфигурации для работы TCF:

credentials:
  users:
    admin:
      password: 'secret'
      roles: [super]
      privileges:
        - permissions: ['read', 'write', 'execute', 'create', 'alter', 'drop']
          universe: true
    dml_users:
      password: 'dml_password'
      roles: [dml]
      privileges:
        - permissions: ['read', 'write', 'create', 'alter']
          spaces: ['space_name']

Пользователи:

  • admin: администратор БД, предоставляет полный доступ ко всем функциям кластера;

  • replication_user: служебный пользователь репликации данных. На стороне Gateway требует прав на чтение (roles: [replication]), на стороне Destination — прав на выполнение кода и запись данных. Обычно назначаются права super (без прав на управление пользователями);

Параметры пользователей:

  • password: пароль пользователя, необходимый для аутентификации;

  • roles: роли, назначенные пользователю. Роль определяет разрешенные действия для пользователя в кластере;

  • privileges: операции, разрешенные пользователю. Может включать различные виды разрешений, такие как чтение, запись, выполнение и другие;

    • permissions: разрешения, которые могут быть предоставлены пользователю (например, read, write, execute, create, alter, drop);

    • universe: если задано значение true, разрешения действуют на все объекты в кластере;

    • space: спейс данных, для которого предоставляются права.

Нашли ответ на свой вопрос?
Обратная связь