Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Managed Service for ClickHouse
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к базе данных
    • Остановка и запуск кластера
    • SQL-запросы в консоли управления
    • Изменение настроек кластера и базы данных
    • Настройка доступа к ObjectStorage
    • Подключение внешних словарей
    • Подключение собственной геобазы
    • Управление моделями машинного обучения
    • Управление схемами формата данных
    • Подключение к DataLens
    • Изменение версии ClickHouse
    • Управление хостами ZooKeeper
    • Управление хостами ClickHouse
    • Управление базами данных
    • Управление пользователями БД
    • Управление резервными копиями
    • Управление шардами
    • Управление группами шардов
    • Просмотр логов кластера
    • Удаление кластера
    • Мониторинг состояния кластера и хостов
  • Практические руководства
    • Все сценарии
    • Добавление данных в БД
    • Шардирование таблиц
    • Использование гибридного хранилища
    • Получение данных из Managed Service for Apache Kafka®
    • Получение данных из RabbitMQ
    • Обмен данными с Yandex Data Proc
    • Настройка Yandex Cloud DNS для доступа к кластеру из других облачных сетей
    • Анализ логов Object Storage при помощи DataLens
    • Настройка Managed Service for ClickHouse для Graphite
    • Сохранение потока данных Yandex Data Streams в Managed Service for ClickHouse
    • Миграция базы данных из Google BigQuery в Managed Service for ClickHouse
    • Поставка данных из Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
      • Действующие классы хостов
      • Архив
        • До 1 июня 2020 года
      • Использование устаревших классов хостов
    • Сеть в Managed Service for ClickHouse
    • Квоты и лимиты
    • Типы дисков
    • Резервные копии
    • Репликация
    • Словари
    • Шардирование
    • Техническое обслуживание
    • Поддерживаемые клиенты
    • Управление памятью в Managed Service for ClickHouse
    • Политика работы с версиями ClickHouse
    • Настройки ClickHouse
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 января 2019 года
      • С 1 января до 1 марта 2019 года
      • С 1 марта 2019 года до 1 февраля 2020 года
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • BackupService
      • ClusterService
      • DatabaseService
      • FormatSchemaService
      • MlModelService
      • ResourcePresetService
      • UserService
      • VersionsService
      • OperationService
    • REST (англ.)
      • Overview
      • Backup
        • Overview
        • get
        • list
      • Cluster
        • Overview
        • addHosts
        • addShard
        • addZookeeper
        • backup
        • create
        • createExternalDictionary
        • createShardGroup
        • delete
        • deleteExternalDictionary
        • deleteHosts
        • deleteShard
        • deleteShardGroup
        • get
        • getShard
        • getShardGroup
        • list
        • listBackups
        • listExternalDictionaries
        • listHosts
        • listLogs
        • listOperations
        • listShardGroups
        • listShards
        • move
        • rescheduleMaintenance
        • restore
        • start
        • stop
        • streamLogs
        • update
        • updateExternalDictionary
        • updateHosts
        • updateShard
        • updateShardGroup
      • Database
        • Overview
        • create
        • delete
        • get
        • list
      • FormatSchema
        • Overview
        • create
        • delete
        • get
        • list
        • update
      • MlModel
        • Overview
        • create
        • delete
        • get
        • list
        • update
      • ResourcePreset
        • Overview
        • get
        • list
      • User
        • Overview
        • create
        • delete
        • get
        • grantPermission
        • list
        • revokePermission
        • update
      • Versions
        • Overview
        • list
      • Operation
        • Overview
        • get
  • История изменений
  • Вопросы и ответы
    • Общие вопросы
    • Вопросы о ClickHouse
    • Подключение
    • Изменение кластера
    • Настройки параметров кластера
    • Перемещение и восстановление кластера
    • Мониторинг и логи
    • Все вопросы на одной странице
  1. Пошаговые инструкции
  2. Управление пользователями БД

Управление пользователями ClickHouse

Статья создана
Yandex Cloud
,
улучшена
amatol
  • Управление пользователями через SQL
  • Получить список пользователей
  • Добавить пользователя
  • Изменить пароль
  • Изменить пароль пользователя admin
  • Изменить настройки пользователя
  • Удалить пользователя
  • Примеры
    • Создание пользователя с настройкой «только чтение»

Managed Service for ClickHouse позволяет управлять пользователями и их индивидуальными настройками двумя способами:

  • С помощью стандартных интерфейсов Yandex Cloud (CLI, API, консоль управления). Способ подходит, если вы хотите добавлять, изменять и удалять пользователей и их индивидуальные настройки, используя возможности сервиса Yandex Managed Service for ClickHouse.
  • С помощью SQL-запросов к кластеру. Способ подходит, если вы хотите использовать уже существующее у вас решение для создания и управления пользователями или если вы используете RBAC.

Управление пользователями через SQL

Чтобы включить управление, выберите опцию Управление пользователями через SQL при создании или изменении настроек кластера.

В кластере с включенным управлением пользователями через SQL:

  • Управление пользователями через стандартные интерфейсы Yandex Cloud (CLI, API, консоль управления) недоступно.
  • Невозможно включить управление пользователями с помощью стандартных интерфейсов Yandex Cloud.
  • Существующие пользователи и настройки пользователей, созданные с помощью стандартных интерфейсов Yandex Cloud, будут сохранены.
  • Управление пользователями осуществляется с помощью учетной записи admin. Пароль для нее задается при выборе опции Управление пользователями через SQL.

Подробнее об управлении пользователями через SQL см. в документации ClickHouse.

Получить список пользователей

Консоль управления
CLI
SQL
API
  1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
  2. Нажмите на имя нужного кластера, затем выберите вкладку Пользователи.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы получить список пользователей кластера, выполните команду:

yc managed-clickhouse user list
   --cluster-name=<имя кластера>

Имя кластера можно запросить со списком кластеров в каталоге.

  1. Подключитесь к кластеру, используя учетную запись admin.

  2. Получите список пользователей:

    SHOW USERS;
    

Воспользуйтесь методом API list и передайте в запросе идентификатор кластера в параметре clusterId.

Идентификатор кластера можно получить со списком кластеров в каталоге.

Добавить пользователя

Консоль управления
CLI
Terraform
SQL
API
  1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.

  2. Нажмите на имя нужного кластера и выберите вкладку Пользователи.

  3. Нажмите кнопку Добавить.

  4. Введите имя пользователя базы данных и пароль.

    Примечание

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

    Длина пароля от 8 до 128 символов.

  5. Выберите одну или несколько баз данных, к которым должен иметь доступ пользователь:

    1. Нажмите на значок и выберите базу данных из выпадающего списка.
    2. Повторите предыдущий шаг, пока не будут выбраны все требуемые базы данных.
    3. Чтобы удалить базу, добавленную по ошибке, нажмите на значок справа от имени базы.
  6. Задайте дополнительные настройки для пользователя:

    1. Настройте квоты в разделе Дополнительные настройки → Quotas:
      1. Чтобы добавить квоту, нажмите на значок или кнопку + Quotas. Вы можете добавить несколько квот, которые будут действовать одновременно.
      2. Чтобы удалить квоту, нажмите на значок справа от имени квоты и выберите пункт Удалить.
      3. Чтобы изменить квоту, задайте требуемые значения настроек для нее.
    2. Настройте ClickHouse в разделе Дополнительные настройки → Settings.
  7. Нажмите кнопку Добавить.

См. также: пример создания пользователя с правами «только чтение».

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы создать пользователя в кластере, выполните команду:

yc managed-clickhouse user create <имя пользователя> \
   --cluster-name=<имя кластера> \
   --password=<пароль пользователя> \
   --permissions=<список баз, к которым пользователь должен иметь доступ> \
   --quota=<список настроек одной квоты для пользователя> \
   --settings=<список настроек ClickHouse для пользователя>

