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

Общие запросы управления доступом

Самоуправляемый

Если вы работаете с самоуправляемым ClickHouse, пожалуйста, смотрите SQL пользователи и роли.

В этой статье представлены основы определения SQL пользователей и ролей, а также применения этих привилегий и разрешений к базам данных, таблицам, строкам и колонкам.

Администраторский пользователь

Сервисы ClickHouse Cloud имеют администратора, default, который создается при создании сервиса. Пароль предоставляется при создании сервиса и может быть сброшен пользователями ClickHouse Cloud, имеющими роль Admin.

Когда вы добавляете дополнительных SQL пользователей для вашего сервиса ClickHouse Cloud, им потребуется SQL имя пользователя и пароль. Если вы хотите, чтобы у них были привилегии на уровне администратора, назначьте новым пользователям роль default_role. Например, добавление пользователя clickhouse_admin:

примечание

При использовании SQL Консоли ваши SQL запросы не будут выполняться от имени пользователя default. Вместо этого запросы будут выполняться от имени пользователя sql-console:${cloud_login_email}, где cloud_login_email — это электронная почта пользователя, который в данный момент выполняет запрос.

Эти автоматически сгенерированные пользователи SQL Консоли имеют роль default.

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

Существует две роли, доступные для SQL консоли: sql_console_admin с аналогичными правами, что и default_role, и sql_console_read_only с правами только для чтения.

Администраторы по умолчанию получают роль sql_console_admin, поэтому для них ничего не меняется. Однако роль sql_console_read_only позволяет не администраторам иметь права только на чтение или полный доступ к любому экземпляру. Администратор должен настроить этот доступ. Роли можно регулировать с помощью команд GRANT или REVOKE для более точного соответствия конкретным требованиям экземпляра, и любые изменения, внесенные в эти роли, будут сохранены.

Гранулярный контроль доступа

Эта функция контроля доступа также может быть настроена вручную для гранулярности на уровне пользователей. Перед назначением новых ролей sql_console_* пользователям, необходимо создать ролевые базы данных, специфичные для пользователей SQL консоли, соответствующие пространству имен sql-console-role:<email>. Например:

Когда совпадающая роль обнаруживается, она будет назначена пользователю вместо стандартных ролей. Это вводит более сложные конфигурации контроля доступа, такие как создание ролей sql_console_sa_role и sql_console_pm_role, и их назначение конкретным пользователям. Например:

Проверка полномочий админа

Выйдите из системы как пользователь default и войдите заново как пользователь clickhouse_admin.

Все из следующего должно выполниться успешно:

Обычные пользователи

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

Подготовка

Создайте эти таблицы и пользователей для использования в примерах.

Создание тестовой базы данных, таблицы и строк

  1. Создайте тестовую базу данных

  2. Создайте таблицу

  3. Заполните таблицу образцовыми строками

  4. Проверьте таблицу:

  5. Создайте обычного пользователя, который будет использоваться для демонстрации ограничения доступа к определенным колонкам:

  6. Создайте обычного пользователя, который будет использоваться для демонстрации ограничения доступа к строкам с определенными значениями:

Создание ролей

С этим набором примеров:

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

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

  1. Создайте роль, чтобы ограничить пользователей этой роли только просмотром column1 в базе данных db1 и table1:

  2. Установите полномочия для разрешения просмотра column1

  3. Добавьте пользователя column_user в роль column1_users

  4. Создайте роль, чтобы ограничить пользователей этой роли только просмотром выбранных строк, в данном случае, только строк, содержащих A в column1

  5. Добавьте row_user в роль A_rows_users

  6. Создайте политику для разрешения просмотра только тех строк, где column1 имеет значение A

  7. Установите полномочия для базы данных и таблицы

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

    примечание

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

Проверка

Проверка полномочий роли с пользователем, ограниченным по колонкам

  1. Войдите в клиент ClickHouse как пользователь clickhouse_admin

  2. Проверьте доступ к базе данных, таблице и всем строкам с помощью учетной записи администратора.

  3. Войдите в клиент ClickHouse как пользователь column_user

  4. Проверьте SELECT, используя все колонки

    примечание

    Доступ отклонен, так как были указаны все колонки, а у пользователя есть доступ только к id и column1

  5. Проверьте запрос SELECT с указанными и разрешенными колонками:

Проверка полномочий роли с пользователем, ограниченным по строкам

  1. Войдите в клиент ClickHouse как row_user

  2. Просмотрите доступные строки

    примечание

    Убедитесь, что возвращены только вышеуказанные две строки, строки со значением B в column1 должны быть исключены.

Изменение пользователей и ролей

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

Например, если одна role1 разрешает только выбор из column1, а role2 разрешает выбор из column1 и column2, то у пользователя будет доступ ко обеим колонкам.

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

  2. Удалите предыдущие полномочия для роли A_rows_users

  3. Разрешите роли A_row_users выбирать только из column1

  4. Войдите в клиент ClickHouse как row_and_column_user

  5. Проверьте с использованием всех колонок:

  6. Проверьте с ограниченными разрешенными колонками:

Устранение неполадок

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

Перечень предоставленных полномочий и ролей для пользователя

Перечень ролей в ClickHouse

Отображение политик

Просмотр того, как была определена политика и текущие полномочия

Примеры команд для управления ролями, политиками и пользователями

Следующие команды можно использовать для:

  • удаления полномочий
  • удаления политик
  • исключения пользователей из ролей
  • удаления пользователей и ролей
подсказка

Запускайте эти команды как администратор или пользователь default

Удаление полномочия из роли

Удаление политики

Исключение пользователя из роли

Удаление роли

Удаление пользователя

Резюме

В этой статье продемонстрированы основы создания SQL пользователей и ролей, а также предоставлены шаги для установки и изменения полномочий пользователей и ролей. Для получения более подробной информации о каждом из них, пожалуйста, обратитесь к нашим пользовательским руководствам и справочной документации.