Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Учетные данные

Tarantool обеспечивает гибкое управление доступом к различным ресурсам базы данных путем предоставления пользователям определенных привилегий. Подробнее об основных концепциях системы контроля доступа Tarantool см. в разделе authentication.

В этом разделе описано, как создавать пользователей и назначать им указанные привилегии в разделе credentials YAML-конфигурации. Например, можно определить пользователей с ролями replication и sharding для обеспечения репликации и шардирования в кластере Tarantool.

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

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

Создавать новых пользователей или настраивать учетные данные существующих можно в разделе credentials.users.

В примере ниже создается пользователь dbadmin без пароля:

credentials:  users:    dbadmin: {}

Чтобы задать пароль, используйте параметр credentials.users:

credentials:  users:    dbadmin:      password: 'T0p_Secret_P@$$w0rd'

Назначение привилегий пользователю

Чтобы назначить роль пользователю, используйте параметр credentials.users.[username].roles. В этом примере пользователю dbadmin назначаются привилегии встроенной роли super:

credentials:  users:    dbadmin:      password: 'T0p_Secret_P@$$w0rd'      roles: [ super ]

Чтобы создать новую роль, определите её в разделе credentials.roles.*. В примере ниже роль writers_space_reader получает привилегии на чтение данных из спейса writers:

roles:  writers_space_reader:    privileges:    - permissions: [ read ]      spaces: [ writers ]

Затем эту роль можно назначить пользователю с помощью параметра credentials.users.[username].roles (в примере ниже — sampleuser):

sampleuser:  password: '123456'  roles: [ writers_space_reader ]

Выдать конкретные привилегии можно напрямую с помощью параметра credentials.users.[username].privileges. В этом примере sampleuser получает привилегии на чтение и изменение данных в спейсе books:

sampleuser:  password: '123456'  roles: [ writers_space_reader ]  privileges:  - permissions: [ read, write ]    spaces: [ books ]

Полный пример доступен по ссылке: credentials.

Отзыв привилегий у пользователя

Чтобы отозвать ранее выданную привилегию, удалите её из конфигурации.

Например, ниже показано, как выдать привилегии на спейс и отозвать одну из них:

# grant privileges:

Чтобы отозвать оставшуюся привилегию на спейс, её также можно удалить, сделав permissions пустым массивом:

# empty permissions array:privileges:- permissions: [] # !! read permission revoked !!  spaces: [books]

Отозвать все привилегии можно, сделав privileges пустым массивом:

# empty privileges array:

Загрузка секретов из защищенного хранилища

В Tarantool предусмотрена возможность загрузки секретов из защищенного хранилища, например, из внешних файлов или переменных окружения. Для этого необходимо определить соответствующие параметры в разделе config.context.

В примерах ниже context.dbadmin_password и context.sampleuser_password определяют способ загрузки паролей пользователей из файлов *.txt или переменных окружения:

  • В этом примере показано, как загрузить пароли из файлов *.txt:
config:  context:    dbadmin_password:      from: file      file: secrets/dbadmin_password.txt      rstrip: true    sampleuser_password:      from: file      file: secrets/sampleuser_password.txt      rstrip: true
  • В этом примере показано, как загрузить пароли из переменных окружения:
config:  context:    dbadmin_password:      from: env      env: DBADMIN_PASSWORD    sampleuser_password:      from: env      env: SAMPLEUSER_PASSWORD

Эти переменные окружения должны быть заданы перед запуском экземпляров.

После настройки способа загрузки паролей значения паролей можно задать с помощью параметра credentials.users.[username].password следующим образом:

credentials:  users:    dbadmin:      password: '{{ context.dbadmin_password }}'    sampleuser:      password: '{{ context.sampleuser_password }}'

Полные примеры доступны по ссылкам: