Ролевая модель в DataGrid#
Ролевая модель — это набор разрешений и прав, которые предоставляют пользователям доступ к управлению и настройке DataGrid. Обычно ролевая модель соответствует действиям и полномочиям определенной должности, что позволяет создать и настроить конкретную роль, а затем предоставить эту роль всем сотрудникам с такой должностью. В плагине безопасности все операции, связанные с предоставлением и изъятием прав пользователей, выполняются через роли. Можно создавать любые роли с любым набором разрешений, которые будут учитывать специфику рабочего процесса команды.
Списки разрешений для ролей#
Ролевые модели с необходимыми разрешениями можно создавать самостоятельно, не ограничиваясь описанными выше. Каждая роль предусматривает список разрешений.
Список разрешений на работу с кешами:
CACHE_CREATE— создание кеша;CACHE_DESTROY— удаление кеша;CACHE_READ— чтение значений из кеша;CACHE_PUT— добавление/изменение значения в кеше;CACHE_REMOVE— удаление значения из кеша.
Примечание
При добавлении разрешений на работу с кешами обязательно укажите имя каждого кеша с разрешениями для него. Чтобы разрешение распространялось на все кеши, укажите * вместо имени кеша.
Список разрешений на выполнение задач:
TASK_EXECUTE— запуск задачи на выполнение;TASK_CANCEL— отмена выполнения задачи.
Примечание
При добавлении разрешений на выполнение задач обязательно укажите имя каждой задачи с разрешениями для нее. Чтобы разрешение распространялось на все задачи, укажите * вместо имени задачи.
Список разрешений на запуск сервисов:
SERVICE_DEPLOY— развертывание сервиса;SERVICE_CANCEL— отмена развертывания сервиса;SERVICE_INVOKE— вызов сервиса.
Примечание
При добавлении разрешений на запуск сервисов обязательно укажите имя каждого сервиса с разрешениями для него. Чтобы разрешение распространялось на все сервисы, укажите * вместо имени задачи.
Список системных разрешений:
ADMIN_CLUSTER_NODE_START— запуск новых узлов в кластере;ADMIN_CLUSTER_NODE_STOP— остановка и перезапуск узлов в кластере;ADMIN_KILL— завершение системных процессов;ADMIN_OPS— выполнение команд для администрирования DataGrid (не включает в себя разрешения с префиксомADMIN_, приведенные ниже);ADMIN_READ_DISTRIBUTED_PROPERTY— просмотр property, доступных для изменения черезcontrol.shи их текущее значение;ADMIN_SNAPSHOT— работа со снепшотами (CREATE,CANCEL,CHECK). Должно быть у серверных узлов;ADMIN_METADATA_OPS— выполнение операций с метаданными (REMOVE,UPDATE);ADMIN_WRITE_DISTRIBUTED_PROPERTY— редактирование property, доступных для изменения через утилитуcontrol;ADMIN_USER_ACCESS— у пользователя с данной ролью есть набор привелегий:создание/удаление пользователя;
создание/удаление роли;
изменение пароля пользователя;
добавление/удаление роли пользователя;
получение списка ролей/пользователей.
ADMIN_CLUSTER_STATE— управление состоянием кластера (INACTIVE,ACTIVE,ACTIVE_READ_ONLY);CACHE_CREATE— создание кеша. Выбирается или это системное разрешение, или разрешение на работу с кешами. ВыборCACHE_CREATEв качестве системного разрешения позволяет создавать все кеши;CACHE_DESTROY— удаление кеша. Выбирается или это системное разрешение, или разрешение на работу с кешами. ВыборCACHE_DESTROYв качестве системного разрешения позволяет удалять все кеши;CHANGE_STATISTICS— разрешение на выполнение командыANALYZEandDROP STATISTICS;EVENTS_ENABLE— включение событий;EVENTS_DISABLE— отключение событий;JOIN_AS_SERVER— присоединение к кластеру в качестве серверного узла;REFRESH_STATISTICS— разрешение на выполнение командыREFRESH STATISTICS.
Инструкции по настройке ролей приведены в разделе «Управление ролями» текущего документа.
При создании и настройке списка разрешений, доступных для пользователей с определенными ролями, важно учитывать совместимость разрешений между собой. Каждой ролевой модели предоставляются:
список минимально необходимых разрешений, которые обязательно выдаются пользователю;
список конфликтных разрешений, которые запрещается выдавать пользователю с данной ролью.
Первичная инициализация ролевой системы и учетных записей пользователей#
Для первичной инициализации ролевой системы и учетных записей пользователей используется обязательный парамер в конфигурации плагина безопасности — IgniteConfiguration#userDataStore (подробнее о нем написано в подразделе «Конфигурация плагина безопасности» раздела «Сценарии администрирования»). Параметр IgniteConfiguration#userDataStore принимает на вход путь к файлу, который описывает ролевую систему и учетные записи пользователей в JSON-формате.
Формат описания ролевой системы и учетных записей пользователей#
Актуальное сотояние учетных данных пользователей и ролевой модели можно посмотреть в файле, который находится на хосте в рабочей директории DataGrid. Путь к файлу:
для узлов с установленным consistent ID —
$IGNITE_HOME/work/security/storage/$CONSISTID/security-data.json;для узлов с не настроенным consistent ID —
$IGNITE_HOME/work/security/storage/security-data.json.
Структура JSON-файла с описанием ролевой системы и учетных записей пользователей#
Корень JSON-файла должен содержать два ключа:
roles— массив записей, которые описывают роли (подробнее о ролях написано ниже в разделе «Формат описания роли»);users— массив записей, которые описывают учетные записи пользователй (подробнее о пользователях написано ниже в разделе «Формат описания учетной записи пользователя»).
Формат описания роли#
Поддержваемые ключи:
name— имя роли (обязательный параметр);permissions— запись, описывающая набор разрешений, которые предоставляются пользователю вместе с ролью (обязательный параметр, подробнее о разрешениях написано ниже в разделе «Формат описания набора разрешений»);conflictPermissions— запись, описывающая набор разрешений, которые не могут быть даны пользователю с текущей ролью (опциональный параметр, подробнее о разрешениях написано ниже в разделе «Формат описания набора разрешений»).
Формат описания набора разрешений#
Подробнее о доступных разрешениях написано выше в разделе «Формат описания роли».
Поддерживаемы ключи:
systemPermissions— массив системных разрешений (опциональный параметр);cachePermissions— запись, в качестве ключей которой выступают имена кешей, а в качестве значений — массив предоставляемых разрешений доступа (опциональный параметр);taskPermissions— запись, в качестве ключей которой выступают задачи класса FQN (Fully Qualified Name, полностью определенное имя) — compute tasks, а в качестве значений — массив предоставляемых разрешений доступа (опциональный параметр);servicePermissions— запись, в качестве ключей которой выступают имена сервисов, а в качестве значений — массив предоставляемых разрешений доступа (опциональный параметр).
Формат описания учетной записи пользователя#
Поддержваемые ключи:
login— логин пользователя (обязательный параметр).distinguishedName— DN (distinguished name) пользователя. Параметр требуется для аутентифкации с помощью сертификата (подробнее об этом написано в подразделе «Certificate Authenticator» раздела «Сценарии администрирования»). Для успешной аутентификации DN, который указан в сертификате, должен совпадать со значением данного параметра (опциональный параметр).secret— секрет пользователя. Нужен для аутентификации с помощью пароля (опциональный параметр, подробнее об этом написано в подразделе «Simple Authenticator» раздела «Сценарии администрирования»). Подробнее о формате секрета пользователя написано ниже в разделе «Формат описания секрета пользователя».roles— массив имен ролей, которые принадлежат текущему пользователю. Роли с указанными именами должны быть описаны в ролевой системе (обязательный параметр, подробнее о ролях написано выше в разделе «Формат описания роли»).realm— имя Realm, которому принадлежит текущий пользователь. Если не указан, пользователь будет добавлен в Realm с именемdefault. Конфигурация Realm с соответсвующим именем должна быть указана в конфигурации плагина безопасностиSecurityPluginConfiguration#realmConfiguration(опциональный параметр, подробнее о конфигурации Realms написано в подразделе «Конфигурация Realms» раздела «Сценарии администрирования»).
Формат описания секрета пользователя#
Секрет можно задать в двух взаимоисключающих форматах: пароль в открытом виде или ключ и соль, которые получены в результате PBKDF-вычисления. Ключ и соль генерируются с помощью утилиты управления пользователями — подробнее о ней написано в разделе «Утилита ise-user-control для управления пользователями».
Подерживаемые ключи:
password— текстовый пароль.key— ключ, который получен в результате PBKDF-вычисления.salt— соль, которая получена в результате PBKDF-вычисления.isTemporary— параметр определяет, яляется ли секрет временным. Доступ пользователя, для которого настроен временный пароль, будет ограничен до тех пор, пока пароль не будет изменен.
{
"roles": [
{
"name": "role-name",
"permissions":
"systemPermissions": [
EVENTS_ENABLE,
EVENTS_DISABLE,
ADMIN_VIEW,
ADMIN_OPS,
ADMIN_KILL,
ADMIN_USER_ACCESS,
CACHE_CREATE,
CACHE_DESTROY,
JOIN_AS_SERVER,
ADMIN_METADATA_OPS,
ADMIN_READ_DISTRIBUTED_PROPERTY,
ADMIN_WRITE_DISTRIBUTED_PROPERTY,
ADMIN_SNAPSHOT,
ADMIN_CLUSTER_STATE,
ADMIN_CLUSTER_NODE_START,
ADMIN_CLUSTER_NODE_STOP,
REFRESH_STATISTICS,
CHANGE_STATISTICS,
SQL_VIEW_CREATE,
SQL_VIEW_DROP
],
"cachePermissions": {
"cache-name": [
"CACHE_CREATE",
"CACHE_DESTROY",
"CACHE_READ",
"CACHE_REMOVE",
"CACHE_PUT"
],
...
},
"taskPermissions":
"task-name": [
"TASK_CANCEL",
"TASK_EXECUTE"
],
...
},
"servicePermissions": {
"service-name": [
"SERVICE_CANCEL",
"SERVICE_DEPLOY",
"SERVICE_INVOKE"
],
...
}
},
"conflictPermissions": {
}
},
...
],
"users": [
{
"login": "client",
"distinguishedName": "CN=client, O=SOLUTION.SBT",
"secret": {
"password": "******"
"key": "************",
"salt": "************",
"isTemporary": true
},
"roles": [
"role-name",
...
],
"realm": "default"
},
...
]
}
Управление ролями#
В настоящий момент роли могут быть изменены динамически с помощью Platform V Grid Center или с помощью утилиты ise-user-control (подробнее о работе с утилитой ise-user-control написано в разделе «Утилита ise-user-control для управления пользователями»).