В этом руководстве показаны два способа управления пользователями базы данных: через консоль SQL и непосредственно в базе данных.
Беспарольная аутентификация в консоли SQL
Пользователи консоли SQL создаются для каждого сеанса и проходят аутентификацию с помощью сертификатов X.509, которые автоматически обновляются. Пользователь удаляется после завершения сеанса. При составлении списков доступа для аудита перейдите на вкладку Settings сервиса в консоли и учитывайте доступ к консоли SQL наряду с пользователями базы данных, существующими в базе данных. Если настроены пользовательские роли, доступ пользователя указан в роли, имя которой оканчивается на его имя пользователя.
Пользователи и роли консоли SQL
Базовые роли консоли SQL можно назначать пользователям с разрешениями Service Read Only и Service Admin. Подробнее см. в разделе Управление назначением ролей консоли SQL. В этом руководстве показано, как создать пользовательскую роль для пользователя консоли SQL.
Чтобы создать пользовательскую роль для пользователя консоли SQL и назначить ей роль общего назначения, выполните следующие команды. Адрес электронной почты должен совпадать с адресом электронной почты пользователя в консоли.
[object Object]
Создайте роль database_developer и выдайте разрешения SHOW, CREATE, ALTER и DELETE.
CREATE ROLE OR REPLACE database_developer;
GRANT SHOW ON * TO database_developer;
GRANT CREATE ON * TO database_developer;
GRANT ALTER ON * TO database_developer;
GRANT DELETE ON * TO database_developer;Создайте роль пользователя консоли SQL
Создайте роль для пользователя консоли SQL my.user@domain.com и назначьте ей роль database_developer.
CREATE ROLE OR REPLACE `sql-console-role:my.user@domain.com`;
GRANT database_developer TO `sql-console-role:my.user@domain.com`;При использовании консоли SQL пользователю назначается новая роль
Каждый раз, когда пользователь работает в консоли SQL, ему назначается роль, связанная с его адресом электронной почты.
Аутентификация в базе данных
Идентификатор пользователя базы данных и пароль
Используйте метод SHA256_hash при создании учётных записей пользователей для защиты паролей. Пароли пользователей базы данных ClickHouse должны содержать не менее 12 символов и соответствовать требованиям сложности: включать прописные и строчные буквы, цифры и/или специальные символы.
CREATE USER userName IDENTIFIED WITH sha256_hash BY 'hash';Пользователь базы данных с SSH-аутентификацией
Чтобы настроить SSH-аутентификацию для пользователя базы данных ClickHouse Cloud.
- С помощью ssh-keygen создайте пару ключей.
- Используйте открытый ключ, чтобы создать пользователя.
- Назначьте пользователю роли и/или разрешения.
- Используйте закрытый ключ для аутентификации в сервисе.
Подробное пошаговое руководство с примерами см. в статье How to connect to ClickHouse Cloud using SSH keys в нашей базе знаний.
Разрешения на уровне базы данных
Настройте следующие параметры в сервисах и базах данных с помощью SQL-оператора GRANT.
| Role | Description |
|---|---|
| По умолчанию | Полный административный доступ к сервисам |
| Пользовательская | Настраивается с помощью SQL-оператора GRANT |
- Роли базы данных являются аддитивными. Это означает, что если пользователь состоит в двух ролях, он получает максимальный уровень доступа из предоставленных этими ролями. При добавлении ролей доступ не теряется.
- Роли базы данных могут выдаваться другим ролям, образуя иерархическую структуру. Роли наследуют все разрешения ролей, в которые они входят.
- Роли базы данных уникальны для каждого сервиса и могут применяться к нескольким базам данных в рамках одного сервиса.
На иллюстрации ниже показаны различные способы выдачи разрешений пользователю.

Начальные настройки
В базах данных автоматически создается учетная запись с именем default, и при создании сервиса ей назначается default_role. Пользователю, который создает сервис, показывается автоматически сгенерированный случайный пароль, назначенный учетной записи default при создании сервиса. После первоначальной настройки пароль больше не отображается, но позже его может изменить любой пользователь с правами Service Admin в консоли. Эта учетная запись или учетная запись с привилегиями Service Admin в консоли может в любое время создавать дополнительных пользователей базы данных и роли.
Мы рекомендуем создать новую учетную запись пользователя, связанную с конкретным человеком, и выдать этому пользователю default_role. Это нужно для того, чтобы действия пользователей можно было соотнести с их идентификаторами, а учетная запись default оставалась зарезервированной для аварийного доступа.
CREATE USER userID IDENTIFIED WITH sha256_hash by 'hashed_password';
GRANT default_role to userID;Вы можете использовать генератор SHA256-хеша или такую библиотеку, как hashlib в Python, чтобы преобразовать пароль длиной не менее 12 символов с достаточной сложностью в строку SHA256 и передать её системному администратору в качестве пароля. Это гарантирует, что администратор не увидит пароль и не будет работать с ним в открытом виде.
Списки доступа к базе данных для пользователей консоли SQL
Следующий процесс можно использовать, чтобы получить полный список доступа в консоли SQL и базах данных вашей организации.
Получите список всех привилегий в базе данных
Выполните следующие запросы, чтобы получить список всех привилегий в базе данных.
SELECT grants.user_name,
grants.role_name,
users.name AS role_member,
grants.access_type,
grants.database,
grants.table
FROM system.grants LEFT OUTER JOIN system.role_grants ON grants.role_name = role_grants.granted_role_name
LEFT OUTER JOIN system.users ON role_grants.user_name = users.name
UNION ALL
SELECT grants.user_name,
grants.role_name,
role_grants.role_name AS role_member,
grants.access_type,
grants.database,
grants.table
FROM system.role_grants LEFT OUTER JOIN system.grants ON role_grants.granted_role_name = grants.role_name
WHERE role_grants.user_name is null;Сопоставьте список привилегий с пользователями консоли, у которых есть доступ к консоли SQL
Сопоставьте этот список с пользователями консоли, у которых есть доступ к консоли SQL.
a. Перейдите в консоль.
b. Выберите нужный сервис.
c. Слева выберите Settings.
d. Прокрутите до раздела доступа к консоли SQL.
e. Нажмите ссылку с количеством пользователей, имеющих доступ к базе данных: There are # users with access to this service., чтобы открыть список пользователей.
Пользователи хранилища
Пользователи хранилища общие для всех сервисов в рамках одного хранилища. Подробнее см. в разделе управление доступом к хранилищу.