Контроль доступа в ClickHouse Cloud
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, не имеют доступ по умолчанию, но могут получить либо 'Полный доступ', либо 'Только для чтения' к базе данных из консоли. Роль 'Только для чтения' изначально предоставляет доступ только для чтения к учетной записи. Однако, как только доступ только для чтения предоставляется, может быть создана новая пользовательская роль, специально для этого пользователя SQL консоли, которая будет ассоциирована с этим пользователем, когда он будет использоваться для подключения к базе данных через SQL консоль.
Чтобы предоставить пользователю с ролью Developer в консоли доступ к SQL консоли, перейдите в меню Сервисы слева, получите доступ к сервису, нажмите Настройки, прокрутите вниз до раздела доступа к SQL консоли и выберите либо 'Полный доступ', либо 'Только для чтения'. После предоставления доступа используйте процесс, показанный в Создание ролей SQL консоли ниже, чтобы назначить пользовательские роли.
Подробнее о безпарольной аутентификации
Пользователи SQL консоли создаются для каждой сессии и аутентифицируются с использованием сертификатов X.509, которые автоматически вращаются. Пользователь удаляется при завершении сессии. При создании списков доступа для аудитов, пожалуйста, перейдите на вкладку Настройки для сервиса в консоли и обратите внимание на доступ к SQL консоли в дополнение к пользователям базы данных, которые существуют в базе данных. Если пользовательские роли настроены, доступ пользователя отображается в роли, заканчивающейся на имя пользователя.
Создание ролей SQL консоли
Пользовательские роли могут быть созданы и ассоциированы с пользователями SQL консоли. Поскольку SQL консоль создает новую учетную запись пользователя каждый раз, когда пользователь открывает новую сессию, система использует соглашения именования ролей для ассоциирования пользовательских ролей базы данных с пользователем. Это означает, что каждому пользователю назначается индивидуальная роль. Индивидуальные роли могут быть предоставлены доступом напрямую через оператор GRANT, или пользователи могут установить новые общие роли, такие как database_developer или security_administrator, и предоставлять доступ индивидуальным ролям пользователей через более общие роли.
Чтобы создать пользовательскую роль для пользователя SQL консоли и предоставить ей общую роль, выполните следующие команды. Адрес электронной почты должен соответствовать адресу электронной почты пользователя в консоли.
- Создайте роль database_developer и предоставьте разрешения SHOW, CREATE, ALTER и DELETE.
- Создайте роль для пользователя SQL консоли [email protected] и назначьте ей роль database_developer.
При использовании этой конструкции ролей запрос для отображения доступа пользователя должен быть изменен, чтобы включать грант ролей к ролям, когда пользователь отсутствует.
Роли базы данных
Пользователи и пользовательские роли также могут быть созданы непосредственно в базе данных с использованием операторов CREATE User, CREATE Role и GRANT. В отличие от ролей, созданных для SQL консоли, эти пользователи и роли независимы от пользователей и ролей консоли.
Роли базы данных являются аддитивными. Это означает, что если пользователь является членом двух ролей, пользователь имеет доступ, предоставленный к двум ролям, наибольший. Они не теряют доступ при добавлении ролей.
Роли базы данных могут быть предоставлены другим ролям, что приводит к иерархической структуре. Роли наследуют все разрешения тех ролей, для которых они являются членами.
Роли базы данных уникальны для каждого сервиса и могут применяться в нескольких базах данных в рамках одного и того же сервиса.
Иллюстрация ниже показывает различные способы предоставления разрешений пользователю.