Контроль доступа в облаке 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. Разрешения, связанные с каждой ролью, приведены ниже.
Компонент | Функция | Admin | Developer | Billing |
---|---|---|---|---|
Управление сервисом | Просмотр сервиса | ✅ | ✅ | ❌ |
Создание сервиса | ✅ | ❌ | ❌ | |
Удаление сервиса | ✅ | ❌ | ❌ | |
Остановка сервиса | ✅ | ❌ | ❌ | |
Перезапуск сервиса | ✅ | ❌ | ❌ | |
Сброс пароля сервиса | ✅ | ❌ | ❌ | |
Просмотр метрик сервиса | ✅ | ✅ | ❌ | |
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 консоли и предоставить ей общую роль, выполните следующие команды. Адрес электронной почты должен совпадать с адресом электронной почты пользователя в консоли.
- Создайте роль database_developer и предоставьте разрешения SHOW, CREATE, ALTER и DELETE.
- Создайте роль для пользователя SQL консоли my.user@domain.com и назначьте ей роль database_developer.
При использовании этой конструкции роли запрос на отображение доступа пользователя необходимо изменить, чтобы включить предоставление роли к роли, когда пользователь не присутствует.
Роли базы данных
Пользователи и пользовательские роли также могут быть созданы непосредственно в базе данных с использованием операторов CREATE User, CREATE Role и GRANT. Кроме ролей, созданных для SQL консоли, эти пользователи и роли независимы от пользователей и ролей консоли.
Роли базы данных являются аддитивными. Это означает, что если пользователь является членом двух ролей, у него есть самые широкие разрешения, предоставленные двумя ролями. Они не теряют доступ, добавляя роли.
Роли базы данных могут быть предоставлены другим ролям, что приводит к иерархической структуре. Роли унаследуют все разрешения ролей, в которых они состоят.
Роли базы данных уникальны для каждого сервиса и могут применяться к нескольким базам данных в рамках одного и того же сервиса.
Иллюстрация ниже показывает различные способы, которыми пользователю могут быть предоставлены разрешения.