Ролевая модель в TCF¶
В TCF роли нужны для управления доступом и обеспечения безопасности данных, передаваемых и обрабатываемых между кластерами. Для безопасного взаимодействия с данными, а также для управления репликацией данных между кластерами, используется несколько типов ролей с различными правами. В этом разделе описано, какие роли существуют в TCF, какие права у этих ролей и как их настроить.
Типы ролей в TCF¶
Роль admin¶
Роль admin
предоставляет пользователю полный доступ ко всем функциям кластера, включая управление ролями пользователей, настройку параметров и репликацию.
Он может создавать другие роли, управлять состоянием кластера и настраивать взаимодействие с другими компонентами.
Примечание
Набор привилегий и область действия роли admin
являются фиксированными и не подлежат изменению. Роль admin
всегда обладает полным доступом
ко всем функциям и объектам кластера, независимо от конфигурации других ролей или параметров доступа.
Роль dml_users¶
Роль dml_users
предоставляет любые права, заданные заказчиком. Может быть несколько пользователей с такой ролью.
Примечание
Когда кластер переводится в пассивное состояние, доступ к нему должен быть ограничен для всех пользователей, имеющих права на изменение данных. Например, пользователи блокируются, чтобы на пассивном кластере не происходило изменений данных.
Служебная роль replication_user¶
Роль для репликации данных между кластерами в TCF. На стороне Gateway требует прав на чтение (roles: [replication]
),
на стороне Destination — прав на выполнение кода и запись данных. Обычно назначаются права super
(без прав на управление пользователями) для упрощения настройки и предотвращения ошибок доступа.
Внимание
Роль replication_user
является служебной, она заблокирована для изменений. Пользователь не может вносить изменения в её настройки.
Служебная роль peer¶
Роль peer
используется для репликации внутри кластера.
Эта роль используется для репликации данных, и в контексте репликации она имеет минимальные права, достаточные только для выполнения необходимых операций.
Внимание
Роль peer
является служебной, она заблокирована для изменений. Пользователь не может вносить изменения в её настройки.
Служебная роль storage¶
Роль для работы с шардированием и распределением данных в кластере с использованием vshard
. Эта роль используется для управления данными в распределенной системе,
обеспечивая работу с данными, которые шардируются между различными узлами в кластере. Роль storage
необходима для правильного функционирования системы шардирования,
и такие роли часто используются для настройки или масштабирования данных между шардированными спейсами.
Внимание
Роль storage
является служебной, она заблокирована для изменений. Пользователь не может вносить изменения в её настройки.
Таблица сравнения пользователей и ролей¶
Подробная информация об операциях, которые могут выполнять пользователи с ролями admin
и dml_users
, приведена в разделе Описание операций пользователей с ролями admin и dml_users.
Роль |
Описание |
Права и действия |
---|---|---|
|
Роль с полными правами на управление кластером и его конфигурацией |
- управление ролями пользователей |
|
Роль для работы с данными (чтение, запись, изменение) в кластере. Создаются заказчиком. Может быть несколько таких пользователей |
- чтение данных |
Служебная роль |
Роль для репликации данных между активным и пассивным кластерами. Используется репликатором |
- права |
Служебная роль |
Роль используется для репликации внутри кластера |
- репликация данных |
Служебная роль |
Роль используется для работы с модулем шардирования (vshard) |
- управление шардированием данных |
Конфигурация ролей пользователя¶
Пример создания пользователей TCF в YAML-конфигурации для кластера Tarantool 3.х EE:
credentials:
users:
admin:
password: 'secret'
roles: [super]
privileges:
- permissions: ['read', 'write', 'execute', 'create', 'alter', 'drop']
universe: true
dml_user:
password: 'dml_password'
roles: [dml]
privileges:
- permissions: ['read', 'write', 'create', 'alter']
space: 'space_name'
- permissions: ['execute']
object_type: 'function'
replication_user:
password: 'replication_password'
roles: [replication]
privileges:
- permissions: ['read', 'write', 'execute']
universe: true
peer:
password: 'peering_password'
roles: [replication]
privileges:
- permissions: ['execute']
object_type: 'function'
storage:
password: 'secret'
roles: [sharding]
Здесь:
password
: пароль для пользователя, необходимый для аутентификации;roles
: роли, назначенные пользователю. Роль определяет разрешенные действия для пользователя в кластере;privileges
: операции, разрешенные пользователю. Может включать различные виды разрешений, такие как чтение, запись, выполнение и другие;permissions
: разрешения, которые могут быть предоставлены пользователю (например,read
,write
,execute
,create
,alter
,drop
);universe
: если задано значениеtrue
, разрешения действуют на все объекты в кластере;space
: спейс данных, для которого предоставляются права;object_type
: тип объекта, для которого назначены права. В примере этоfunction
.