Skip to main content
СамоуправляемыйЕсли вы работаете с самоуправляемым ClickHouse, см. пользователи и роли SQL.
В этой статье рассказывается об основах создания пользователей и ролей SQL, а также назначения им привилегий и разрешений для баз данных, таблиц, строк и столбцов.

Пользователь с ролью Admin

В сервисах ClickHouse Cloud есть пользователь default с правами администратора, который создается при создании сервиса. Пароль задается при создании сервиса, и его могут сбросить пользователи ClickHouse Cloud с ролью Admin. Когда вы добавляете дополнительных SQL-пользователей для своего сервиса ClickHouse Cloud, им потребуются SQL-имя пользователя и пароль. Если вы хотите предоставить им административные привилегии, назначьте новым пользователям роль default_role. Например, добавим пользователя clickhouse_admin:
При использовании SQL Console ваши SQL-команды будут выполняться не от имени пользователя default. Вместо этого они будут выполняться от имени пользователя sql-console:${cloud_login_email}, где cloud_login_email — это адрес электронной почты пользователя, который в данный момент выполняет запрос.Эти автоматически созданные пользователи SQL Console имеют роль default.

Аутентификация без пароля

Для SQL Console доступны две роли: sql_console_admin с теми же разрешениями, что и у default_role, и sql_console_read_only с разрешениями только для чтения. Пользователям с ролью Admin по умолчанию назначается роль sql_console_admin, поэтому для них ничего не меняется. Однако роль sql_console_read_only позволяет предоставить пользователям без роли Admin доступ только для чтения или полный доступ к любому экземпляру. Этот доступ должен настроить пользователь с ролью Admin. Роли можно изменить с помощью команд GRANT или REVOKE, чтобы точнее соответствовать требованиям конкретного экземпляра, и все внесённые в них изменения будут сохранены.

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

Этот механизм управления доступом также можно настроить вручную с точностью до отдельного пользователя. Перед тем как назначать пользователям новые роли sql_console_*, следует создать роли базы данных для отдельных пользователей SQL Console по шаблону sql-console-role:<email>. Например:
Если обнаружена подходящая роль, она будет назначена пользователю вместо шаблонных ролей. Это позволяет настраивать более сложные схемы управления доступом, например создавать роли sql_console_sa_role и sql_console_pm_role и назначать их конкретным пользователям. Например:

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

Выйдите из системы под пользователем default и снова войдите под пользователем clickhouse_admin. Все перечисленные ниже действия должны выполниться успешно:

Пользователи без прав администратора

Пользователям следует предоставить необходимые привилегии; не всем из них нужны права администратора. Далее в этом документе приведены примеры сценариев и указаны требуемые роли.

Подготовка

Создайте эти таблицы и пользователей для использования в примерах.

Создание тестовой базы данных, таблицы и строк

1

Создайте тестовую базу данных

2

Создайте таблицу

3

Заполните таблицу примерными строками

4

Проверьте таблицу

Запрос
Ответ
5

Создайте column_user

Создайте обычного пользователя для демонстрации ограничения доступа к определённым столбцам:
6

Создайте row_user

Создайте обычного пользователя для демонстрации ограничения доступа к строкам с определёнными значениями:

Создание ролей

В этом наборе примеров:
  • будут созданы роли с разными привилегиями, например на уровне столбцов и строк
  • ролям будут выданы привилегии
  • пользователи будут назначены каждой роли
Роли используются для определения групп пользователей с определёнными привилегиями вместо того, чтобы управлять каждым пользователем отдельно.
1

Создайте роль, чтобы ограничить пользователей этой роли просмотром только column1 в базе данных db1 и таблице table1:

2

Задайте привилегии, разрешающие просмотр column1

3

Добавьте пользователя column_user в роль column1_users

4

Создайте роль, чтобы ограничить пользователей этой роли просмотром только выбранных строк — в данном случае только строк, где column1 содержит A

5

Добавьте row_user в роль A_rows_users

6

Создайте политику, разрешающую просмотр только строк, где column1 имеет значение A

7

Задайте привилегии для базы данных и таблицы

8

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

При привязке политики к таблице система применяет эту политику, и только указанные в ней пользователи и роли смогут выполнять операции с таблицей; всем остальным любые операции будут запрещены. Чтобы ограничивающая политика строк не применялась к другим пользователям, необходимо определить другую политику, которая предоставит другим пользователям и ролям обычный или иной тип доступа.

Проверка

Проверка привилегий роли для пользователя с ограничением доступа к столбцам

1

Войдите в клиент ClickHouse под пользователем clickhouse_admin

2

Проверьте доступ к базе данных, таблице и всем строкам под пользователем admin.

3

Войдите в клиент ClickHouse под пользователем column_user

4

Проверьте SELECT со всеми столбцами

Доступ запрещён, так как указаны все столбцы, а у пользователя есть доступ только к id и column1
5

Проверьте запрос SELECT, указав только разрешённые столбцы:

Проверка привилегий роли с пользователем с ограничением по строкам

1

Войдите в клиент ClickHouse под пользователем row_user

2

Просмотрите доступные строки

Убедитесь, что возвращаются только две строки, показанные выше; строки со значением B в column1 должны быть исключены.

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

Пользователю можно назначить несколько ролей, чтобы получить нужную комбинацию привилегий. При использовании нескольких ролей система объединяет их для определения привилегий, то есть права, предоставленные ролями, суммируются. Например, если role1 разрешает только SELECT по column1, а role2 разрешает SELECT по column1 и column2, то пользователь получит доступ к обоим столбцам.
1

Используя учетную запись администратора, создайте нового пользователя с ограничением доступа и по строкам, и по столбцам, а также с ролями по умолчанию

2

Удалите ранее выданные привилегии у роли A_rows_users

3

Разрешите роли A_row_users выполнять SELECT только по column1

4

Войдите в клиент ClickHouse под пользователем row_and_column_user

5

Проверка со всеми столбцами:

6

Проверка с ограниченным набором разрешенных столбцов:

Устранение неполадок

Иногда пересечение или сочетание привилегий приводит к неожиданным результатам; чтобы сузить область поиска проблемы, можно использовать следующие команды, выполнив вход под учетной записью администратора

Просмотр привилегий и ролей пользователя

Просмотр ролей в ClickHouse

Просмотреть политики

Просмотрите, как задана политика и какие привилегии действуют сейчас

Пример команд для управления ролями, политиками и пользователями

Следующие команды можно использовать, чтобы:
  • удалить привилегии
  • удалить политики
  • отвязать пользователей от ролей
  • удалить пользователей и роли
Выполняйте эти команды от имени пользователя с правами администратора или пользователя default

Отозвать привилегию у роли

Удалить политику

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

Удалить роль

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

Краткие итоги

В этой статье мы рассмотрели основы создания SQL-пользователей и ролей, а также шаги по настройке и изменению привилегий для пользователей и ролей. Более подробную информацию по каждой из этих тем см. в наших руководствах пользователя и справочной документации.
Последнее изменение 3 июля 2026 г.