Ролевая модель в DataGrid#

Ролевая модель — это набор разрешений и прав, которые предоставляют пользователям доступ к управлению и настройке DataGrid. Обычно ролевая модель соответствует действиям и полномочиям определенной должности, что позволяет создать и настроить конкретную роль, а затем предоставить эту роль всем сотрудникам с такой должностью. В плагине безопасности все операции, связанные с предоставлением и изъятием прав пользователей, выполняются через роли. Можно создавать любые роли с любым набором разрешений, которые будут учитывать специфику рабочего процесса команды.

Списки разрешений для ролей#

Ролевые модели с необходимыми разрешениями можно создавать самостоятельно, не ограничиваясь описанными в данном документе вариантами. Каждая роль предусматривает список разрешений.

Все разрешения, из которых можно собрать итоговую ролевую модель, делятся по типам задач:

  • операции с кешем;

  • задачи и вычисления;

  • сервисы;

  • управление событиями;

  • администрирование и мониторинг;

  • управление кластером;

  • присоединение к кластеру;

  • SQL-операции.

В ролевой модели эти разрешения делятся категории:

  • cachePermissions;

  • taskPermissions;

  • servicePermissions;

  • conflictPermissions;

  • systemPermissions.

Операции с кешем (Cache)#

Разрешение

Описание

CACHE_READ

Чтение данных из кеша. Проверяется при любых операциях get и getAll, а также в итераторах и SQL-запросах к данным кеша

CACHE_PUT

Запись данных в кеш. Проверяется при любых операциях put, putAll, replace и getAndPut, а также при загрузке с помощью DataStreamer

CACHE_REMOVE

Удаление данных из кеша. Проверяется при любых операциях remove, removeAll и clear, а также при удалении с помощью DataStreamer

CACHE_CREATE

Создание нового кеша. Проверяется в GridCacheProcessor при динамическом создании кеша (dynamicStartCache), относится к systemPermissions

CACHE_DESTROY

Удаление кеша. Проверяется в GridCacheProcessor при динамическом уничтожении кеша (dynamicDestroyCache), относится к systemPermissions

Примечание

При добавлении разрешений на работу с кешами обязательно укажите имя каждого кеша с разрешениями для него. Чтобы разрешение распространялось на все кеши, укажите * вместо имени кеша.

Задачи и вычисления (Task/Compute)#

Разрешение

Описание

TASK_EXECUTE

Запуск распределенных задач (compute tasks). Проверяется при запуске задачи (startTask)

TASK_CANCEL

Отмена распределенных задач (compute tasks). Проверяется при отмене задачи (task) или отдельного задания (job)

Примечание

При добавлении разрешений на выполнение задач обязательно укажите имя каждой задачи с разрешениями для нее. Чтобы разрешение распространялось на все задачи, укажите * вместо имени задачи.

Сервисы (Service Grid)#

Разрешение

Описание

SERVICE_DEPLOY

Развертывание сервиса в кластере. Проверяется в IgniteServiceProcessor при развертывании сервиса

SERVICE_CANCEL

Остановка/отмена развертывания сервиса. Проверяется при отмене развернутого сервиса

SERVICE_INVOKE

Вызов сервиса. Проверяется при получении прокси к сервису (serviceProxy)

Примечание

При добавлении разрешений на запуск сервисов обязательно укажите имя каждого сервиса с разрешениями для него. Чтобы разрешение распространялось на все сервисы, укажите * вместо имени сервиса.

Управление событиями (Events)#

Разрешение

Описание

EVENTS_ENABLE

Включение событий. Проверяется при включении типов событий

EVENTS_DISABLE

Отключение событий. Проверяется при отключении типов событий

Администрирование и мониторинг (Admin)#

Разрешение

Описание

ADMIN_VIEW

Просмотр состояния кластера. Разрешает выполнение общих задач мониторинга (просмотр топологии и метрик)

