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

Контроль доступа в облаке 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, по умолчанию не имеют доступа, но могут получить либо полный доступ, либо доступ только для чтения к базам данных из консоли. Роль 'Read only' изначально предоставляет доступ только для чтения к учетной записи. Однако после предоставления доступа только для чтения может быть создана новая пользовательская роль, специально для этого пользователя SQL консоли, которая будет ассоциирована с этим пользователем при подключении к базе данных через SQL консоль.

примечание

Чтобы разрешить пользователю с ролью Developer в консоли получить доступ к SQL консоли, перейдите в меню Сервисы слева, получите доступ к сервису, щелкните Настройки, прокрутите вниз до раздела доступа к SQL консоли и выберите либо 'Full access', либо 'Read only'. После предоставления доступа используйте процесс, показанный в разделе Создание ролей 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 консоли, эти пользователи и роли независимы от пользователей и ролей консоли.

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

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

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

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

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