Примечание

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

Длина пароля от 8 до 128 символов.

Подробнее о квотах и настройках ClickHouse читайте в разделе Настройки ClickHouse.

Чтобы задать несколько квот, перечислите их, используя требуемое количество параметров --quota в команде:

yc managed-clickhouse user create <имя пользователя> \
   ...
   --quota="<настройки квоты 0>" \
   --quota="<настройки квоты 1>" \
   ...

Имя кластера можно запросить со списком кластеров в каталоге.

См. также: пример создания пользователя с правами «только чтение».

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание ClickHouse-кластера.

  2. Добавьте к описанию кластера Managed Service for ClickHouse блок user:

    resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
      ...
      user {
        name     = "<имя пользователя>"
        password = "<пароль>"
        ...
      }
    }
    

    Примечание

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

    Длина пароля от 8 до 128 символов.

  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse:

  • создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
  • изменение — 90 минут;
  • удаление — 30 минут.

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

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}
  1. Подключитесь к кластеру, используя учетную запись admin.

  2. Создайте пользователя:

    CREATE USER <имя пользователя> IDENTIFIED WITH sha256_password BY '<пароль пользователя>';
    

    Примечание

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

    Длина пароля от 8 до 128 символов.

Подробнее о создании пользователей см. в документации ClickHouse.

Воспользуйтесь методом API create и передайте в запросе:

  • Идентификатор кластера в параметре clusterId. Идентификатор кластера можно получить со списком кластеров в каталоге.
  • Имя нового пользователя в параметре userSpec.name.
  • Пароль нового пользователя в параметре userSpec.password.
  • (Опционально) Список баз, к которым пользователь должен иметь доступ, в параметре userSpec.permissions[].
  • (Опционально) Список настроек ClickHouse для пользователя в параметре userSpec.settings.
  • (Опционально) Список настроек квот для пользователя в параметре userSpec.quotas[].

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

Консоль управления
CLI
Terraform
SQL
API
  1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
  2. Нажмите на имя нужного кластера и выберите вкладку Пользователи.
  3. Нажмите на значок и выберите пункт Изменить пароль.
  4. Задайте новый пароль и нажмите кнопку Изменить.

Примечание

Длина пароля от 8 до 128 символов.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

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

yc managed-clickhouse user update <имя пользователя> \
   --cluster-name=<имя кластера> \
   --password=<новый пароль>

Примечание

Длина пароля от 8 до 128 символов.

Имя кластера можно запросить со списком кластеров в каталоге.

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание ClickHouse-кластера.

  2. Найдите в описании кластера Managed Service for ClickHouse блок user для нужного пользователя.

  3. Измените значение поля password:

    resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
      ...
      user {
        name     = "<имя пользователя>"
        password = "<новый пароль>"
        ...
      }
    }
    

    Примечание

    Длина пароля от 8 до 128 символов.

  4. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  5. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse:

  • создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
  • изменение — 90 минут;
  • удаление — 30 минут.

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

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}
  1. Подключитесь к кластеру, используя учетную запись admin.

  2. Измените пароль пользователя:

    ALTER USER <имя пользователя> IDENTIFIED BY '<новый пароль>';
    

    Примечание

    Длина пароля от 8 до 128 символов.

Подробнее об изменении пользователей см. в документации ClickHouse.

Воспользуйтесь методом API update и передайте в запросе:

  • Идентификатор кластера в параметре clusterId. Чтобы узнать идентификатор, получите список кластеров в каталоге.

  • Новый пароль в параметре password.

    Примечание

    Длина пароля от 8 до 128 символов.

  • Список полей конфигурации пользователя, которые необходимо изменить (в данном случае — password), в параметре updateMask.

Важно

Этот метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask (одной строкой через запятую).

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