ADMIN_OPS

Общие административные операции. Разрешает выполнение административных задач (подробнее о них написано в следующем разделе)

ADMIN_KILL

Принудительное завершение процессов. Проверяется при kill-операциях в задачах/заданиях (tasks/jobs)

Управление кластером (Cluster Management)#

Разрешение

Описание

ADMIN_CLUSTER_STATE

Изменение состояния кластера (активация, деактивация, смена базовой топологии)

ADMIN_CLUSTER_NODE_START

Запуск новых узлов кластера

ADMIN_CLUSTER_NODE_STOP

Остановка и перезапуск узлов кластера

ADMIN_SNAPSHOT

Операции со снепшотами кластера (создание, отмена, проверка)

ADMIN_ROLLING_UPGRADE

Выполнение Rolling Upgrade кластера (подробнее о нем написано в разделе «Механизм обновления узлов Rolling Upgrade»)

ADMIN_METADATA_OPS

Операции с метаданными кластера (удаление и обновление бинарных типов)

ADMIN_READ_DISTRIBUTED_PROPERTY

Чтение распределенных свойств кластера

ADMIN_WRITE_DISTRIBUTED_PROPERTY

Запись и изменение распределенных свойств кластера

ADMIN_USER_ACCESS

Управление пользователями: создание, изменение, удаление

Присоединение к кластеру#

Разрешение

Описание

JOIN_AS_SERVER

Разрешает присоединиться к кластеру как серверный узел

SQL-операции#

Разрешение

Описание

REFRESH_STATISTICS

Выполнение команды REFRESH STATISTICS

CHANGE_STATISTICS

Выполнение команд ANALYZE и DROP STATISTICS

SQL_VIEW_CREATE

Выполнение команды CREATE VIEW

SQL_VIEW_DROP

Выполнение команды DROP VIEW

Команды утилиты control.sh и необходимые разрешения для них#

Состояние, активация и деактивация кластера#

Команда control.sh

Описание

Разрешение

--activate

Активировать кластер (команда устарела и была заменена на --set-state)

ADMIN_CLUSTER_STATE

--deactivate [--force] [--yes]

Деактивировать кластер

ADMIN_CLUSTER_STATE

--state

Показать текущее состояние кластера

Офлайн-команда

--set-state {ACTIVE|INACTIVE|ACTIVE_READ_ONLY} [--force] [--yes]

Изменить состояние кластера

ADMIN_CLUSTER_STATE

--change-tag NEW_TAG [--yes]

Изменить идентификатор кластера (cluster tag)

ADMIN_OPS

--shutdown-policy [GRACEFUL|IMMEDIATE]

Получить или задать политику отключения (shutdown policy)

ADMIN_OPS

Базовая топология#

Команда control.sh

Описание

Разрешение

--baseline

Показать текущую базовую топологию (baseline)

ADMIN_OPS

--baseline add CONSISTENT_IDS [--yes]

Добавить узлы в базовую топологию

ADMIN_OPS

--baseline remove CONSISTENT_IDS [--yes]

Удалить узлы из базовой топологии

ADMIN_OPS

--baseline set CONSISTENT_IDS [--yes]

Установить базовую топологию

ADMIN_OPS

--baseline version TOPOLOGY_VERSION

Установить версию базовой топологии

ADMIN_OPS

--baseline auto_adjust [enable|disable] [--timeout MS]

Автоматически настроить базовую топологию

ADMIN_OPS

Транзакции#

Команда control.sh

Описание

Разрешение

--tx [...filters]

Вывести список или отменить транзакции

ADMIN_OPS, при --kill дополнительно TASK_CANCEL

--tx --info <xid>

Вывести подробную информацию по xid

ADMIN_OPS

Кеши#

Команда control.sh

Описание

Разрешение

--cache help

Вывести справку по подкомандам --cache

--cache list REGEX [--config] [--seq] [--groups]

