Минимальный набор разрешений в типовых сценариях
В этом разделе приведён список минимально необходимых разрешений для следующих типовых сценариев работы с Tarantool DB:
Полный список системных спейсов и описание того, зачем нужен доступ к ним, приведены в разделе Системные спейсы.
Модули 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