Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Управление пользователями базы данных

В этом руководстве показаны два способа управления пользователями базы данных: через консоль 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.

  1. С помощью ssh-keygen создайте пару ключей.
  2. Используйте открытый ключ, чтобы создать пользователя.
  3. Назначьте пользователю роли и/или разрешения.
  4. Используйте закрытый ключ для аутентификации в сервисе.

Подробное пошаговое руководство с примерами см. в статье 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., чтобы открыть список пользователей.

Пользователи хранилища

Пользователи хранилища общие для всех сервисов в рамках одного хранилища. Подробнее см. в разделе управление доступом к хранилищу.

Navigation