Управление пользователями ClickHouse®
Managed Service for ClickHouse® позволяет управлять пользователями и их индивидуальными настройками двумя способами:
- С помощью стандартных интерфейсов Yandex Cloud (консоль управления, CLI, Terraform, API). Способ подходит, если вы хотите добавлять, изменять и удалять пользователей и их индивидуальные настройки, используя возможности сервиса Yandex Managed Service for ClickHouse®.
- С помощью SQL-запросов к кластеру. Способ подходит, если вы хотите использовать уже существующее у вас решение для создания и управления пользователями или если вы используете RBAC
.
Важно
В кластере Managed Service for ClickHouse® можно одновременно использовать только один способ управления пользователями — с помощью стандартных интерфейсов или SQL-запросов.
Примечание
При создании кластера ClickHouse® автоматически создаются служебные пользователи для администрирования и мониторинга работы сервиса.
Управление пользователями через SQL
Чтобы включить управление, выберите опцию Управление пользователями через SQL при создании или изменении настроек кластера.
Важно
Включенную настройку управления пользователями через SQL невозможно выключить.
В кластере с включенным управлением пользователями через SQL:
- Управление пользователями через стандартные интерфейсы Yandex Cloud (консоль управления, CLI, API, Terraform) недоступно.
- Существующие пользователи и настройки пользователей, созданные с помощью стандартных интерфейсов Yandex Cloud, будут сохранены.
- Управление пользователями осуществляется с помощью учетной записи
admin
. Пароль для нее задается при выборе опции Управление пользователями через SQL.
Подробнее об управлении пользователями через SQL см. в документации ClickHouse®
Получить список пользователей
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера, затем выберите вкладку Пользователи.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список пользователей кластера, выполните команду:
yc managed-clickhouse user list
--cluster-name=<имя_кластера>
Имя кластера можно запросить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом User.list и выполните запрос, например, с помощью cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters/<идентификатор_кластера>/users'
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом UserService/List и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.UserService.List
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Подключитесь к кластеру, используя учетную запись
admin
. -
Получите список пользователей:
SHOW USERS;
Создать пользователя
-
В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. -
Нажмите на имя нужного кластера и выберите вкладку Пользователи.
-
Нажмите кнопку Создать пользователя.
-
Введите имя пользователя базы данных и пароль.
Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания.
Длина пароля от 8 до 128 символов.
-
Выберите одну или несколько баз данных, к которым должен иметь доступ пользователь:
- Нажмите на значок
и выберите базу данных из выпадающего списка. - Повторите предыдущий шаг, пока не будут выбраны все требуемые базы данных.
- Чтобы удалить базу, добавленную по ошибке, нажмите на значок
справа от имени базы.
- Нажмите на значок
-
Задайте дополнительные настройки для пользователя:
- Настройте квоты в разделе Дополнительные настройки → Quotas:
- Чтобы добавить квоту, нажмите на значок
. Вы можете добавить несколько квот, которые будут действовать одновременно. - Чтобы удалить квоту, нажмите на значок
справа от имени квоты и выберите пункт Удалить. - Чтобы изменить квоту, задайте требуемые значения настроек для нее.
- Чтобы добавить квоту, нажмите на значок
- Настройте ClickHouse® в разделе Дополнительные настройки → Settings.
- Настройте квоты в разделе Дополнительные настройки → Quotas:
-
Нажмите кнопку Создать.
См. также: пример создания пользователя с правами «только чтение».
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать пользователя в кластере, выполните команду:
yc managed-clickhouse user create <имя_пользователя> \
--cluster-name=<имя_кластера> \
--password=<пароль_пользователя> \
--permissions=<список_БД> \
--quota=<список_настроек_одной_квоты_для_пользователя> \
--settings=<список_настроек_ClickHouse®_для_пользователя>
Где --permissions
— список БД, к которым пользователь должен иметь доступ.
Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания.
Длина пароля от 8 до 128 символов.
Подробнее о квотах и настройках на уровне запроса читайте в разделе Настройки ClickHouse®.
Чтобы задать несколько квот, перечислите их, используя требуемое количество параметров --quota
в команде:
yc managed-clickhouse user create <имя_пользователя> \
...
--quota="<настройки_квоты_0>" \
--quota="<настройки_квоты_1>" \
...
Имя кластера можно запросить со списком кластеров в каталоге.
См. также: пример создания пользователя с правами «только чтение».
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Добавьте к описанию кластера Managed Service for ClickHouse® блок
user
:resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... user { name = "<имя_пользователя>" password = "<пароль>" ... } }
Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания.
Длина пароля от 8 до 128 символов.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом User.create и выполните запрос, например, с помощью cURL
:-
Создайте файл
body.json
и добавьте в него следующее содержимое:{ "userSpec": { "name": "<имя_пользователя>", "password": "<пароль_пользователя>", "permissions": [ { "databaseName": "<имя_БД>" } ], "settings": {<настройки_ClickHouse®>}, "quotas": [ { "intervalDuration": "<интервал_для_квоты>", "queries": "<суммарное_количество_запросов>", "errors": "<количество_запросов_с_ошибкой>", "resultRows": "<количество_строк_результата>", "readRows": "<количество_исходных_строк>", "executionTime": "<суммарное_время_выполнения>" }, { <аналогичный_набор_настроек_для_квоты_2> }, { ... }, { <аналогичный_набор_настроек_для_квоты_N> } ] }, { <аналогичный_набор_настроек_для_создаваемого_пользователя_2> }, { ... }, { <аналогичный_набор_настроек_для_создаваемого_пользователя_N> } }
Где
userSpec
— массив, содержащий настройки создаваемых пользователей. Один элемент массива содержит настройки для одного пользователя и имеет следующую структуру:-
name
— имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. -
password
— пароль пользователя. Длина пароля от 8 до 128 символов. -
permissions
— список БД, к которым пользователь должен иметь доступ.Список организован в виде массива параметров
databaseName
. Один параметр содержит имя отдельной БД.
-
settings
— список настроек ClickHouse® для пользователя.Настройки задаются в виде пар
ключ: значение
, разделенных запятыми. -
quotas
— массив, содержащий настройки квот. Один элемент массива содержит настройки для одной квоты.
-
-
Выполните запрос:
curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters/<идентификатор_кластера>/users' \ --data '@body.json'
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
См. также: пример создания пользователя с правами «только чтение».
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом UserService/Create и выполните запрос, например, с помощью gRPCurl
:-
Создайте файл
body.json
и добавьте в него следующее содержимое:{ "cluster_id": "<идентификатор_кластера>", "user_spec": { "name": "<имя_пользователя>", "password": "<пароль_пользователя>", "permissions": [ { "database_name": "<имя_БД>" } ], "settings": {<настройки_ClickHouse®>}, "quotas": [ { "interval_duration": "<интервал_для_квоты>", "queries": "<суммарное_количество_запросов>", "errors": "<количество_запросов_с_ошибкой>", "result_rows": "<количество_строк_результата>", "read_rows": "<количество_исходных_строк>", "execution_time": "<суммарное_время_выполнения>" }, { <аналогичный_набор_настроек_для_квоты_2> }, { ... }, { <аналогичный_набор_настроек_для_квоты_N> } ] }, { <аналогичный_набор_настроек_для_создаваемого_пользователя_2> }, { ... }, { <аналогичный_набор_настроек_для_создаваемого_пользователя_N> } }
Где
user_spec
— массив, содержащий настройки создаваемых пользователей. Один элемент массива содержит настройки для одного пользователя и имеет следующую структуру:-
name
— имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. -
password
— пароль пользователя. Длина пароля от 8 до 128 символов. -
permissions
— список БД, к которым пользователь должен иметь доступ.Список организован в виде массива параметров
database_name
. Один параметр содержит имя отдельной БД. -
settings
— список настроек ClickHouse® для пользователя.Настройки задаются в виде пар
ключ: значение
, разделенных запятыми. -
quotas
— массив, содержащий настройки квот. Один элемент массива содержит настройки для одной квоты.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Выполните запрос:
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d @ \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.UserService.Create \ < body.json
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
См. также: пример создания пользователя с правами «только чтение».
-
Подключитесь к кластеру, используя учетную запись
admin
. -
Создайте пользователя:
CREATE USER <имя_пользователя> IDENTIFIED WITH sha256_password BY '<пароль_пользователя>';
Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания.
Длина пароля от 8 до 128 символов.
Подробнее о создании пользователей см. в документации ClickHouse®
Изменить пароль
Рекомендуется использовать интерфейсы Yandex Cloud, перечисленные ниже. Не используйте SQL для смены пароля, иначе после технического обслуживания пароль может измениться на прежний.
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Пользователи.
- Нажмите на значок
и выберите пункт Изменить пароль. - Задайте новый пароль и нажмите кнопку Изменить.
Примечание
Длина пароля от 8 до 128 символов.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы изменить пароль пользователя, выполните команду:
yc managed-clickhouse user update <имя_пользователя> \
--cluster-name=<имя_кластера> \
--password=<новый_пароль>
Примечание
Длина пароля от 8 до 128 символов.
Имя кластера можно запросить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Найдите в описании кластера Managed Service for ClickHouse® блок
user
для нужного пользователя. -
Измените значение поля
password
:resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... user { name = "<имя_пользователя>" password = "<новый_пароль>" ... } }
Примечание
Длина пароля от 8 до 128 символов.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом User.update и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask
(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>' \ --data '{ "updateMask": "password", "password": "<новый_пароль>" }'
Где:
-
updateMask
— перечень изменяемых параметров в одну строку через запятую.В данном случае указан только один параметр:
password
. -
password
— новый пароль пользователя.Длина пароля от 8 до 128 символов.
Идентификатор кластера можно запросить со списком кластеров в каталоге. Имя пользователя можно запросить со списком пользователей в кластере.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом UserService/Update и выполните запрос, например, с помощью gRPCurl
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask
(в виде массива строкpaths[]
).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "user_name": "<имя_пользователя>", "update_mask": { "paths": [ "password" ] }, "password": "<новый_пароль>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.UserService.Update
Где:
-
update_mask
— перечень изменяемых параметров в виде массива строкpaths[]
.В данном случае указан только один параметр:
password
. -
password
— новый пароль пользователя.Длина пароля от 8 до 128 символов.
Идентификатор кластера можно запросить со списком кластеров в каталоге. Имя пользователя можно запросить со списком пользователей в кластере.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Изменить пароль пользователя admin
Рекомендуется использовать интерфейсы Yandex Cloud, перечисленные ниже. Не используйте SQL для смены пароля, иначе после технического обслуживания пароль может измениться на прежний.
Если у вас еще нет интерфейса командной строки 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
. Ответ на команду будет содержать новый пароль.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Измените значение поля
admin_password
:resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... admin_password = "<пароль_пользователя_admin>" ... }
Примечание
Длина пароля от 8 до 128 символов.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом Cluster.update и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask
(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "configSpec.adminPassword", "configSpec": { "adminPassword": "<новый_пароль>" } }'
Где:
-
updateMask
— перечень изменяемых параметров в одну строку через запятую.В данном случае указан только один параметр:
configSpec.adminPassword
. -
configSpec.adminPassword
— новый пароль пользователя.Длина пароля от 8 до 128 символов.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService/Update и выполните запрос, например, с помощью gRPCurl
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask
(в виде массива строкpaths[]
).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": [ "config_spec.admin_password" ] }, "config_spec": { "admin_password": "<новый_пароль>" } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.Update
Где:
-
update_mask
— перечень изменяемых параметров в виде массива строкpaths[]
.В данном случае указан только один параметр:
config_spec.admin_password
. -
config_spec.admin_password
— новый пароль пользователя.Длина пароля от 8 до 128 символов.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Изменить настройки пользователя
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Пользователи.
- Нажмите на значок
и выберите пункт Настроить. - Настройте права пользователя на доступ к определенным базам данных:
- Чтобы предоставить доступ к требуемым базам данных:
- Нажмите на значок
и выберите базу данных из выпадающего списка. - Повторите предыдущий шаг, пока не будут выбраны все требуемые базы данных.
- Нажмите на значок
- Чтобы удалить базу, нажмите на значок
справа от имени базы.
- Чтобы предоставить доступ к требуемым базам данных:
- Настройте квоты для пользователя в разделе Дополнительные настройки → Quotas:
- Чтобы добавить квоту, нажмите на значок
. Вы можете добавить несколько квот, которые будут действовать одновременно. - Чтобы удалить квоту, нажмите на значок
справа от имени квоты и выберите пункт Удалить. - Чтобы изменить квоту, задайте требуемые значения настроек для нее.
- Чтобы добавить квоту, нажмите на значок
- Измените настройки ClickHouse® для пользователя в разделе Дополнительные настройки → Settings.
- Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Из интерфейса командной строки можно изменить настройки пользователя:
-
Чтобы настроить права пользователя на доступ к определенным базам данных, выполните команду, перечислив список имен баз данных с помощью параметра
--permissions
:yc managed-clickhouse user update <имя_пользователя> \ --cluster-name=<имя_кластера> \ --permissions=<список_БД>
Имя кластера можно запросить со списком кластеров в каталоге.
Эта команда предоставляет пользователю доступ к базам данных, указанным в списке.
Чтобы отозвать доступ к определенной базе, исключите ее имя из списка и передайте команде обновленный список.
-
Чтобы изменить настройки квот для пользователя, выполните команду, перечислив список всех квот, с помощью параметров
--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
является некорректным). -
Чтобы изменить настройки ClickHouse® для пользователя, выполните команду, перечислив измененные настройки с помощью параметра
--settings
:yc managed-clickhouse user update <имя_пользователя> \ --cluster-name=<имя_кластера> \ --settings=<список_настроек_ClickHouse®>
Имя кластера можно запросить со списком кластеров в каталоге.
Команда изменит только те настройки, которые явно указаны в параметре
--settings
. Например, команда с параметром--settings="readonly=1"
изменит только настройкуreadonly
и не сбросит значения остальных. Этим изменение настроек ClickHouse® отличается от изменения настроек квот.С помощью этой команды невозможно удалить сделанную настройку, допустимо только явно присвоить ей значение по умолчанию (оно указано для каждой настройки).
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Чтобы настроить права пользователя на доступ к определенным базам данных, добавьте необходимое количество блоков
permission
к описанию пользователя кластера — по одному на каждую базу:resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... user { name = "<имя_пользователя>" password = "<пароль>" permission { database_name = "<база_данных_1>" } ... permission { database_name = "<база_данных_N>" } } }
В поле
database_name
укажите имя базы данных, к которой нужно предоставить доступ. -
Чтобы изменить настройки квот для пользователя, добавьте необходимое количество блоков
quota
к его описанию.При описании квот обязательным является только поле
interval_duration
.resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... user { name = "<имя_пользователя>" password = "<пароль>" ... quota { interval_duration = <длительность_интервала_в_миллисекундах> ... } } }
-
Чтобы изменить настройки ClickHouse® для пользователя, добавьте блок
settings
к его описанию.resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... user { name = "<имя_пользователя>" password = "<пароль>" ... settings { <настройки_СУБД_для_отдельного_пользователя> } } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом User.update и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask
(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>' \ --data '{ "updateMask": "<перечень_изменяемых_настроек>", "permissions": [ <обновленный_список_БД> ], "settings": { <настройки_ClickHouse®> }, "quotas": [ <обновленный_список_настроек_квот> ] }'
Где
updateMask
— перечень изменяемых параметров в одну строку через запятую.Укажите нужные параметры, чтобы изменить отдельные категории настроек:
-
Чтобы изменить список БД, к которым пользователь должен иметь доступ, передайте в параметре
permissions
обновленный список БД.Список организован в виде массива параметров
databaseName
. Один параметр содержит имя отдельной БД.Важно
Существующий в кластере список БД будет полностью перезаписан списком, переданным в параметре
permissions
.Перед выполнением запроса убедитесь, что вы включили в этот список все нужные БД, в том числе существующие.
-
Чтобы изменить настройки ClickHouse® для пользователя, передайте в параметре
settings
нужные настройки с новыми значениями. -
Чтобы изменить настройки квот, передайте в параметре
quotas
обновленный список с настройками квот.Список организован в виде массива. Один элемент массива содержит настройки для одной квоты.
Важно
Существующий в кластере список настроек квот будет полностью перезаписан списком, переданным в параметре
quotas
.Перед выполнением запроса убедитесь, что вы включили в этот список все нужные настройки квот, в том числе существующие.
Идентификатор кластера можно запросить со списком кластеров в каталоге. Имя пользователя можно запросить со списком пользователей в кластере.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом UserService/Update и выполните запрос, например, с помощью gRPCurl
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask
(в виде массива строкpaths[]
).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "user_name": "<имя_пользователя>", "update_mask": { "paths": [ <перечень_изменяемых_настроек> ] }, "permissions": [ <обновленный_список_БД> ], "settings": { <настройки_ClickHouse®> }, "quotas": [ <обновленный_список_настроек_квот> ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.UserService.Update
Где
update_mask
— перечень изменяемых параметров в виде массива строкpaths[]
.Укажите нужные параметры, чтобы изменить отдельные категории настроек:
-
Чтобы изменить список БД, к которым пользователь должен иметь доступ, передайте в параметре
permissions
обновленный список БД.Список организован в виде массива параметров
database_name
. Один параметр содержит имя отдельной БД.Важно
Существующий в кластере список БД будет полностью перезаписан списком, переданным в параметре
permissions
.Перед выполнением запроса убедитесь, что вы включили в этот список все нужные БД, в том числе существующие.
-
Чтобы изменить настройки ClickHouse® для пользователя, передайте в параметре
settings
нужные настройки с новыми значениями. -
Чтобы изменить настройки квот, передайте в параметре
quotas
обновленный список с настройками квот.Список организован в виде массива. Один элемент массива содержит настройки для одной квоты.
Важно
Существующий в кластере список настроек квот будет полностью перезаписан списком, переданным в параметре
quotas
.Перед выполнением запроса убедитесь, что вы включили в этот список все нужные настройки квот, в том числе существующие.
Идентификатор кластера можно запросить со списком кластеров в каталоге. Имя пользователя можно запросить со списком пользователей в кластере.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Подключитесь к кластеру, используя учетную запись
admin
. -
Чтобы изменить набор привилегий и ролей пользователя, используйте запросы GRANT
и REVOKE . Например, выдайте пользователю права на чтение всех объектов в определенной базе данных:GRANT SELECT ON <имя_базы_данных>.* TO <имя_пользователя>;
-
Чтобы изменить настройки квот для пользователя, используйте запросы CREATE QUOTA
, ALTER QUOTA и DROP QUOTA . Например, ограничьте суммарное количество запросов пользователя за период 15 месяцев:CREATE QUOTA <название_квоты> FOR INTERVAL 15 MONTH MAX QUERIES 100 TO <имя_пользователя>;
-
Чтобы изменить учетную запись пользователя, используйте запрос ALTER USER
. Например для изменения настроек ClickHouse® выполните следующую команду, перечислив настройки подлежащие изменению:ALTER USER <имя_пользователя> SETTINGS <список_настроек_ClickHouse®>;
Удалить пользователя
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Пользователи.
- Нажмите на значок
и выберите пункт Удалить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы удалить пользователя, выполните команду:
yc managed-clickhouse user delete <имя_пользователя> \
--cluster-name=<имя_кластера>
Имя кластера можно запросить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Удалите из описания кластера Managed Service for ClickHouse® блок
user
с описанием нужного пользователя. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом User.delete и выполните запрос, например, с помощью cURL
:curl \ --request DELETE \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>'
Идентификатор кластера можно запросить со списком кластеров в каталоге. Имя пользователя можно запросить со списком пользователей в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом UserService/Delete и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "user_name": "<имя_пользователя>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.UserService.Delete
Идентификатор кластера можно запросить со списком кластеров в каталоге. Имя пользователя можно запросить со списком пользователей в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Подключитесь к кластеру, используя учетную запись
admin
. -
Удалите пользователя:
DROP USER <имя_пользователя>;
Подробнее об удалении объектов см. в документации ClickHouse®
Примеры
Создание пользователя с настройкой «только чтение»
Допустим, нужно добавить в существующий кластер с именем mych
и идентификатором cat0adul1fj0********
нового пользователя ro-user
с паролем Passw0rd
, причем:
- пользователь должен иметь доступ к базе данных
db1
кластера; - доступ должен осуществляться в режиме «только чтение» (readonly), без возможности изменения настроек.
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Нажмите на кластер с именем
mych
и выберите вкладку Пользователи. - Нажмите кнопку Создать пользователя.
- Введите имя пользователя базы данных
ro-user
и парольPassw0rd
. - Нажмите на значок
и выберите базу данныхdb1
из выпадающего списка. - Выберите Дополнительные настройки → Settings → Readonly.
- В поле Readonly укажите значение
1
. - Нажмите кнопку Создать.
Запустите следующую команду:
yc managed-clickhouse user create "ro-user" \
--cluster-name="mych" \
--password="Passw0rd" \
--permissions="db1" \
--settings="readonly=1"
После создания пользователя проверьте, что он действительно работает в режиме «только чтение»:
-
Подключитесь к кластеру
mych
, используя созданного пользователяro-user
. -
Попытайтесь изменить какую-нибудь настройку, например, попытайтесь отключить режим «только чтение»:
SET readonly=0
В результате выполнения команды должно отобразиться сообщение о невозможности изменения настройки в режиме «только чтение»:
DB::Exception: Cannot modify 'readonly' setting in readonly mode.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Добавьте к описанию кластера блок
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 } } ... }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Выполните запрос c помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters/cat0adul1fj0********/users' \ --data '{ "userSpec": { "name": "ro-user", "password": "Passw0rd", "permissions": [ { "databaseName": "db1" } ], "settings": { "readonly": "1" } } }'
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Выполните запрос с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "cat0adul1fj0********", "user_spec": { "name": "ro-user", "password": "Passw0rd", "permissions": [ { "database_name": "db1" } ], "settings": { "readonly": "1" } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.UserService.Create
-
Подключитесь к кластеру
mych
, используя учетную записьadmin
. -
Создайте пользователя:
CREATE USER ro-user IDENTIFIED WITH sha256_password BY 'Passw0rd';
-
Выдайте пользователю права на чтение всех объектов базы данных
db1
:GRANT SELECT ON db1.* TO ro-user;
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc