Перейти к основному содержимому
Перейти к основному содержимому

Создание Пользователей и Ролей в ClickHouse

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

Сущности доступа ClickHouse:

Вы можете настраивать сущности доступа с использованием:

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

примечание

Вы не можете управлять одной и той же сущностью доступа одновременно обоими методами конфигурации.

примечание

Если вы хотите управлять пользователями ClickHouse Cloud Console, пожалуйста, обратитесь к этой странице.

Чтобы увидеть всех пользователей, роли, профили и т.д., а также все их права доступа, используйте оператор SHOW ACCESS.

Обзор

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

Если вы только начали использовать 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 или путем назначения ролей. Чтобы отозвать привилегии у пользователя, ClickHouse предоставляет запрос REVOKE. Чтобы перечислить привилегии для пользователя, используйте оператор SHOW GRANTS.

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

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

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

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

Роль

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

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

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

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

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

Политика Строк

Политика строк — это фильтр, который определяет, какие строки доступны пользователю или роли. Политика строк содержит фильтры для одной конкретной таблицы, а также список ролей и/или пользователей, которые должны использовать эту политику строк.

примечание

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

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

Профиль Настроек

Профиль настроек — это коллекция настроек. Профиль настроек содержит настройки и ограничения, а также список ролей и/или пользователей, к которым этот профиль применяется.

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

Квота

Квота ограничивает использование ресурсов. См. Квоты.

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

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

Включение Удаленного Управления Доступом и Учетными Записями

  • Настройте директорию для хранения конфигураций.

    ClickHouse хранит конфигурации сущностей доступа в папке, установленной в параметре конфигурации сервера access_control_path.

  • Включите управление доступом и учетными записями на основе SQL для хотя бы одной учетной записи пользователя.

    По умолчанию управление доступом и учетными записями на основе SQL отключено для всех пользователей. Вам нужно настроить хотя бы одного пользователя в файле конфигурации users.xml и установить значения настроек access_management, named_collection_control, show_named_collections и show_named_collections_secrets на 1.

Определение Пользователей и Ролей SQL

подсказка

Если вы работаете в ClickHouse Cloud, пожалуйста, смотрите Управление доступом в облаке.

Эта статья демонстрирует основы определения пользователей SQL и ролей, а также применения этих привилегий и разрешений к базам данных, таблицам, строкам и столбцам.

Включение Режима Пользователя SQL

  1. Включите режим пользователя SQL в файле users.xml под <default> пользователем:

    примечание

    Пользователь default — это единственный пользователь, который создается при новой установке, и также это учетная запись, используемая для межузловых коммуникаций по умолчанию.

    В производственной среде рекомендуется отключить этого пользователя, как только межузловая связь была настроена с SQL администратором и межузловые коммуникации были установлены с <secret>, учетные данные кластера и/или учетные данные для протокола HTTP и транспортного уровня, так как учетная запись default используется для межузловой связи.

  2. Перезапустите узлы, чтобы применить изменения.

  3. Запустите клиент ClickHouse:

Определение Пользователей

  1. Создайте учетную запись администратора SQL:
  2. Предоставьте новому пользователю полные административные права

Права ALTER

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

Операторы ALTER делятся на несколько категорий, некоторые из которых иерархические, а некоторые нет и должны быть явно определены.

Пример конфигурации БД, таблицы и пользователя

  1. С учетной записью администратора создайте пример пользователя
  1. Создайте пример базы данных
  1. Создайте пример таблицы
  1. Создайте пример пользователя-администратора для предоставления/отзыва привилегий
примечание

Чтобы предоставить или отозвать разрешения, пользователь-администратор должен иметь привилегию WITH GRANT OPTION. Например:

Для GRANT или REVOKE привилегий пользователь должен сам сначала иметь эти привилегии.

Предоставление или Отзыв Привилегий

Иерархия ALTER:

  1. Предоставление Привилегий ALTER Пользователю или Роли

Использование GRANT ALTER on *.* TO my_user будет затрагивать только верхние уровни ALTER TABLE и ALTER VIEW, остальные операторы ALTER должны быть предоставлены или отозваны индивидуально.

например, предоставляя базовую привилегию ALTER:

Результирующий набор привилегий:

Это предоставит все разрешения под ALTER TABLE и ALTER VIEW из вышеуказанного примера, однако не предоставит определенные другие разрешения ALTER, такие как ALTER ROW POLICY (Обратитесь к иерархии, и вы увидите, что ALTER ROW POLICY не является подчиненной ALTER TABLE или ALTER VIEW). Их необходимо предоставлять или отзывать явно.

Если требуется только подмножество прав ALTER, то каждое может быть предоставлено отдельно, если есть подпривилегии для этой привилегии, то они также будут автоматически предоставлены.

Например:

Предоставленные права будут установлены как:

Это также дает следующие подпривилегии:

  1. Отзыв Привилегий ALTER у Пользователей и Ролей

Оператор REVOKE работает аналогично оператору GRANT.

Если пользователю/роли была предоставлена подпривилегия, вы можете либо отозвать эту подпривилегию напрямую, либо отозвать более высокоуровневую привилегию, которую она наследует.

Например, если пользователю была предоставлена ALTER ADD COLUMN

Привилегию можно отозвать индивидуально:

Или можно отозвать с любого из верхних уровней (отозвать все подпривилегии COLUMN):

Дополнительно

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

  1. Чтобы предоставить пользователю-администратору привилегию и также разрешить им управлять набором привилегий Ниже приведен пример:

Теперь пользователь может предоставлять или отзывать ALTER COLUMN и все подпривилегии.

Тестирование

  1. Добавьте привилегию SELECT
  1. Добавьте привилегию на добавление столбца пользователю
  1. Войдите с ограниченным пользователем
  1. Проверьте добавление столбца
  1. Проверьте удаление столбца
  1. Тестирование администратора изменения путем предоставления разрешения
  1. Войдите с пользователем администратора изменения
  1. Предоставьте подпривилегию
  1. Проверьте предоставление привилегии, которую пользователь администрации изменения не имеет, и которая не является подпривилегией предоставленных администратору.

Резюме Привилегии ALTER имеют иерархическую структуру для ALTER с таблицами и видами, но не для других операторов ALTER. Разрешения могут устанавливаться на детальном уровне или группами привилегий и также отозваны таким же образом. Пользователь, предоставляющий или отзывающий, должен иметь WITH GRANT OPTION, чтобы устанавливать привилегии на пользователей, включая самого действующего пользователя, и уже должен иметь соответствующие привилегии. Действующий пользователь не может отозвать свои собственные привилегии, если у него нет привилегии на предоставление прав.