Вывести список кешей или кеш-групп

ADMIN_OPS

--cache create --springXmlConfig FILE [--skipExisting]

Создать кеши из Spring XML

CACHE_CREATE

--cache destroy {--caches NAMES| --destroy-all-caches}

Удалить указанные кеши

CACHE_DESTROY

--cache clear --caches NAMES

Очистить кеши

ADMIN_OPS и CACHE_REMOVE

--cache scan CACHE_NAME [--limit N] [--output-format ...]

Показать содержимое кеша

CACHE_READ

--cache contention MIN_QUEUE [NODE_ID] [--max-print N]

Вывести ключи, за которые идет конкуренция в транзакциях

ADMIN_OPS

--cache idle_verify [--cache-filter ...] [--exclude-caches] [--skip-zeros] [--check-crc] [--dump]

Провести проверку партиций

ADMIN_OPS

--cache idle_verify --cancel

Отменить запуск утилиты idle_verify

ADMIN_OPS

--cache idle_verify --dump

Дамп утилиты idle_verify в файл

ADMIN_OPS

--cache find_garbage [--groups NAMES] [--delete]

Поиск/удаление мусора

ADMIN_OPS

--cache distribution [NODE_ID] [--caches NAMES] [--user-attributes ATTRS]

Распределение партиций по узлам

ADMIN_OPS

--cache reset_lost_partitions {--caches NAMES| --all}

Сбросить потерянные партиции

ADMIN_OPS

--cache indexes_list

Вывести список индексов с фильтрами

ADMIN_OPS

--cache indexes_rebuild_status [--node-id ID]

Вывести прогресс перестройки индексов

ADMIN_OPS

--cache indexes_force_rebuild

Принудительная перестройка индексов

ADMIN_OPS

--cache schedule_indexes_rebuild

Поставить перестройку индексов в очередь

ADMIN_OPS

--cache validate_indexes [--caches NAMES] [--check-first N] [--check-through N]

Провести валидацию индексов

ADMIN_OPS

--cache check_index_inline_sizes

Сверка встроенного размера (inline-size) индексов

ADMIN_OPS

--cache metrics {enable|disable|status}

Управление сбором метрик пользовательских кешей

ADMIN_OPS

Снепшоты и дампы#

Команда control.sh

Описание

Разрешение

--snapshot create NAME [--sync] [--dest PATH]

Создать снепшот кластера

ADMIN_SNAPSHOT

--snapshot cancel --id ID

Отменить снятие снепшота

ADMIN_SNAPSHOT

--snapshot check NAME [--src PATH]

Проверить снепшот

ADMIN_SNAPSHOT

--snapshot restore NAME [--groups NAMES] [--src PATH] [--sync]

Восстановить снепшот

ADMIN_SNAPSHOT

--snapshot status

Статус текущей операции со снепшотом

ADMIN_SNAPSHOT

--dump create --name name [--dest path] [--only-primary] [--compress] [--encrypt] [--include-data-structures] [--config-only] [[--groups group1[,group2,....,groupN]]|[--in-memory-only]]

Создать дамп

ADMIN_SNAPSHOT

--dump check --name name [--src path]

Проверить дамп

ADMIN_SNAPSHOT

--dump cancel --name name|--id id

Отменить снятие дампа

ADMIN_SNAPSHOT

WAL-журнал#

Команда control.sh

Описание

Разрешение

--wal print [NODE_IDS]

Список WAL-сегментов

ADMIN_OPS

--wal delete [NODE_IDS]

Удалить WAL-сегменты

ADMIN_OPS

--wal enable --groups GROUPS

Включить WAL для кеш-групп

ADMIN_OPS

--wal disable --groups GROUPS

Отключить WAL (журнал предзаписи) для кеш-групп

ADMIN_OPS

--wal state --groups GROUPS

Состояние WAL по группам

ADMIN_OPS

Контрольная точка#

