Учетные данные
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: filefile: secrets/dbadmin_password.txtrstrip: truesampleuser_password:from: filefile: secrets/sampleuser_password.txtrstrip: true
- В этом примере показано, как загрузить пароли из переменных окружения:
config:context:dbadmin_password:from: envenv: DBADMIN_PASSWORDsampleuser_password:from: envenv: SAMPLEUSER_PASSWORD
Эти переменные окружения должны быть заданы перед запуском экземпляров.
После настройки способа загрузки паролей значения паролей можно задать с
помощью параметра credentials.users.[username].password следующим образом:
credentials:users:dbadmin:password: '{{ context.dbadmin_password }}'sampleuser:password: '{{ context.sampleuser_password }}'
Полные примеры доступны по ссылкам: