SET ROLE в SQL Console ClickHouse Cloud может показаться, что роль меняется для одного запроса, а для следующего возвращается к прежней. Если разрешения должны сохраняться между запросами и сеансами, используйте роль SQL Console, назначенную пользователю.
Симптомы
- После выполнения
SET ROLE sql_console_developerпоследующие запросы по-прежнему выполняются с рольюsql_console_read_only. - Результаты
currentRoles,enabledRolesиdefaultRolesразличаются от запроса к запросу. - При совместном выполнении
SET ROLEи другого запроса выбранная роль сохраняется не всегда. SHOW GRANTSвыводит ожидаемые роли, но их разрешения не действуют.
Почему это происходит
SET ROLE изменяет роли, включенные для текущего сеанса. Это состояние сеанса не сохраняется для последующих запросов SQL Console. Поэтому последующий запрос может выполняться без роли, включенной предыдущим запросом.
Поэтому не используйте SET ROLE в качестве постоянного механизма контроля доступа в SQL Console.
Как работают роли пользователей в SQL Console
Настройка постоянных разрешений
sql_console_admin или другого пользователя с привилегией ACCESS MANAGEMENT.
1
Создание пользовательской роли
В следующем примере создаётся пользовательская роль
sql_console_developer, которой предоставляются разрешения для my_database:sql_console_developer — пример роли, а не встроенная роль ClickHouse Cloud. Вместо неё можно использовать существующую пользовательскую роль с необходимыми пользователю разрешениями.2
Создание роли SQL Console для пользователя
Создайте роль, имя которой содержит точный адрес электронной почты пользователя:Обратные кавычки обязательны, поскольку имя роли содержит специальные символы.
3
Предоставление пользовательской роли
Предоставьте нужную роль роли SQL Console для пользователя:При необходимости можно предоставить несколько ролей:
4
Начало нового сеанса SQL Console
Попросите пользователя выйти из SQL Console и снова войти в неё либо обновить вкладку браузера. В новом сеансе ClickHouse Cloud применяет Результаты должны включать разрешения, предоставленные через
sql-console-role:user@example.com к sql-console:user@example.com; оператор SET ROLE не требуется.Проверьте активные роли:sql-console-role:user@example.com.Не изменяйте управляемые роли
sql_console_admin и sql_console_read_only, чтобы назначить настраиваемые разрешения. ClickHouse Cloud управляет этими встроенными ролями. Для назначения разрешений отдельным пользователям используйте sql-console-role:<email>.
Примеры общего управления ролями см. в разделе Распространённые запросы для управления доступом.