Команда control.sh

Описание

Разрешение

--checkpoint

Запустить создание контрольных точек (checkpoint)

ADMIN_OPS

Диагностика#

Команда control.sh

Описание

Разрешение

--diagnostic connectivity

Проверить связность узлов

ADMIN_OPS

--diagnostic pagelocks {dump|dump_log} [--all|--nodes NODE_IDS] [--path PATH]

Отобразить состояние блокировки страниц

ADMIN_OPS

Шифрование#

Команда control.sh

Описание

Разрешение

--encryption get_master_key_name

Текущее имя мастер-ключа

ADMIN_OPS

--encryption change_master_key NEW_NAME

Сменить мастер-ключ

ADMIN_OPS

--encryption change_cache_key CACHE_GROUP

Сменить ключ шифрования кеш-группы

ADMIN_OPS

--encryption cache_key_ids CACHE_GROUP

Список идентификаторов ключей шифрования кеш-группы

ADMIN_OPS

--encryption reencryption_status CACHE_GROUP

Отобразить статус повторного шифрования

ADMIN_OPS

--encryption suspend_reencryption CACHE_GROUP

Приостановить повторное шифрование

ADMIN_OPS

--encryption resume_reencryption CACHE_GROUP

Возобновить повторное шифрование

ADMIN_OPS

--encryption reencryption_rate_limit [MB_PER_SEC]

Установить лимит скорости повторного шифрования

ADMIN_OPS

Прерывание#

Команда control.sh

Описание

Разрешение

--kill compute SESSION_ID

Прервать распределенную задачу (compute tasks)

TASK_CANCEL или ADMIN_KILL

--kill service NAME

Прервать развертывание сервиса

SERVICE_CANCEL/SERVICE_INVOKE

--kill sql QUERY_ID

Прервать выполнение SQL-запроса

ADMIN_OPS

--kill scan ORIGIN_NODE_ID CACHE QUERY_ID

Прервать выполнение scan-запроса

ADMIN_OPS

--kill continuous ORIGIN_NODE_ID ROUTINE_ID

Прервать выполнение непрерывного запроса (continuous query)

ADMIN_OPS

--kill transaction XID

Прервать выполнение транзакции

ADMIN_OPS и внутренняя проверка TASK_CANCEL/ADMIN_KILL

--kill snapshot SNAPSHOT_NAME

Отменить снятие снепшота

ADMIN_SNAPSHOT

--kill consistency

Прервать операцию по проверке и устранению несогласованности данных

ADMIN_OPS

--kill client CONNECTION_ID|--all

Завершить соединение с тонким клиентом

ADMIN_OPS

Метаданные#

Команда control.sh

Описание

Разрешение

--meta list

Вывести список метаданных бинарного типа

ADMIN_OPS

--meta details --typeId ID|--typeName NAME

Вывести детальную информацию об определенном BinaryType

ADMIN_OPS

--meta remove --typeId ID|--typeName NAME [--out FILE]

Удалить метаданные из кластера

ADMIN_METADATA_OPS

--meta update --in FILE

Обновить метаданные кластера из файла

ADMIN_METADATA_OPS

Трассировка#

Команда control.sh

Описание

Разрешение

--tracing-configuration

Показать конфигурацию трассировки

ADMIN_OPS

--tracing-configuration get_all [--scope SCOPE]

Показать всю конфигурацию трассировки

ADMIN_OPS

--tracing-configuration get --scope SCOPE [--label LBL]

Показать конкретную конфигурацию трассировки

ADMIN_OPS

--tracing-configuration reset_all [--scope SCOPE]

Сбросить конфигурации трассировки

ADMIN_OPS

--tracing-configuration reset --scope SCOPE [--label LBL]

Сбросить конкретную конфигурацию трассировки

ADMIN_OPS

--tracing-configuration set --scope SCOPE [--label LBL] [--sampling-rate R] [--included-scopes S]

