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

Контроль доступа в облаке ClickHouse

ClickHouse контролирует доступ пользователей в двух местах: через консоль и через базу данных. Доступ к консоли управляется через интерфейс пользователя clickhouse.cloud. Доступ к базе данных управляется через учетные записи пользователей базы данных и роли. Кроме того, пользователям консоли могут присваиваться роли внутри базы данных, что позволяет пользователю консоли взаимодействовать с базой данных через нашу SQL-консоль.

Типы ролей

Ниже описаны различные типы доступных ролей:

  • Роль консоли Позволяет получить доступ к консоли clickhouse.cloud
  • Роль базы данных Позволяет управлять правами доступа внутри одной службы
  • Роль SQL-консоли Специально именованная роль базы данных, которая позволяет пользователю консоли получать доступ к базе данных с назначенными правами через SQL-консоль.

Предопределенные роли

ClickHouse Cloud предлагает ограниченное количество предопределенных ролей для управления доступом. Дополнительные настраиваемые роли базы данных могут быть созданы в любое время с использованием команд CREATE ROLE и GRANT в базе данных.

КонтекстНазвание ролиОписание
КонсольAdminПолный доступ к организации ClickHouse
КонсольDeveloperДоступ только для чтения к организации ClickHouse
КонсольBillingДоступ для просмотра информации о выставлении счетов и использовании, управление методами оплаты и контактами по выставлению счетов
SQL-консольsql_console_adminАдминистративный доступ к базе данных
SQL-консольsql_console_read_onlyДоступ только для чтения к базе данных
База данныхdefaultАдминистративный доступ к базе данных; автоматически предоставляется пользователю default при создании службы

Начальные настройки

Первый пользователь, настраивающий вашу учетную запись ClickHouse Cloud, автоматически получает роль Admin в консоли. Этот пользователь может приглашать дополнительных пользователей в организацию и назначать пользователям либо роль Admin, либо роль Developer.

примечание

Чтобы изменить роль пользователя в консоли, перейдите в меню Пользователи слева и измените роль пользователя в выпадающем списке.

В базах данных имеется учетная запись с именем default, которая добавляется автоматически и получает default_role при создании службы. Пользователю, который создает службу, предоставляется автоматически сгенерированный случайный пароль, назначаемый учетной записи default при создании службы. Пароль не отображается после начальной настройки, но может быть изменен любым пользователем с правами Admin в консоли позже. Эта учетная запись или учетная запись с правами Admin внутри консоли может в любое время настраивать дополнительные учетные записи пользователей базы данных и роли.

примечание

Чтобы изменить пароль, присвоенный учетной записи default в консоли, перейдите в меню Службы слева, получите доступ к услуге, перейдите на вкладку Настройки и нажмите кнопку Сброс пароля.

Рекомендуется создать новую учетную запись пользователя, связанную с физическим лицом, и предоставить пользователю default_role. Это необходимо, чтобы действия, выполняемые пользователями, были связаны с их идентификаторами пользователей, а учетная запись default была зарезервирована для экстренных ситуаций.

Пользователи могут использовать генератор SHA256 хешей или функцию кода, такую как hashlib в Python, чтобы преобразовать пароль длиной 12 и более символов с соответствующей сложностью в строку SHA256, которую нужно предоставить системному администратору в качестве пароля. Это гарантирует, что администратор не видит и не обрабатывает открытые текстовые пароли.

Роли консоли

Пользователи консоли должны быть назначены на роль и могут быть назначены на роль Admin или Developer. Связанные с каждой ролью разрешения указаны ниже.

КомпонентФункцияAdminDeveloperBilling
Управление службойПросмотр службы
Создание службы
Удаление службы
Остановка службы
Перезапуск службы
Сброс пароля службы
Просмотр метрик службы
Cloud APIПросмотр записей ключей API
Создание ключа APIДоступ только для чтения
Удаление ключа APIСвой ключ
Управление пользователями консолиПросмотр пользователей
Приглашение пользователей
Изменение роли пользователя
Удаление пользователей
Выставление счетов, организация и поддержкаПросмотр выставления счетов
Управление выставлением счетов
Просмотр активности организации
Отправка запросов на поддержку
Просмотр интеграций

Роли SQL-консоли

Наша консоль включает SQL-консоль для взаимодействия с базами данных с использованием аутентификации без пароля. Пользователи, которым предоставлены права Admin в консоли, имеют административный доступ ко всем базам данных в организации. Пользователи, которым назначена роль Developer, изначально не имеют доступа, но могут получить либо 'Полный доступ', либо 'Только для чтения' к разрешениям базы данных из консоли. Роль 'Только для чтения' изначально предоставляет доступ только для чтения к учетной записи. Однако после предоставления доступа только для чтения может быть создана новая настраиваемая роль, специально для этого пользователя SQL-консоли, которая будет связана с пользователем при подключении к базе данных через SQL-консоль.

примечание

Чтобы предоставить пользователю с ролью Developer в консоли доступ к SQL-консоли, перейдите в меню Сервис слева, получите доступ к услуге, нажмите Настройки, прокрутите вниз до раздела доступа к SQL-консоли и выберите либо 'Полный доступ', либо 'Только для чтения'. После предоставления доступа используйте процесс, показанный в разделе Создание ролей SQL-консоли ниже, для назначения настраиваемых ролей.

Дополнительно о аутентификации без пароля

Пользователи SQL-консоли создаются для каждой сессии и аутентифицируются с использованием сертификатов X.509, которые автоматически обновляются. Пользователь удаляется, когда сессия заканчивается. При создании списков доступа для аудитов, пожалуйста, перейдите на вкладку Настройки для услуги в консоли и обратите внимание на доступ к SQL-консоли в дополнение к пользователям базы данных, существующим в базе данных. Если настроены настраиваемые роли, доступ пользователя указан в роли, заканчивающейся именем пользователя.

Создание ролей SQL-консоли

Настраиваемые роли могут быть созданы и ассоциированы с пользователями SQL-консоли. Поскольку SQL-консоль создает новую учетную запись пользователя каждый раз, когда пользователь открывает новую сессию, система использует соглашения об именовании ролей, чтобы ассоциировать настраиваемые роли базы данных с пользователем. Это означает, что каждому пользователю назначается отдельная роль. Отдельные роли могут быть назначены доступ напрямую с помощью оператора GRANT или пользователи могут создавать новые общие роли, такие как database_developer или security_administrator, и назначать доступ отдельным ролям пользователей через более общие роли.

Чтобы создать настраиваемую роль для пользователя SQL-консоли и предоставить ему общую роль, выполните следующие команды. Электронная почта должна совпадать с электронной почтой пользователя в консоли.

  1. Создайте роль database_developer и предоставьте разрешения SHOW, CREATE, ALTER и DELETE.
  1. Создайте роль для пользователя SQL-консоли my.user@domain.com и назначьте ей роль database_developer.

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

Роли базы данных

Пользователи и настраиваемые роли также могут быть созданы внутри базы данных напрямую с использованием команд CREATE User, CREATE Role и GRANT. Эти пользователи и роли независимы от пользователей и ролей консоли, за исключением ролей, созданных для SQL-консоли.

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

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

Роли базы данных уникальны для каждой службы и могут применятьAcross различным базам данных в одной и той же службе.

На иллюстрации ниже показаны различные способы предоставления пользователю разрешений.

Скриншот 2024-01-18 в 17:14:41