CLI
Terraform
SQL
API

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы изменить пароль пользователя admin, выполните команду:

yc managed-clickhouse cluster update <идентификатор или имя кластера> \
  --admin-password <новый пароль пользователя admin>

Примечание

Длина пароля от 8 до 128 символов.

Идентификатор и имя кластера можно запросить со списком кластеров в каталоге.

Совет

  • Для повышения безопасности вместо --admin-password используйте параметр --read-admin-password: новый пароль нужно будет ввести с клавиатуры, и он не сохранится в истории команд.
  • Чтобы сгенерировать пароль автоматически, используйте параметр --generate-admin-password. Ответ на команду будет содержать новый пароль.
  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание ClickHouse-кластера.

  2. Измените значение поля admin_password:

    resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
      ...
      admin_password = "<пароль пользователя admin>"
      ...
    }
    

    Примечание

    Длина пароля от 8 до 128 символов.

  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse:

  • создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
  • изменение — 90 минут;
  • удаление — 30 минут.

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

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}
  1. Подключитесь к кластеру от имени пользователя admin.

  2. Выполните SQL-запрос:

    ALTER USER admin IDENTIFIED BY '<новый пароль>';
    

    Примечание

    Длина пароля от 8 до 128 символов.

Подробнее см. в документации ClickHouse.

Воспользуйтесь методом API update и передайте в запросе:

  • Идентификатор кластера в параметре clusterId. Чтобы узнать идентификатор, получите список кластеров в каталоге.

  • Новый пароль в параметре configSpec.adminPassword.

    Примечание

    Длина пароля от 8 до 128 символов.

  • Список полей конфигурации пользователя, которые необходимо изменить (в данном случае — configSpec.adminPassword), в параметре updateMask.

Важно

Этот метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask (одной строкой через запятую).

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

