Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • AI Studio
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex Managed Service for Apache Kafka®
  • Начало работы
    • Все инструкции
    • Управление топиками
    • Управление пользователями
    • Управление коннекторами
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Yandex Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Получить список пользователей в кластере
  • Создать пользователя
  • Изменить настройки пользователя
  • Изменить пароль пользователя
  • Выдать пользователю права
  • Отозвать права у пользователя
  • Импортировать пользователя в Terraform
  • Удалить пользователя
  1. Пошаговые инструкции
  2. Управление пользователями

Управление пользователями Apache Kafka®

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 30 июня 2025 г.
  • Получить список пользователей в кластере
  • Создать пользователя
  • Изменить настройки пользователя
    • Изменить пароль пользователя
    • Выдать пользователю права
    • Отозвать права у пользователя
  • Импортировать пользователя в Terraform
  • Удалить пользователя

Пользователи в Apache Kafka®:

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

    Производитель или потребитель получает доступ только к тем топикам, которые разрешены для его пользователя. Вы можете использовать одного и того же пользователя для нескольких производителей или потребителей: первые получат права на запись в определенные топики, а вторые — на чтение.

  • Управляют топиками. Подробнее см. в разделе Топики и разделы.

После создания кластера Apache Kafka® вы можете:

  • получить список пользователей в кластере;
  • создать пользователя;
  • изменить настройки пользователя:
    • изменить пароль;
    • выдать права;
    • отозвать права;
  • импортировать пользователя в Terraform;
  • удалить пользователя.

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

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

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

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

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

    yc managed-kafka user list --cluster-name <имя_кластера>
    
  2. Чтобы получить подробную информацию по конкретному пользователю, выполните команду:

    yc managed-kafka user get <имя_пользователя> --cluster-name <имя_кластера>
    

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

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом User.list и выполните запрос, например, с помощью cURL:

    curl \
      --request GET \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --url 'https://mdb.api.yandexcloud.kz/managed-kafka/v1/clusters/<идентификатор_кластера>/users'
    

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

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом UserService/List и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/user_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>"
          }' \
      mdb.api.yandexcloud.kz:443 \
      yandex.cloud.mdb.kafka.v1.UserService.List
    

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

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Создать пользователяСоздать пользователя

Примечание

Для создания пользователя-администратора воспользуйтесь интерфейсами командной строки, API или Terraform.

Консоль управления
CLI
Terraform
REST API
gRPC API

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

  1. В консоли управления перейдите в нужный каталог.

  2. В списке сервисов выберите Managed Service for Kafka.

  3. Нажмите на имя нужного кластера и перейдите на вкладку Пользователи.

  4. Нажмите кнопку Создать пользователя.

  5. Введите имя пользователя и пароль.

    Примечание

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

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

  6. Выдайте права доступа к нужным топикам.

  7. Нажмите кнопку Создать.

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

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы создать пользователя:

  1. Посмотрите описание команды CLI для создания пользователей:

    yc managed-kafka user create --help
    
  2. Создайте пользователя с ролью producer для производителя или consumer для потребителя и выдайте права доступа к нужным топикам:

    yc managed-kafka user create <имя_пользователя> \
      --cluster-name <имя_кластера> \
      --password <пароль> \
      --permission topic=<имя_топика>,role=<роль_пользователя>,allow_host=<разрешенный_IP-адрес_1>,allow_host=<разрешенный_IP-адрес_2>,...,allow_host=<разрешенный_IP-адрес_N>
    

    Параметр --permission должен содержать хотя бы одну пару топик-роль, где:

    • topic — имя топика.
    • role — роль пользователя: producer, consumer, admin или topic_admin. Подробнее о правах, которые предоставляет каждая роль.
    • allow_host — (опционально) IP-адрес, с которого разрешен доступ этому пользователю. Чтобы задать несколько адресов, добавьте нужное количество опций allow_host через запятую.

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

  1. Посмотрите описание команды CLI для создания пользователя:

    yc managed-kafka user create --help
    
  2. Создайте пользователя с ролью admin, действующей на все (*) топики кластера:

    yc managed-kafka user create <имя_пользователя> \
      --cluster-name <имя_кластера> \
      --password <пароль> \
      --permission topic=*,role=admin,allow_host=<разрешенный_IP-адрес_1>,allow_host=<разрешенный_IP-адрес_2>,...,allow_host=<разрешенный_IP-адрес_N>
    
  3. Создайте пользователя с ролью topic_admin, действующей на все топики кластера с префиксом pref:

    yc managed-kafka user create <имя_пользователя> \
      --cluster-name <имя_кластера> \
      --password <пароль> \
      --permission topic=pref*,role=topic_admin
    

Примечание

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

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

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

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

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

  2. Добавьте ресурс yandex_mdb_kafka_user:

    resource "yandex_mdb_kafka_user" "<имя_пользователя>" {
      cluster_id = "<идентификатор_кластера>"
      name       = "<имя_пользователя>"
      password   = "<пароль>"
      ...
    }
    

    Примечание

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

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

  3. Выдайте права доступа к нужным топикам.

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

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

Провайдер Terraform ограничивает время на выполнение всех операций с кластером Managed Service for Apache Kafka® 60 минутами.

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

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

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

resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом User.create и выполните запрос, например, с помощью cURL:

    curl \
      --request POST \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.yandexcloud.kz/managed-kafka/v1/clusters/<идентификатор_кластера>/users' \
      --data '{
                "userSpec": {
                  "name": "<имя_пользователя>",
                  "password": "<пароль_пользователя>",
                  "permissions": [
                    {
                      "topicName": "<имя_топика>",
                      "role": "<уровень_прав_доступа_к_топику>",
                      "allowHosts": [
                        <список_IP-адресов>
                      ]
                    }
                  ]
                }
              }'
    

    Где userSpec — настройки нового пользователя Apache Kafka®:

    • name — имя пользователя.

    • password — пароль пользователя.

      Примечание

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

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

    • permissions — права доступа к топикам. Каждый элемент массива соответствует отдельному топику и имеет следующую структуру:

      • topicName — имя или шаблон имени топика:
        • * — чтобы разрешить доступ к любым топикам.
        • Полное название топика — чтобы разрешить доступ конкретно к нему. Чтобы узнать название, получите список топиков в кластере.
        • <префикс>* — чтобы выдать доступ к топикам, названия которых начинаются с указанного префикса. Допустим, есть топики topic_a1, topic_a2, a3. Если указать значение topic*, доступ будет разрешен для топиков topic_a1 и topic_a2.Для указания всех топиков в кластере используйте маску *.
      • role — роль пользователя: ACCESS_ROLE_CONSUMER, ACCESS_ROLE_PRODUCER, ACCESS_ROLE_TOPIC_ADMIN или ACCESS_ROLE_ADMIN. Роль ACCESS_ROLE_ADMIN доступна только если выбраны все топики (topicName: "*"). Подробнее о правах, которые предоставляет каждая роль.
      • allowHosts — (опционально) список IP-адресов, с которых пользователю разрешен доступ к топику.

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

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом UserService/Create и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/user_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "user_spec": {
              "name": "<имя_пользователя>",
              "password": "<пароль_пользователя>",
              "permissions": [
                 {
                   "topic_name": "<имя_топика>",
                   "role": "<уровень_прав_доступа_к_топику>",
                   "allow_hosts": [
                     <список_IP-адресов>
                   ]
                 }
              ]
            }
          }' \
      mdb.api.yandexcloud.kz:443 \
      yandex.cloud.mdb.kafka.v1.UserService.Create
    

    Где user_spec — настройки нового пользователя БД:

    • name — имя пользователя.

    • password — пароль пользователя.

      Примечание

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

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

    • permissions — права доступа к топикам. Каждый элемент массива соответствует отдельному топику и имеет следующую структуру:

      • topic_name — имя или шаблон имени топика:
        • * — чтобы разрешить доступ к любым топикам.
        • Полное название топика — чтобы разрешить доступ конкретно к нему. Чтобы узнать название, получите список топиков в кластере.
        • <префикс>* — чтобы выдать доступ к топикам, названия которых начинаются с указанного префикса. Допустим, есть топики topic_a1, topic_a2, a3. Если указать значение topic*, доступ будет разрешен для топиков topic_a1 и topic_a2.
      • role — роль пользователя: ACCESS_ROLE_CONSUMER, ACCESS_ROLE_PRODUCER, ACCESS_ROLE_TOPIC_ADMIN или ACCESS_ROLE_ADMIN. Роль ACCESS_ROLE_ADMIN доступна только если выбраны все топики (topicName: "*"). Подробнее о правах, которые предоставляет каждая роль.
      • allow_hosts — (опционально) список IP-адресов, с которых пользователю разрешен доступ к топику.

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

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

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

