TDB Documentation portal logo
Помощь
Обновлена 30 июля 2026 г. в 16:49

Минимальный набор разрешений в типовых сценариях

В этом разделе приведён список минимально необходимых разрешений для следующих типовых сценариев работы с Tarantool DB:

Полный список системных спейсов и описание того, зачем нужен доступ к ним, приведены в разделе Системные спейсы.

Чтение и запись данных через модуль CRUD

Модули CRUD и vshard выполняют запросы на стороне хранилища от имени того же пользователя, который инициировал запрос на роутере. Это означает, что для корректной работы CRUD-операций пользователю, от имени которого выполняются обращения к кластеру через роутер, необходимо предоставить минимальный набор прав на каждом экземпляре хранилища (storage).

Минимальный набор прав для выполнения чтения и записи данных через модуль crud выглядит так:

box.schema.user.grant('db_user', 'execute', 'universe')box.schema.user.grant('db_user', 'read', 'space', '_bucket')box.schema.user.grant('db_user', 'read', 'space', '_ddl_sharding_key')

В примере для пользователя db_user выданы следующие разрешения:

  • execute на universe — выполнение служебных хранимых процедур на узлах хранилища. Модули CRUD и vshard вызывают внутренние функции на стороне хранилища, и без права execute эти вызовы будут отклонены;
  • read на _bucket — чтение карты сегментов для маршрутизации запросов и проверки принадлежности сегмента;
  • read на _ddl_sharding_key — чтение метаданных шардирования для маршрутизации.

В дополнение к правам на чтение системных спейсов, для чтения и записи данных пользователю требуются права на чтение и запись данных в конкретные пользовательские спейсы, в примере это спейс bands:

box.schema.user.grant('db_user', 'read,write', 'space', 'bands')

Кроме того, если в кластере используется архивация данных через модуль cooler, дополнительно требуются права на чтение системного спейса _cooler:

box.schema.user.grant('db_user', 'read', 'space', '_cooler')

В YAML-конфигурации кластера права для пользователя можно задать в секции credentials.users.<user_name>:

credentials: users:   db_user:     password: 'secret'     privileges:       - permissions: [execute]         universe: true       - permissions: [read]         spaces: [_bucket, _ddl_sharding_key, _cooler]       - permissions: [read, write]         spaces: [bands]

Выполнение ребалансировки

Ребалансировка сегментов выполняется модулем шардирования vshard и подразумевает миграцию сегментов — перенос сегментов с более нагруженных шардов на менее нагруженные. Процесс ребалансировки запускает не пользователь Tarantool DB, а сам кластер — через служебного пользователя для работы шардирования. Такой пользователь указывается в конфигурации кластера и имеет встроенную системную роль sharding, которая предоставляет необходимый набор прав на системные спейсы. Дополнительная настройка при этом не требуется.

Узнать больше о механизме шардирования и ребалансировке, а также пользователе с ролью sharding можно в разделах Шардирование и Пользователь для работы шардирования соответственно.

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

credentials:  users:  #...    storage:      password: 'sharding_password'      roles: [sharding]

Здесь:

  • storage: пользователь для работы с модулем шардирования. Может иметь любое имя, в примере используется storage;
  • password: пароль пользователя;
  • roles: sharding: системная роль, назначенная пользователю. Такая роль определяет разрешенные действия для пользователя в кластере.

Указать, какого пользователя использовать для выполнения ребалансировки, нужно в YAML-конфигурации в секции iproto.advertise.sharding.login:

iproto:  advertise:    sharding:      login: storage