Консоль управления
CLI
Terraform
SQL
API
  1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
  2. Нажмите на имя нужного кластера и выберите вкладку Пользователи.
  3. Нажмите на значок и выберите пункт Настроить.
  4. Настройте права пользователя на доступ к определенным базам данных:
    1. Чтобы предоставить доступ к требуемым базам данных:
      1. Нажмите на значок и выберите базу данных из выпадающего списка.
      2. Повторите предыдущий шаг, пока не будут выбраны все требуемые базы данных.
    2. Чтобы удалить базу, нажмите на значок справа от имени базы.
  5. Настройте квоты для пользователя в разделе Дополнительные настройки → Quotas:
    1. Чтобы добавить квоту, нажмите + Quotas. Вы можете добавить несколько квот, которые будут действовать одновременно.
    2. Чтобы удалить квоту, нажмите на значок справа от имени квоты и выберите пункт Удалить.
    3. Чтобы изменить квоту, задайте требуемые значения настроек для нее.
  6. Измените настройки ClickHouse для пользователя в разделе Дополнительные настройки → Settings.
  7. Нажмите кнопку Сохранить.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Из интерфейса командной строки можно изменить настройки пользователя:

  1. Чтобы настроить права пользователя на доступ к определенным базам данных, выполните команду, перечислив список имен баз данных с помощью параметра --permissions:

    yc managed-clickhouse user update <имя пользователя> \
       --cluster-name=<имя кластера> \
       --permissions=<список баз, к которым пользователь должен иметь доступ>
    

    Имя кластера можно запросить со списком кластеров в каталоге.

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

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

  2. Чтобы изменить настройки квот для пользователя, выполните команду, перечислив список всех квот, с помощью параметров --quota (один параметр на каждую квоту):

    yc managed-clickhouse user update <имя пользователя> \
       --cluster-name=<имя кластера> \
       --quota=<настройки квоты 0 (без изменений)> \
       --quota=<настройки квоты 1 (без изменений)> \
       --quota=<настройки квоты 2 (с изменениями)> \
       --quota=<настройки квоты 3 (без изменений)> \
       --quota=<настройки квоты 4 (с изменениями)> \
       --quota=<настройки квоты 5 (новая квота)>
      ...
    

    Имя кластера можно запросить со списком кластеров в каталоге.

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

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

    При задании интервала для квоты допустимо использовать запись с указанием единиц измерения: часов (h), минут (m), секунд (s) и миллисекунд (ms). Пример такой записи: 3h20m10s7000ms (итоговое значение представляется по-прежнему в миллисекундах: 12017000). Значение интервала должно быть кратно 1000 миллисекунд (значение вида 1s500ms является некорректным).

  3. Чтобы изменить настройки ClickHouse для пользователя, выполните команду, перечислив измененные настройки с помощью параметра --settings:

    yc managed-clickhouse user update <имя пользователя> \
       --cluster-name=<имя кластера> \
       --settings=<список настроек ClickHouse>
    

    Имя кластера можно запросить со списком кластеров в каталоге.

    Команда изменит только те настройки, которые явно указаны в параметре --settings. Например, команда с параметром --settings="readonly=1" изменит только настройку readonly и не сбросит значения остальных. Этим изменение настроек ClickHouse отличается от изменения настроек квот.

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

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание ClickHouse-кластера.

  2. Чтобы настроить права пользователя на доступ к определенным базам данных, добавьте необходимое количество блоков permission к описанию пользователя кластера — по одному на каждую базу:

    resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
      ...
      user {
        name     = "<имя пользователя>"
        password = "<пароль>"
        permission {
          database_name = "<база данных 1>"
        }
        ...
        permission {
          database_name = "<база данных N>"
        }
      }
    }
    

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

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

    При описании квот обязательным является только поле interval_duration.

    resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
      ...
      user {
        name     = "<имя пользователя>"
        password = "<пароль>"
        ...
        quota {
          interval_duration = <длительность интервала в миллисекундах>
          ...
        }
      }
    }
    
  4. Чтобы изменить настройки ClickHouse для пользователя, добавьте блок settings к его описанию.

    resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
      ...
      user {
        name     = "<имя пользователя>"
        password = "<пароль>"
        ...
        settings {
          <настройки СУБД для отдельного пользователя>
        }
      }
    }
    
  5. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  6. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse:

  • создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
  • изменение — 90 минут;
  • удаление — 30 минут.

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

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}
  1. Подключитесь к кластеру, используя учетную запись admin.

  2. Чтобы изменить набор привилегий и ролей пользователя, используйте запросы GRANT и REVOKE. Например, выдайте пользователю права на чтение всех объектов в определенной базе данных:

    GRANT SELECT ON <имя базы данных>.* TO <имя пользователя>;
    
  3. Чтобы изменить настройки квот для пользователя, используйте запросы CREATE QUOTA, ALTER QUOTA и DROP QUOTA. Например, ограничьте суммарное количество запросов пользователя за период 15 месяцев:

    CREATE QUOTA <название квоты> FOR INTERVAL 15 MONTH MAX QUERIES 100 TO <имя пользователя>;
    
  4. Чтобы изменить учетную запись пользователя, используйте запрос ALTER USER. Например для изменения настроек ClickHouse выполните следующую команду, перечислив настройки подлежащие изменению:

    ALTER USER <имя пользователя> SETTINGS <список настроек ClickHouse>;
    

Воспользуйтесь методом API update и передайте в запросе:

  • Идентификатор кластера в параметре clusterId. Чтобы узнать идентификатор, получите список кластеров в каталоге.
  • Имя пользователя, настройки которого будут изменены, в параметре userName. Чтобы узнать имя, получите список пользователей.
  • (Опционально) Список баз, к которым пользователь должен иметь доступ, в параметре userSpec.permissions[].
  • (Опционально) Список настроек ClickHouse для пользователя в параметре userSpec.settings.
  • (Опционально) Список настроек квот для пользователя в параметре userSpec.quotas[].
  • Список полей конфигурации пользователя, которые необходимо изменить, в параметре updateMask.

