Top.Mail.Ru
Создание учетных записей пользователей в ClickHouse
8 800 555-89-02
Документация
CTRL+K
Standalone2402
SaaS

Создание учетных записей пользователей в ClickHouse

В этой статье

Создание учетных записей в ClickHouse выполняется через SQL-запрос и доступно, если при запуске контейнера передать переменную окружения:

APP_USER_ACCESS_MANAGEMENT='1'

Запрос:

CREATE USER [IF NOT EXISTS | OR REPLACE] name1 [ON CLUSTER cluster_name1]
        [, name2 [ON CLUSTER cluster_name2] ...]
    [NOT IDENTIFIED | IDENTIFIED {[WITH {no_password | plaintext_password | sha256_password | sha256_hash | double_sha1_password | double_sha1_hash}] BY {'password' | 'hash'}} | {WITH ldap SERVER 'server_name'} | {WITH kerberos [REALM 'realm']}]
    [HOST {LOCAL | NAME 'name' | REGEXP 'name_regexp' | IP 'address' | LIKE 'pattern'} [,...] | ANY | NONE]
    [DEFAULT ROLE role [,...]]
    [DEFAULT DATABASE database | NONE]
    [GRANTEES {user | role | ANY | NONE} [,...] [EXCEPT {user | role} [,...]]]
    [SETTINGS variable [= value] [MIN [=] min_value] [MAX [=] max_value] [READONLY | WRITABLE] | PROFILE 'profile_name'] [,...]

Где:

  • ON CLUSTER — создание пользователей в кластере.

Идентификация пользователей

Для идентификации пользователей существуют следующие способы:

  • IDENTIFIED WITH no_password
  • IDENTIFIED WITH plaintext_password BY 'qwerty'
  • IDENTIFIED WITH sha256_password BY 'qwerty' or IDENTIFIED BY 'password'
  • IDENTIFIED WITH sha256_hash BY 'hash' or IDENTIFIED WITH sha256_hash BY 'hash' SALT 'salt'
  • IDENTIFIED WITH double_sha1_password BY 'qwerty'
  • IDENTIFIED WITH double_sha1_hash BY 'hash'
  • IDENTIFIED WITH ldap SERVER 'server_name'
  • IDENTIFIED WITH kerberos or IDENTIFIED WITH kerberos REALM 'realm'

Для идентификации с sha256_hash используйте SALT — хэш должен быть вычислен от конкатенации 'password' и 'salt'.

Секция GRANTEES

Указываются пользователи или роли, которым разрешено получать привилегии от создаваемого пользователя при условии, что этому пользователю также предоставлен весь необходимый доступ с использованием GRANT OPTION. Параметры секции GRANTEES:

  • user — указывается пользователь, которому разрешено получать привилегии от создаваемого пользователя
  • role — указывается роль, которой разрешено получать привилегии от создаваемого пользователя
  • ANY — любому пользователю или любой роли разрешено получать привилегии от создаваемого пользователя. Используется по умолчанию
  • NONE — никому не разрешено получать привилегии от создаваемого пользователя

Вы можете исключить любого пользователя или роль, используя выражение EXCEPT. Например, CREATE USER user1 GRANTEES ANY EXCEPT user2. Это означает, что, если user1 имеет привилегии, предоставленные с использованием GRANT OPTION, он сможет предоставить их любому, кроме user2.

Выражение GRANT

Присваивает привилегии пользователям или ролям ClickHouse. Назначает роли пользователям или другим ролям.

Отозвать привилегию можно с помощью выражения REVOKE. Чтобы вывести список присвоенных привилегий, воспользуйтесь выражением SHOW GRANTS.

Синтаксис присвоения привилегий:

GRANT [ON CLUSTER cluster_name] privilege[(column_name [,...])] [,...] ON {db.table|db.*|*.*|table|*} TO {user | role | CURRENT_USER} [,...] [WITH GRANT OPTION] [WITH REPLACE OPTION]
  • privilege — тип привилегии
  • role — роль пользователя ClickHouse
  • user — пользователь ClickHouse

WITH GRANT OPTION разрешает пользователю или роли выполнять запрос GRANT. Пользователь может выдавать только те привилегии, которые есть у него, той же или меньшей области действий. WITH REPLACE OPTION заменяет все старые привилегии новыми привилегиями для user или role, если не указано, добавляет новые привилегии.

Синтаксис назначения ролей:

GRANT [ON CLUSTER cluster_name] role [,...] TO {user | another_role | CURRENT_USER} [,...] [WITH ADMIN OPTION] [WITH REPLACE OPTION]
  • role — роль пользователя ClickHouse
  • user — пользователь ClickHouse

WITH ADMIN OPTION присваивает привилегию ADMIN OPTION пользователю или роли. WITH REPLACE OPTION заменяет все старые роли новыми ролями для пользователя user или role, если не указано, добавляет новые роли.

Синтаксис присвоения текущих привилегий:

GRANT CURRENT GRANTS{(privilege[(column_name [,...])] [,...] ON {db.table|db.*|*.*|table|*}) | ON {db.table|db.*|*.*|table|*}} TO {user | role | CURRENT_USER} [,...] [WITH GRANT OPTION] [WITH REPLACE OPTION]
  • privilege — тип привилегии
  • role — роль пользователя ClickHouse
  • user — пользователь ClickHouse

Использование выражения CURRENT GRANTS позволяет присвоить все указанные и доступные для присвоения привилегии. Если список привилегий не задан, то указанный пользователь или роль получат все доступные привилегии для CURRENT_USER.

Привилегии

Привилегия — это разрешение на выполнение определенного типа запросов.

Привилегии имеют иерархическую структуру. Набор разрешенных запросов зависит от области действия привилегии. С полным списком привилегий ClickHouse ознакомьтесь по ссылке.

Примеры

Создать аккаунт mira, защищенный паролем qwerty:

CREATE USER mira IDENTIFIED WITH sha256_password BY 'qwerty';

Пользователь mira должен запустить клиентское приложение на хосте, где запущен ClickHouse.

Создать аккаунт john, назначить на него роли, сделать данные роли ролями по умолчанию:

CREATE USER john DEFAULT ROLE role1, role2;

Создать аккаунт john и установить ролями по умолчанию все его будущие роли:

CREATE USER john DEFAULT ROLE ALL;

Когда роль будет назначена аккаунту john, она автоматически станет ролью по умолчанию.

Создать аккаунт john и установить ролями по умолчанию все его будущие роли, кроме role1 и role2:

CREATE USER john DEFAULT ROLE ALL EXCEPT role1, role2;

Создать пользователя с аккаунтом john и разрешить ему предоставить свои привилегии пользователю с аккаунтом jack:

CREATE USER john GRANTEES jack;

Управление доступом

ClickHouse поддерживает управление доступом на основе ролей.

Объекты системы доступа в ClickHouse:

  • аккаунт пользователя
  • роль
  • политика доступа к строкам
  • профиль настроек
  • квота

Вы можете настроить объекты системы доступа, используя:

  • функцию SQL-ориентированного управления доступом
  • конфигурационные файлы сервера: users.xml и config.xml

Рекомендуется использовать функцию SQL-ориентированного управления доступом. Оба метода конфигурации работают одновременно, поэтому, если для управления доступом вы используете конфигурационные файлы, вы можете плавно перейти на SQL-ориентированное управление доступом.

Заметка

Недопустимо одновременно использовать оба метода для управления одним и тем же объектом системы доступа.

Использование

По умолчанию сервер ClickHouse предоставляет аккаунт пользователя default, для которого выключена функция SQL-ориентированного управления доступом, но у него есть все права и разрешения. Аккаунт default используется во всех случаях, когда имя пользователя не определено. Например, при входе с клиента или в распределенных запросах. При распределенной обработке запроса default используется, если в конфигурации сервера или кластера не указаны свойства user и password.

Если вы начали пользоваться ClickHouse недавно, попробуйте следующий сценарий:

  1. Включите SQL-ориентированное управление доступом для пользователя default.
  2. Войдите под пользователем default и создайте всех необходимых пользователей. Не забудьте создать аккаунт администратора (GRANT ALL ON *.* TO admin_user_account WITH GRANT OPTION).
  3. Ограничьте разрешения для пользователя default и отключите для него SQL-ориентированное управление доступом.
Заметка
  • Вы можете выдавать разрешения на базы данных или таблицы, даже если они не существуют.
  • При удалении таблицы все связанные с ней привилегии не отзываются. Если затем создать новую таблицу с таким же именем, все привилегии останутся действительными. Чтобы отозвать привилегии, связанные с удаленной таблицей, необходимо выполнить, например, запрос REVOKE ALL PRIVILEGES ON db.table FROM ALL.
  • У привилегий нет настроек времени жизни.

Аккаунт пользователя

Аккаунт пользователя — это объект системы доступа, позволяющий авторизовать кого-либо в ClickHouse. Аккаунт содержит:

  • идентификационную информацию
  • привилегии, определяющие область действия запросов, которые могут быть выполнены пользователем
  • хосты, которые могут подключаться к серверу ClickHouse
  • назначенные роли и роли по умолчанию
  • настройки и их ограничения, которые применяются по умолчанию при входе пользователя
  • присвоенные профили настроек

Привилегии присваиваются аккаунту пользователя с помощью запроса GRANT или через назначение ролей. Отозвать привилегию можно с помощью запроса REVOKE. Чтобы вывести список присвоенных привилегий, используется выражение SHOW GRANTS.

Запросы управления:

  • CREATE USER
  • ALTER USER
  • DROP USER
  • SHOW CREATE USER

Применение настроек

Настройки могут быть заданы разными способами: для аккаунта пользователя, для назначенных ему ролей или в профилях настроек. При входе пользователя, если настройка задана для разных объектов системы доступа, значение настройки и ее ограничения применяются в следующем порядке (от высшего приоритета к низшему):

  1. Настройки аккаунта.
  2. Настройки ролей по умолчанию для аккаунта. Если настройка задана для нескольких ролей, порядок применения не определен.
  3. Настройки из профилей настроек, присвоенных пользователю или его ролям по умолчанию. Если настройка задана в нескольких профилях, порядок применения не определен.
  4. Настройки, которые по умолчанию применяются ко всему серверу, или настройки из профиля по умолчанию.

Роль

Роль — это контейнер объектов системы доступа, которые можно присвоить аккаунту пользователя.

Роль содержит:

  • привилегии
  • настройки и ограничения
  • список назначенных ролей

Запросы управления:

  • CREATE ROLE
  • ALTER ROLE
  • DROP ROLE
  • SET ROLE
  • SET DEFAULT ROLE
  • SHOW CREATE ROLE

Привилегии можно присвоить роли с помощью запроса GRANT. Для отзыва привилегий у роли ClickHouse предоставляет запрос REVOKE.

За полной документацией обращайтесь на официальный сайт ClickHouse.

Была ли статья полезна?

Да
Нет
Предыдущая
Подключение приложения к аналитической СУБД «ClickHouse»
8 (800) 555-89-028 (495) 150-31-45team@infomaximum.com
Для бизнеса
© 20102024. ООО «Инфомаксимум»
Мы используем файлы cookies, чтобы сайт был лучше для вас.