Консоль управления
CLI
Terraform
REST API
gRPC API
  1. В консоли управления перейдите в нужный каталог.

  2. В списке сервисов выберите Managed Service for Kafka.

  3. Нажмите на имя нужного кластера и перейдите на вкладку Пользователи.

  4. Нажмите значок для нужного пользователя и выберите пункт:

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

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

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

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

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

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

  2. Найдите в этом файле ресурс yandex_mdb_kafka_user для нужного пользователя и внесите правки.

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

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом User.update и выполните запрос, например, с помощью cURL:

    Важно

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

    curl \
      --request PATCH \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.yandexcloud.kz/managed-kafka/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>' \
      --data '{
                "updateMask": "permissions",
                "permissions": [
                  {
                   "topicName": "<имя_топика>",
                   "role": "<уровень_прав_доступа_к_топику>",
                   "allowHosts": [
                     <список_IP-адресов>
                   ]
                 }
                ]
              }'
    

    Где:

    • updateMask — перечень изменяемых параметров в одну строку через запятую.

      В данном случае указан только один параметр: permissions.

    • permissions — новый набор прав на доступ к топикам. Каждый элемент массива соответствует отдельному топику и имеет следующую структуру:

      • topicName — имя или шаблон имени топика. Чтобы узнать имя, получите список топиков в кластере. Для указания всех топиков в кластере используйте маску *.
      • role — новая роль пользователя: ACCESS_ROLE_CONSUMER, ACCESS_ROLE_PRODUCER, ACCESS_ROLE_TOPIC_ADMIN или ACCESS_ROLE_ADMIN. Роль ACCESS_ROLE_ADMIN доступна только если выбраны все топики (topicName: "*"). Подробнее о правах, которые предоставляет каждая роль.
      • allowHosts — (опционально) новый список IP-адресов, с которых пользователю разрешен доступ к топику.

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

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

С помощью метода User.update вы также можете изменить пароль пользователя, а с помощью методов grantPermission и revokePermission — выдать или отозвать права доступа к топику.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом 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/kafka/v1/user_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "user_name": "<имя_пользователя>",
            "update_mask": {
              "paths": [
                "permissions"
              ]
            },
            "permissions": [
              {
                "topic_name": "<имя_топика>",
                "role": "<уровень_прав_доступа_к_топику>",
                "allow_hosts": [
                  <список_IP-адресов>
                ]
              }
            ]
          }' \
      mdb.api.yandexcloud.kz:443 \
      yandex.cloud.mdb.kafka.v1.UserService.Update
    

    Где:

    • update_mask — перечень изменяемых параметров в виде массива строк paths[].

      В данном случае массив состоит только из одной строки: permissions.

    • permissions — новый набор прав на доступ к топикам. Каждый элемент массива соответствует отдельному топику и имеет следующую структуру:

      • topic_name — имя или шаблон имени топика. Чтобы узнать имя, получите список топиков в кластере. Для указания всех топиков в кластере используйте маску *.
      • role — новая роль пользователя: ACCESS_ROLE_CONSUMER, ACCESS_ROLE_PRODUCER, ACCESS_ROLE_TOPIC_ADMIN или ACCESS_ROLE_ADMIN. Роль ACCESS_ROLE_ADMIN доступна только если выбраны все топики (topicName: "*"). Подробнее о правах, которые предоставляет каждая роль.
      • allow_hosts — (опционально) новый список IP-адресов, с которых пользователю разрешен доступ к топику.

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

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