Установить конфигурацию трассировки

ADMIN_OPS

Разогрев данных#

Команда control.sh

Описание

Разрешение

--warm-up --stop

Прервать разогрев данных (только до запуска узла)

Офлайн-команда, которая выполняется локально на узле перед его запуском

Свойства#

Команда control.sh

Описание

Разрешение

--property list [--info]

Вывести список распределенных свойств (distributed properties)

ADMIN_READ_DISTRIBUTED_PROPERTY

--property get --name N

Прочитать распределенные свойства

ADMIN_READ_DISTRIBUTED_PROPERTY

--property set --name N --val V

Записать распределенные свойства

ADMIN_WRITE_DISTRIBUTED_PROPERTY

Механизм обновления узлов Rolling Upgrade#

Команда control.sh

Описание

Разрешение

--rolling-upgrade status

Вывести статус механизма обновления узлов Rolling Upgrade

ADMIN_OPS

--rolling-upgrade on

Включить Rolling Upgrade

ADMIN_ROLLING_UPGRADE

--rolling-upgrade off [--force]

Выключить Rolling Upgrade

ADMIN_ROLLING_UPGRADE

Системные представления и метрики#

Команда control.sh

Описание

Разрешение

--system-view NAME [--node-id ID|--all-nodes]

Вывести содержимое системного представления (system view)

ADMIN_OPS

--metric NAME [--node-id ID]

Вывести значение метрики

ADMIN_OPS

--metric --configure-histogram NAME --bounds B1,B2,...

Конфигурирование гистограммы конкретной метрики

ADMIN_OPS

--metric --configure-hitrate NAME --rate-time-interval MS

Настройка показателя частоты снятия метрики

ADMIN_OPS

--metric --configure-max-value NAME

Настройка максимального значения метрики

ADMIN_OPS

Статистика производительности#

Команда control.sh

Описание

Разрешение

--performance-statistics start

Начать сбор статистики производительности (performance statistics)

ADMIN_OPS

--performance-statistics stop

Остановить сбор статистики производительности

ADMIN_OPS

--performance-statistics rotate

Ротация сбора статистики производительности

ADMIN_OPS

--performance-statistics status

Вывести статус сбора статистики производительности

ADMIN_OPS

Персистентность#

Команда control.sh

Описание

Разрешение

--persistence [info]

Информация о потенциально поврежденных кешах

Офлайн-команда, которая выполняется на узле в аварийном режиме

--persistence backup / backup_all / backup_caches NAMES / backup_corrupted

Резервирование поврежденных файлов данных

Офлайн-команда, которая выполняется на узле в аварийном режиме

--persistence clean / clean_all / clean_caches NAMES / clean_corrupted

Очистить каталоги кешей

Офлайн-команда, которая выполняется на узле в аварийном режиме

Дефрагментация#

Команда control.sh

Описание

Разрешение

--defragmentation schedule --nodes NODE_IDS [--caches NAMES]

Запланировать дефрагментацию на узлах

ADMIN_OPS

--defragmentation status

Вывести статус дефрагментации

Офлайн-команда, которая выполняется на узле в аварийном режиме

--defragmentation cancel

Отменить дефрагментацию

Офлайн-команда, которая выполняется на узле в аварийном режиме

CDC#

Команда control.sh

Описание

Разрешение

--cdc delete_lost_segment_links [--node-id ID]

Удалить ссылки на удаленные WAL-сегменты, которые не были обработаны CDC

ADMIN_OPS

--cdc resend --caches NAMES

Отправить CDC-данные повторно

ADMIN_OPS

Консистентность#

Команда control.sh

Описание

Разрешение

--consistency repair --cache N --partitions P [--strategy ...]

Запустить проверку/восстановление согласованности кеша с помощью метода Read Repair

ADMIN_OPS

--consistency status

Вывести статус операции проверки/восстановления согласованности кеша