Важно

Этот метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask (одной строкой через запятую).

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

Консоль управления
CLI
Terraform
SQL
API
  1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
  2. Нажмите на имя нужного кластера и выберите вкладку Пользователи.
  3. Нажмите на значок и выберите пункт Удалить.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы удалить пользователя, выполните команду:

yc managed-clickhouse user delete <имя пользователя> \
   --cluster-name=<имя кластера>

Имя кластера можно запросить со списком кластеров в каталоге.

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание ClickHouse-кластера.

  2. Удалите из описания кластера Managed Service for ClickHouse блок user с описанием нужного пользователя.

  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse:

  • создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
  • изменение — 90 минут;
  • удаление — 30 минут.

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

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}
  1. Подключитесь к кластеру, используя учетную запись admin.

  2. Удалите пользователя:

    DROP USER <имя пользователя>;
    

Подробнее об удалении объектов см. в документации ClickHouse.

Воспользуйтесь методом API delete и передайте в запросе:

  • Идентификатор кластера в параметре clusterId. Чтобы узнать идентификатор, получите список кластеров в каталоге.
  • Имя пользователя, настройки которого будут изменены, в параметре userName. Чтобы узнать имя, получите список пользователей.

Примеры

Создание пользователя с настройкой «только чтение»

Допустим, нужно добавить в существующий кластер с именем mych нового пользователя ro-user с паролем Passw0rd, причем:

  • пользователь должен иметь доступ к базе данных db1 кластера;
  • доступ должен осуществляться в режиме «только чтение» (readonly), без возможности изменения настроек.
Консоль управления
CLI
Terraform
SQL
  1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
  2. Нажмите на кластер с именем mych и выберите вкладку Пользователи.
  3. Нажмите кнопку Добавить.
  4. Введите имя пользователя базы данных ro-user и пароль Passw0rd.
  5. Нажмите на значок и выберите базу данных db1 из выпадающего списка.
  6. Выберите Дополнительные настройки → Settings → Readonly.
  7. В поле Readonly укажите значение 1.
  8. Нажмите кнопку Добавить.

Запустите следующую команду:

yc managed-clickhouse user create "ro-user" \
   --cluster-name="mych" \
   --password="Passw0rd" \
   --permissions="db1" \
   --settings="readonly=1"

После создания пользователя проверьте, что он действительно работает в режиме «только чтение»:

  1. Подключитесь к кластеру ClickHouse mych, используя созданного пользователя ro-user.

  2. Попытайтесь изменить какую-нибудь настройку, например, попытайтесь отключить режим «только чтение»:

    SET readonly=0
    

    В результате выполнения команды должно отобразиться сообщение о невозможности изменения настройки в режиме «только чтение»:

    DB::Exception: Cannot modify 'readonly' setting in readonly mode.
    
  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание ClickHouse-кластера.

  2. Добавьте к описанию кластера блок user.

    resource "yandex_mdb_clickhouse_cluster" "mych" {
      name = "mych"
    
      database {
        name = "db1"
      }
    
      user {
        name     = "ro-user"
        password = "Passw0rd"
        permission {
          database_name = "db1"
        }
        settings {
          readonly = 1
        }
      }
      ...
    }
    
  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

  1. Подключитесь к кластеру mych, используя учетную запись admin.

  2. Создайте пользователя:

    CREATE USER ro-user IDENTIFIED WITH sha256_password BY 'Passw0rd';
    
  3. Выдайте пользователю права на чтение всех объектов базы данных db1:

    GRANT SELECT ON db1.* TO ro-user;
    

Была ли статья полезна?

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Управление пользователями через SQL
  • Получить список пользователей
  • Добавить пользователя
  • Изменить пароль
  • Изменить пароль пользователя admin
  • Изменить настройки пользователя
  • Удалить пользователя
  • Примеры
  • Создание пользователя с настройкой «только чтение»