Сопоставление ролей с ClickHouse
Настройка ClickHouse
Создание пользователя для управления ролями
Для настройки требуется пользователь ClickHouse с правами на создание и управление ролями. Выполните запросы от имени администратора или создайте отдельного пользователя с необходимыми правами.
Пример
Создайте пользователя sm_admin с правами на управление ролями в ClickHouse:
CREATE USER sm_admin IDENTIFIED BY '<пароль>';
CREATE ROLE sm_role_manager;
GRANT CREATE ROLE, DROP ROLE, ROLE ADMIN ON *.* TO sm_role_manager;
GRANT SELECT, INSERT, ALTER, TRUNCATE ON *.* TO sm_role_manager WITH GRANT OPTION;
GRANT sm_role_manager TO sm_admin;
Создание основного пользователя
Для трансляции ролевой модели все запросы должны выполняться от имени одного пользователя. Создайте пользователя без ролей по умолчанию, например sm_user.
Не выдавайте этому пользователю прямые права на таблицы: доступ к данным должен предоставляться назначаемыми ролями.
Если у пользователя Smart Monitor нет ролей с префиксом clk_, команда SET ROLE не отправляется. Ошибка выполнения SET ROLE записывается в журнал узла и сама по себе не останавливает основной запрос. Он продолжает выполняться с действующими правами сервисной учётной записи ClickHouse. Прямые гранты и роли по умолчанию этой учётной записи могут открыть данные независимо от ожидаемого сопоставления ролей.
CREATE USER sm_user IDENTIFIED BY '<пароль>';
SET DEFAULT ROLE NONE TO sm_user;
Создание роли
Перед использованием роль необходимо создать, задать ей нужные разрешения и назначить основному пользователю. Все транслируемые роли должны быть назначены этому пользователю.
Пример
Требуется создать роль analyst с возможностью запрашивать данные из таблицы default.auditd.
CREATE ROLE analyst;
GRANT SELECT ON default.auditd TO analyst;
GRANT analyst TO sm_user;
Настройка OpenSearch
Настройка соединения
Для трансляции ролевой модели необходимо создать Search Anywhere подключение с типом ClickHouse и указать пользователя, на которого назначены роли. В данном примере это sm_user. Подробнее о настройке подключения в соответствующей статье.
Настройка ролей
Для сопоставления ролей в OpenSearch и ClickHouse создайте фиктивную роль без разрешений с именем clk_<название роли> и назначьте ее нужным пользователям. Подробнее см. в статье о настройке ролей.
Пример
Чтобы назначить внутреннему пользователю роль ClickHouse analyst, создайте роль clk_analyst и назначьте ее пользователю. При запросах через созданное ранее подключение роль будет передаваться автоматически.