С помощью вызова UserService/Update вы также можете изменить пароль пользователя, а с помощью методов grantPermission и revokePermission — выдать или отозвать права доступа к топику.

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

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

Примечание

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

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

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

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

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

Примечание

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

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

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

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

  2. Найдите в этом файле ресурс yandex_mdb_kafka_user для нужного пользователя.

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

    resource "yandex_mdb_kafka_user" "<имя_пользователя>" {
      ...
      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 Apache Kafka® 60 минутами.

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

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

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

resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом User.update и выполните запрос, например, с помощью cURL:

    Важно

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

    curl \
      --request PATCH \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.yandexcloud.kz/managed-kafka/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>' \
      --data '{
                "updateMask": "password",
                "password": "<новый_пароль_пользователя>"
              }'
    

    Где:

    • updateMask — перечень изменяемых параметров в одну строку через запятую.

      В данном случае указан только один параметр: password.

    • password — новый пароль пользователя.

      Примечание

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

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

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом 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/kafka/v1/user_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "user_name": "<имя_пользователя>",
            "update_mask": {
              "paths": [
                "password"
              ]
            },
            "password": "<новый_пароль_пользователя>"
          }' \
      mdb.api.yandexcloud.kz:443 \
      yandex.cloud.mdb.kafka.v1.UserService.Update
    

    Где:

    • update_mask — перечень изменяемых параметров в виде массива строк paths[].

      В данном случае массив состоит только из одной строки: password.

    • password — новый пароль пользователя.

      Примечание

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

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

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Выдать пользователю праваВыдать пользователю права

Примечание

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

