В статье рассмотрим, как создать пользователя ClickHouse и настроить учетную запись (добавить пароль, выдать права).
Создаем пользователя в системе
Допустим, нам нужно создать нового пользователя под именем timeweb_admin. Это делает команда ClickHouse CREATE USER:
Мы создали пользователя и задали пароль. Но задать пароль можно и по-другому. Основные настройки пользователей ClickHouse находятся в файле конфигурации users.xml (этот файл находится в директории /etc/clickhouse-server/ на сервере, где установлен ClickHouse) в разделе users. Открываем этот файл и создаем такие строки:
Это значит, что мы можем присвоить как обычный пароль, так и в 16-ричном формате, оставив одно из значений по умолчанию (пустым). Если мы создаем базу данных для тестов или там нет какой-то конфиденциальной информации, можно воспользоваться и обычным паролем, например:
В противном случае вводим пароль в 16-ричном формате (0-f), а первое значение оставляем пустым, например, так:
Получить хэш для определенной строки можно так:
Если же вы собираетесь работать с одним из клиентов MySQL, понадобится создать пароль типа SHA1, который добавляется при помощи следующего тега:
Получить хэш можно аналогично:
DBaaS
оптимизируйте процессы DevOps и CI/CD.
Настраиваем права пользователя ClickHouse
Пока наш созданный пользователь не имеет каких-либо особых привилегий. Давайте назначим ему роль админа через команду GRANT.
В файле users.xml обратите внимание на тег <access_management></access_management>, который может принимать значения 0 и 1. Если выставить значение 1 здесь:
то активируется управление доступом через SQL.
Теперь настраиваем сеть, через которые мы будем получать доступ к ClickHouse. Для этого ищем блок <networks></networks> в конфигурационном файле и прописываем там нужные IP-адреса в любом из подходящих форматов: IPv4 или IPv6. Пример конфигурации:
Указать локальный доступ можно, прописав внутри следующее (подставьте нужный IP):
Ограничиваем доступ к данным
Иногда полезно ограничить пользователя, дав ему доступ только к определенным частям базы данных. Давайте создадим нового пользователя и сделаем так, чтобы он получил доступ только к определенным строкам в таблице базы данных. Создаем пользователя:
Далее нам понадобится создать представление (view), которое фильтрует данные на основе определенных условий, и предоставить доступ к этому представлению пользователю, ограничивая тем самым его видимость данных. Представление создается так (замените значения original_table, some_column и certain_value на нужные):
А теперь предоставляем нашему пользователю права на это представление:
Теперь нам нужно проверить, что права были выданы корректно. Для этого мы можем использовать запросы к системным таблицам, таким как system.grants и system.privileges, например:
Теперь, если вы увидите строку с правами SELECT, значит, права выданы корректно.
Разверните ClickHouse на облачном сервере
477 ₽/мес
657 ₽/мес
Удаление учетной записи пользователя
Если пользователь больше не актуален, учетную запись можно удалить. Это делается с использованием команды DROP:
На этом всё, мы узнали, как работать с учетными записями в ClickHouse: создавать, настраивать права и удалять их.