EVENTS_ENABLE

--consistency finalize

Установить корректные значения счетчиков после устранения расхождений

EVENTS_DISABLE

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

Команда control.sh

Описание

Разрешение

--help

Вывести справочную информацию

Офлайн-команда

--security-plugin users create [--user-password user_password] [--key key] [--salt salt] [--temp-secret] --user-login user_login [--dn distinguished_name] --roles role1[,role2,....,roleN] [--realm realm]

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

ADMIN_USER_ACCESS

--security-plugin users delete --user-login user_login

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

ADMIN_USER_ACCESS

--security-plugin users list

Вывести список пользователей

ADMIN_USER_ACCESS

--security-plugin users update [--temp-secret] --user-login user_login [--user-password user_password] [--key key] [--salt salt] [--dn distinguished_name] [--roles role1[,role2,....,roleN]] [--realm realm]

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

ADMIN_USER_ACCESS

--security-plugin users change_password --old-password old_password --new-password new_password

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

Дополнительные права не нужны, пользователь может изменить только свой пароль

--security-plugin roles create [--permissions permission1[,permission2,....,permissionN]] [--conflict-permissions conflict_permission1[,conflict_permission2,....,conflict_permissionN]] [--name name]|[--json-input json_input]

Создать роль

ADMIN_USER_ACCESS

--security-plugin roles list [--format DEFAULT|PRETTY_JSON] [--names name1[,name2,....,nameN]]

Вывести список ролей

ADMIN_USER_ACCESS

--security-plugin roles update [--permissions permission1[,permission2,....,permissionN]] [--conflict-permissions conflict_permission1[,conflict_permission2,....,conflict_permissionN]] [--name name]|[--json-input json_input]

Изменить роль

ADMIN_USER_ACCESS

--security-plugin roles delete --name name

Удалить роль

ADMIN_USER_ACCESS

--security-plugin storage export [--format DEFAULT|PRETTY_JSON]

Экспортировать конфигурацию ролевой модели

ADMIN_USER_ACCESS

--security-plugin storage import --file-path file_path

Импортировать конфигурацию ролевой модели

ADMIN_USER_ACCESS

--security-plugin secrets generate_hash --user-password user_password [--password-policy /path/to/file]

Сгенерировать хеш пароля

Офлайн-команда

Инструкции по настройке ролей описаны ниже в разделе «Управление ролями».

При создании и настройке списка разрешений, доступных для пользователей с определенными ролями, важно учитывать совместимость разрешений между собой. Каждой ролевой модели предоставляются:

  • список минимально необходимых разрешений, которые обязательно выдаются пользователю;

  • список конфликтных разрешений, которые запрещается выдавать пользователю с данной ролью.

Использование списка конфликтных разрешений позволяет гибко настраивать несовместимость ролей индивидуально для каждого кластера.

Первичная инициализация ролевой системы и учетных записей пользователей#

Для первичной инициализации ролевой системы и учетных записей пользователей используется обязательный парамер в конфигурации плагина безопасности — 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-файла должен содержать два ключа:

Формат описания роли#

Поддержваемые ключи:

  • 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 — параметр определяет, яляется ли секрет временным. Доступ пользователя, для которого настроен временный пароль, будет ограничен до тех пор, пока пароль не будет изменен.

Формат ролевой модели
JSON#
{
  "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"
    },
    ...
  ]
}

Для генерации пары key-salt в DataGrid предусмотрена команда скрипта control.sh:

./control.sh --security-plugin secrets generate_hash --user-password

После запуска данной команды нужно будет ввести пароль пользователя, а в выводе будут указаны key и salt.

Управление ролями#

В настоящий момент роли могут быть изменены динамически с помощью Platform V Grid Center или с помощью утилиты ise-user-control (подробнее о работе с утилитой ise-user-control написано в разделе «Утилита ise-user-control для управления пользователями»).