Консоль управления
CLI
Terraform
REST API
gRPC API
  1. В консоли управления перейдите в нужный каталог.

  2. В списке сервисов выберите Managed Service for Kafka.

  3. Выберите кластер.

  4. Перейдите на вкладку Пользователи.

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

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

    Если на какие-либо топики не нужны права, их можно отозвать.

  7. Выберите нужный топик из выпадающего списка или введите его название:

    1. Укажите в поле Топик:

      • * — чтобы разрешить доступ к любым топикам.
      • Полное название топика — чтобы разрешить доступ конкретно к нему.
      • <префикс>* — чтобы выдать доступ к топикам, названия которых начинаются с указанного префикса. Допустим, есть топики topic_a1, topic_a2, a3. Если указать значение topic*, доступ будет разрешен для топиков topic_a1 и topic_a2.
    2. Нажмите кнопку Добавить топик.

  8. Нажмите на значок в столбце Роли для нужного топика и выберите роль:

    • ACCESS_ROLE_CONSUMER: потребителям, которые используют этого пользователя, будет разрешен доступ к топику.
    • ACCESS_ROLE_PRODUCER: производителям, которые используют этого пользователя, будет разрешен доступ к топику.
    • ACCESS_ROLE_ADMIN: роль доступна только если выбран доступ к любым топикам.
    • ACCESS_ROLE_TOPIC_ADMIN: роль с максимальными правами на управление топиками через Admin API Apache Kafka®.

    Вы можете выбрать роли ACCESS_ROLE_CONSUMER и ACCESS_ROLE_PRODUCER одновременно — тогда пользователь будет подходить и производителям, и потребителям.

    Подробнее о правах, которые предоставляет каждая роль.

    Пользователю также предоставляется доступ к субъектам схем данных. То, какие субъекты доступны, зависит от указанных ролей и топиков. Подробнее читайте в разделе Субъекты в Managed Schema Registry.

  9. Чтобы выдать права на другие топики — повторите процедуру.

  10. (Опционально) Если права были назначены топику по ошибке — отзовите их.

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

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы выдать права пользователю:

  1. Получите список топиков кластера:

    yc managed-kafka topic list --cluster-name <имя_кластера>
    
  2. Выдайте права на доступ к нужным топикам, передав параметры --permission:

    yc managed-kafka user update <имя_пользователя> \
      --cluster-name <имя_кластера> \
      --permission topic=<имя_топика>,role=<роль_пользователя>,allow_host=<разрешенный_IP-адрес_1>,allow_host=<разрешенный_IP-адрес_2>,...,allow_host=<разрешенный_IP-адрес_N>
    

    Доступны следующие параметры --permission:

    • topic — имя топика, к которому нужно выдать права доступа.

      Если на какие-либо топики не нужны права, их можно отозвать.

    • role — роль пользователя: producer, consumer, admin или topic_admin. Подробнее о правах, которые предоставляет каждая роль.

      Роль admin доступна только если выбраны все топики (topic=*).

    • allow_host — (опционально) IP-адрес, с которого разрешен доступ этому пользователю. Чтобы задать несколько адресов, добавьте нужное количество опций allow_host через запятую.

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

    Например, чтобы выдать права пользователю test-user в кластере kafka-cli к топику topic2 с ролью producer, при этом сохранить существующий доступ к топику topic1, выполните команду:

    yc managed-kafka user update test-user \
      --cluster-name kafka-cli \
      --permission topic=topic1,role=consumer \
      --permission topic=topic2,role=producer
    

    Вместе с доступом к топику пользователю также предоставляется доступ к субъектам схем данных. То, какие субъекты доступны, зависит от указанных ролей и топиков. Подробнее читайте в разделе Субъекты в Managed Schema Registry.

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

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

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

  2. Найдите в этом файле ресурс yandex_mdb_kafka_cluster для нужного пользователя.

  3. Добавьте блок permission:

    resource "yandex_mdb_kafka_user" "<имя_пользователя>" {
      ...
      permission {
        topic_name  = "<топик>"
        role        = "<роль_пользователя>"
        allow_hosts = [ <список_разрешенных_IP-адресов> ] 
      }
    }
    

    Где:

    • topic_name — имя топика. Укажите:

      • * — чтобы разрешить доступ к любым топикам.
      • Полное название топика — чтобы разрешить доступ конкретно к нему.
      • <префикс>* — чтобы выдать доступ к топикам, названия которых начинаются с указанного префикса. Допустим, есть топики topic_a1, topic_a2, a3. Если указать значение topic*, доступ будет разрешен для топиков topic_a1 и topic_a2.
    • role — роль пользователя: ACCESS_ROLE_CONSUMER, ACCESS_ROLE_PRODUCER, ACCESS_ROLE_TOPIC_ADMIN или ACCESS_ROLE_ADMIN. Роль ACCESS_ROLE_ADMIN доступна только если выбраны все топики (topicName: "*"). Подробнее о правах, которые предоставляет каждая роль.

    • allow_hosts — список IP-адресов, с которых пользователю разрешен доступ к топику.

    Вместе с доступом к топику пользователю также предоставляется доступ к субъектам схем данных. Список доступных субъектов зависит от указанных ролей и топиков. Подробнее см. в разделе Субъекты в Managed Schema Registry.

Если на какие-либо топики не нужны права, их можно отозвать.

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

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

Провайдер Terraform ограничивает время на выполнение всех операций с кластером Managed Service for Apache Kafka® 60 минутами.

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

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

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

resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом User.grantPermission и выполните запрос, например, с помощью cURL:

    curl \
      --request POST \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.yandexcloud.kz/managed-kafka/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>:grantPermission' \
      --data '{
                "permission": [
                  {
                   "topicName": "<имя_топика>",
                   "role": "<роль_пользователя>",
                   "allowHosts": [
                     <список_IP-адресов>
                   ]
                 }
                ]
              }'
    

    Где:

    • permission — новое право на доступ к топику:
      • topicName — имя топика. Чтобы узнать имя, получите список топиков в кластере.
      • role — роль пользователя: ACCESS_ROLE_CONSUMER, ACCESS_ROLE_PRODUCER, ACCESS_ROLE_TOPIC_ADMIN или ACCESS_ROLE_ADMIN. Роль ACCESS_ROLE_ADMIN доступна только если выбраны все топики (topicName: "*"). Подробнее о правах, которые предоставляет каждая роль.
      • allowHosts — (опционально) список IP-адресов, с которых пользователю разрешен доступ к топику.

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

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Вместе с доступом к топику пользователю также предоставляется доступ к субъектам схем данных. То, какие субъекты доступны, зависит от указанных ролей и топиков. Подробнее читайте в разделе Субъекты в Managed Schema Registry.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом UserService/GrantPermission и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/user_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "user_name": "<имя_пользователя>",
            "permission": [
              {
                "topic_name": "<имя_топика>",
                "role": "<роль_пользователя>",
                "allow_hosts": [
                  <список_IP-адресов>
                ]
              }
            ]
          }' \
      mdb.api.yandexcloud.kz:443 \
      yandex.cloud.mdb.kafka.v1.UserService.GrantPermission
    

    Где:

    • permission — новое право на доступ к топику:
      • topic_name — имя или шаблон имени топика. Чтобы узнать имя, получите список топиков в кластере. Для указания всех топиков в кластере используйте маску *.
      • role — роль пользователя: ACCESS_ROLE_CONSUMER, ACCESS_ROLE_PRODUCER, ACCESS_ROLE_TOPIC_ADMIN или ACCESS_ROLE_ADMIN. Роль ACCESS_ROLE_ADMIN доступна только если выбраны все топики (topicName: "*"). Подробнее о правах, которые предоставляет каждая роль.
      • allow_hosts — (опционально) список IP-адресов, с которых пользователю разрешен доступ к топику.

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

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Вместе с доступом к топику пользователю также предоставляется доступ к субъектам схем данных. То, какие субъекты доступны, зависит от указанных ролей и топиков. Подробнее читайте в разделе Субъекты в Managed Schema Registry.

Отозвать права у пользователяОтозвать права у пользователя

Если в кластере отозвать у пользователя-администратора роль ACCESS_ROLE_ADMIN, то будет потеряна возможность управлять топиками. Не отзывайте эту роль или выдайте ее другому пользователю.

Консоль управления
CLI
Terraform
REST API
gRPC API
  1. В консоли управления перейдите в нужный каталог.
  2. В списке сервисов выберите Managed Service for Kafka.
  3. Выберите кластер.
  4. Перейдите на вкладку Пользователи.
  5. Нажмите значок для нужного пользователя и выберите пункт Настроить.
  6. Найдите нужный топик в списке топиков.
  7. Удалите роль, которая больше не нужна: нажмите значок рядом с именем роли. Если нужно отозвать все права на доступ к топику, удалите его из списка: наведите курсор на имя топика и нажмите значок в конце строки.

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

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

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

yc managed-kafka user update <имя_пользователя> \
  --cluster-name <имя_кластера> \
  --permission topic=<имя_топика>,role=<роль_пользователя>,allow_host=<разрешенный_IP-адрес_1>,allow_host=<разрешенный_IP-адрес_2>,...,allow_host=<разрешенный_IP-адрес_N>

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

