TDB Documentation portal logo
Помощь
Обновлена 18 сентября 2026 г. в 14:35

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

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

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

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

Начиная с версии crud 1.6.0 (crud-ee 1.7.3) операции с данными выполняются с правами пользователя, от имени которого инициирован запрос на роутере.

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

Для корректной работы методов CRUD пользователю, от имени которого выполняются обращения к кластеру через роутер, необходимо предоставить минимальный набор прав на каждом экземпляре хранилища.

Начиная с версии crud 1.6.0, выдайте пользователю необходимые права на пользовательские спейсы и, если применимо, на спейсы метаданных шардирования DDL.

Начиная с версии crud 1.7.0, также выдайте пользователю право read на спейс _bucket.

Права на стороне роутера

Выдавать прикладному пользователю право execute на universe не рекомендуется, так как оно позволяет выполнять произвольный Lua-код и существенно расширяет полномочия пользователя. Вместо этого следует выдавать права на выполнение (execute) точечно — только на необходимые методы crud.*, которые вызываются через lua_call.

На роутере зарегистрируйте только необходимые функции CRUD и выдайте прикладному пользователю право на их вызов:

local crud_functions = {    'crud.select',    'crud.get',    'crud.insert',    'crud.replace',    'crud.update',    'crud.upsert',    'crud.delete',}for _, name in ipairs(crud_functions) do    box.schema.func.create(name, {        setuid = false,        if_not_exists = true,    })    box.schema.user.grant(        'db_user', 'execute', 'function', name,        {if_not_exists = true}    )end

Права на стороне хранилища

Минимальный набор прав для экземпляра хранилища зависит от используемой функциональности и версии CRUD. Для чтения и записи данных пользователю требуются права на чтение и запись в пользовательские спейсы, например в спейс bands:

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

Доступ к системным спейсам, связанным с маршрутизацией запросов

  • Доступ на чтение (read) к _bucket — начиная с CRUD 1.7.0, операции bucket_ref/bucket_unref на стороне хранилища требуют его для чтения карты сегментов, а также проверки состояния и принадлежности сегмента;

  • Если используются метаданные маршрутизации на основе DDL, требуется доступ на чтение (read) к системным спейсам _ddl_sharding_key и _ddl_sharding_func.

Пример:

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

Внутренние вызовы vshard/CRUD на экземпляр хранилища

В некоторых конфигурациях (в частности, на Tarantool 2.x или при ручной настройке прав) для выполнения внутренних вызовов на экземпляр хранилища может потребоваться право execute на набор служебных функций vshard.storage.*. Выдавать прикладному пользователю право execute на universe не рекомендуется.