Параметр --permission должен содержать хотя бы одну пару топик-роль, где:

  • topic — имя топика.
  • role — роль пользователя: producer, consumer, admin или topic_admin. Подробнее о правах, которые предоставляет каждая роль.
  • allow_host — (опционально) IP-адрес, с которого разрешен доступ этому пользователю. Чтобы задать несколько адресов, добавьте нужное количество опций allow_host через запятую.

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

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

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

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

  2. Найдите в этом файле ресурс yandex_mdb_kafka_user для нужного пользователя.

  3. Измените или удалите блок permission.

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

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

Провайдер Terraform ограничивает время на выполнение всех операций с кластером Managed Service for Apache Kafka® 60 минутами.

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

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

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

resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом User.revokePermission и выполните запрос, например, с помощью cURL:

    curl \
      --request POST \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.yandexcloud.kz/managed-kafka/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>:revokePermission' \
      --data '{
                "permission": [
                  {
                   "topicName": "<имя_топика>",
                   "role": "<роль_пользователя>",
                   "allowHosts": [
                     <список_IP-адресов>
                   ]
                 }
                ]
              }'
    

    Где:

    • permission — отзываемое право на доступ к топику:
      • topicName — имя топика. Чтобы узнать имя, получите список топиков в кластере.
      • role — роль пользователя, которую требуется отозвать: ACCESS_ROLE_PRODUCER, ACCESS_ROLE_CONSUMER, ACCESS_ROLE_ADMIN или ACCESS_ROLE_TOPIC_ADMIN.
      • allowHosts – (опционально) список IP-адресов, с которых пользователю будет отозван доступ к топику.

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

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом UserService/RevokePermission и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/user_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "user_name": "<имя_пользователя>",
            "permission": [
              {
                "topic_name": "<имя_топика>",
                "role": "<роль_пользователя>",
                "allow_hosts": [
                  <список_IP-адресов>
                ]
              }
            ]
          }' \
      mdb.api.yandexcloud.kz:443 \
      yandex.cloud.mdb.kafka.v1.UserService.RevokePermission
    

    Где:

    • permission — отзываемое право на доступ к топику:
      • topic_name — имя или шаблон имени топика. Чтобы узнать имя, получите список топиков в кластере.
      • role — роль пользователя, которую требуется отозвать: ACCESS_ROLE_PRODUCER, ACCESS_ROLE_CONSUMER, ACCESS_ROLE_ADMIN или ACCESS_ROLE_TOPIC_ADMIN.
      • allow_hosts — (опционально) список IP-адресов, доступ к топику с которых будет отозван у пользователя.

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

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

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

С помощью импорта вы можете передать существующих в кластере пользователей под управление Terraform.

Terraform
  1. Укажите в конфигурационном файле Terraform пользователя, которого необходимо импортировать:

    resource "yandex_mdb_kafka_user" "<имя_пользователя>" {}
    
  2. Выполните команду для импорта пользователя:

    terraform import yandex_mdb_kafka_user.<имя_пользователя> <идентификатор_кластера>:<имя_пользователя>
    

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

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

Если в кластере удалить пользователя-администратора с ролью ACCESS_ROLE_ADMIN, то будет потеряна возможность управлять топиками. Перед удалением выдайте эту роль другому пользователю.

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

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

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

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

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

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

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

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

  2. Удалите ресурс yandex_mdb_kafka_user для нужного пользователя.

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

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

Провайдер Terraform ограничивает время на выполнение всех операций с кластером Managed Service for Apache Kafka® 60 минутами.

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

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

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

resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом User.delete и выполните запрос, например, с помощью cURL:

    curl \
      --request DELETE \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --url 'https://mdb.api.yandexcloud.kz/managed-kafka/v1/clusters/<идентификатор_кластера>/users/<имя_пользователя>'
    

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

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом UserService/Delete и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/user_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "user_name": "<имя_пользователя>"
          }' \
      mdb.api.yandexcloud.kz:443 \
      yandex.cloud.mdb.kafka.v1.UserService.Delete
    

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

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

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

Предыдущая
Управление топиками
Следующая
Управление коннекторами
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»