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

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

  • Получить список ролей, назначенных на кластер
  • Назначить роль
  • Назначить несколько ролей
  • Отозвать роль
  • Примеры
  • Добавить сервисному аккаунту доступ к управлению кластером
  1. Пошаговые инструкции
  2. Управление доступом к кластеру

Управление доступом к кластеру Managed Service for Sharded PostgreSQL

Статья создана
Yandex Cloud
Обновлена 18 марта 2026 г.
  • Получить список ролей, назначенных на кластер
  • Назначить роль
  • Назначить несколько ролей
  • Отозвать роль
  • Примеры
    • Добавить сервисному аккаунту доступ к управлению кластером

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

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

Важно

Учитывайте, что помимо роли для доступа к кластеру у пользователя должна быть минимальная роль для просмотра ресурсов в каталоге, например managed-spqr.viewer (для просмотра информации обо всех кластерах в каталоге) или примитивная viewer (для просмотра всех ресурсов в каталоге).

Например, вы можете выдать пользователю роль managed-spqr.viewer на каталог и роль managed-spqr.editor для управления конкретным кластером. Таким образом пользователь сможет просматривать информацию обо всех кластерах каталога, а работать только с конкретным кластером.

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

Получить список ролей, назначенных на кластерПолучить список ролей, назначенных на кластер

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

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

    curl \
      --request GET \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.yandexcloud.kz/managed-spqr/v1/clusters/<идентификатор_кластера>:listAccessBindings'
    
  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

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

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

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

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

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

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/spqr/v1/cluster_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "resource_id": "<идентификатор_кластера>"
          }' \
      mdb.api.yandexcloud.kz:443 \
      yandex.cloud.mdb.spqr.v1.ClusterService.ListAccessBindings
    
  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Назначить рольНазначить роль

Terraform
REST API
gRPC API
  1. Откройте актуальный конфигурационный файл с описанием кластера Managed Service for Sharded PostgreSQL.

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

  2. Добавьте описание ресурса:

    resource "yandex_mdb_sharded_postgresql_cluster_iam_binding" "<локальное_имя_ресурса>" {
      cluster_id = "<идентификатор_кластера>"
      role       = "<роль>"
      members    = [
        "<тип_субъекта>:<идентификатор_субъекта>"
      ]
    }
    

    Где:

    • cluster_id — идентификатор кластера.

    • role — назначаемая роль, например managed-spqr.editor.

    • members — список субъектов, которым назначается роль, в формате: <тип_субъекта>:<идентификатор_субъекта>.

      Например:

      • serviceAccount:aje6p030123a********,
      • userAccount:ajerq94vab34********,
      • system:allAuthenticatedUsers.

      Допустимые типы субъектов:

      • userAccount — аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей.

      • serviceAccount — сервисный аккаунт, созданный в Yandex Cloud.

      • federatedUser — аккаунт пользователя федерации удостоверений.

      • system — публичная группа пользователей.

        Допустимые значения идентификатора субъекта:

        • allAuthenticatedUsers — все пользователи, прошедшие аутентификацию.
        • allUsers — любой пользователь, прохождение аутентификации не требуется.
        • group:organization:<идентификатор_организации>:users — все пользователи указанной организации.
        • group:federation:<идентификатор_федерации>:users — все пользователи указанной федерации удостоверений.

      Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.

  3. Проверьте корректность конфигурационных файлов.

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

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

    curl \
      --request PATCH \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.yandexcloud.kz/managed-spqr/v1/clusters/<идентификатор_кластера>:updateAccessBindings' \
      --data '{
                "access_binding_deltas": [
                  {
                    "action": "ADD",
                    "access_binding": {
                      "role_id": "<роль>",
                      "subject": {
                        "id": "<идентификатор_субъекта>",
                        "type": "<тип_субъекта>"
                      }
                    }
                  }
                ]
              }'
    

    Где:

    • access_binding_deltas.roleId — назначаемая роль, например managed-spqr.editor.

    • access_binding_deltas.subject.id — идентификатор субъекта, которому назначается роль.

    • access_binding_deltas.subject.type — тип субъекта, которому назначается роль.

      Допустимые типы субъектов:

      • userAccount — аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей.

      • serviceAccount — сервисный аккаунт, созданный в Yandex Cloud.

      • federatedUser — аккаунт пользователя федерации удостоверений.

      • system — публичная группа пользователей.

        Допустимые значения идентификатора субъекта:

        • allAuthenticatedUsers — все пользователи, прошедшие аутентификацию.
        • allUsers — любой пользователь, прохождение аутентификации не требуется.
        • group:organization:<идентификатор_организации>:users — все пользователи указанной организации.
        • group:federation:<идентификатор_федерации>:users — все пользователи указанной федерации удостоверений.

      Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.

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

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

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

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

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

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

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/spqr/v1/cluster_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "resource_id": "<идентификатор_кластера>",
            "access_binding_deltas": [
              {
                "action": "ADD",
                "access_binding": {
                  "role_id": "<роль>",
                  "subject": {
                    "id": "<идентификатор_субъекта>",
                    "type": "<тип_субъекта>"
                  }
                }
              }
            ]
          }' \
      mdb.api.yandexcloud.kz:443 \
      yandex.cloud.mdb.spqr.v1.ClusterService.UpdateAccessBindings
    

    Где:

    • resource_id — идентификатор кластера.

    • access_binding_deltas.roleId — назначаемая роль, например managed-spqr.editor.

    • access_binding_deltas.subject.id — идентификатор субъекта, которому назначается роль.

    • access_binding_deltas.subject.type — тип субъекта, которому назначается роль.

      Допустимые типы субъектов:

      • userAccount — аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей.

      • serviceAccount — сервисный аккаунт, созданный в Yandex Cloud.

      • federatedUser — аккаунт пользователя федерации удостоверений.

      • system — публичная группа пользователей.

        Допустимые значения идентификатора субъекта:

        • allAuthenticatedUsers — все пользователи, прошедшие аутентификацию.
        • allUsers — любой пользователь, прохождение аутентификации не требуется.
        • group:organization:<идентификатор_организации>:users — все пользователи указанной организации.
        • group:federation:<идентификатор_федерации>:users — все пользователи указанной федерации удостоверений.

      Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.

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

Назначить несколько ролейНазначить несколько ролей

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

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

  2. Добавьте описание ресурсов:

    resource "yandex_mdb_sharded_postgresql_cluster_iam_binding" "<локальное_имя_ресурса_1>" {
      cluster_id = "<идентификатор_кластера>"
      role       = "<роль_1>"
      members    = [
        "<тип_субъекта>:<идентификатор_субъекта_1>",
        "<тип_субъекта>:<идентификатор_субъекта_2>"
      ]
    }
    
    resource "yandex_mdb_sharded_postgresql_cluster_iam_binding" "<локальное_имя_ресурса_2>" {
      cluster_id = "<идентификатор_кластера>"
      role       = "<роль_2>"
      members    = [
        "<тип_субъекта>:<идентификатор_субъекта_3>"
      ]
    }
    

    Где:

    • cluster_id — идентификатор кластера.

    • role — назначаемая роль, например managed-spqr.editor.

    • members — список субъектов, которым назначается роль, в формате: <тип_субъекта>:<идентификатор_субъекта>.

      Например:

      • serviceAccount:aje6p030123a********,
      • userAccount:ajerq94vab34********,
      • system:allAuthenticatedUsers.

      Допустимые типы субъектов:

      • userAccount — аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей.

      • serviceAccount — сервисный аккаунт, созданный в Yandex Cloud.

      • federatedUser — аккаунт пользователя федерации удостоверений.

      • system — публичная группа пользователей.

        Допустимые значения идентификатора субъекта:

        • allAuthenticatedUsers — все пользователи, прошедшие аутентификацию.
        • allUsers — любой пользователь, прохождение аутентификации не требуется.
        • group:organization:<идентификатор_организации>:users — все пользователи указанной организации.
        • group:federation:<идентификатор_федерации>:users — все пользователи указанной федерации удостоверений.

      Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.

  3. Проверьте корректность конфигурационных файлов.

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

Внимание

Метод setAccessBindings перезаписывает права доступа к ресурсу. Все текущие роли на ресурс будут удалены.

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

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

    curl \
      --request POST \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.yandexcloud.kz/managed-spqr/v1/clusters/<идентификатор_кластера>:setAccessBindings' \
      --data '{
                "accessBindings": [
                  {
                    "roleId": "<роль>",
                    "subject": {
                      "id": "<идентификатор_субъекта_1>",
                      "type": "<тип_субъекта>"
                    }
                  },
                  {
                    "roleId": "<роль>",
                    "subject": {
                      "id": "<идентификатор_субъекта_2>",
                      "type": "<тип_субъекта>"
                    }
                  },
                  ...
                  {
                    "roleId": "<роль>",
                    "subject": {
                      "id": "<идентификатор_субъекта_N>",
                      "type": "<тип_субъекта>"
                    }
                  }
                ]
              }'
    

    Где:

    • accessBindings.roleId — назначаемая роль, например managed-spqr.editor.

    • accessBindings.subject.id — идентификатор субъекта, которому назначается роль.

    • accessBindings.subject.type — тип субъекта, которому назначается роль.

      Допустимые типы субъектов:

      • userAccount — аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей.

      • serviceAccount — сервисный аккаунт, созданный в Yandex Cloud.

      • federatedUser — аккаунт пользователя федерации удостоверений.

      • system — публичная группа пользователей.

        Допустимые значения идентификатора субъекта:

        • allAuthenticatedUsers — все пользователи, прошедшие аутентификацию.
        • allUsers — любой пользователь, прохождение аутентификации не требуется.
        • group:organization:<идентификатор_организации>:users — все пользователи указанной организации.
        • group:federation:<идентификатор_федерации>:users — все пользователи указанной федерации удостоверений.

      Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.

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

Внимание

Вызов ClusterService.SetAccessBindings полностью перезаписывает права доступа к ресурсу. Все текущие роли на ресурс будут удалены.

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

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

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

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

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

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/spqr/v1/cluster_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "resource_id": "<идентификатор_кластера>",
            "accessBindings": [
              {
                "roleId": "<роль>",
                "subject": {
                  "id": "<идентификатор_субъекта_1>",
                  "type": "<тип_субъекта>"
                }
              },
              {
                "roleId": "<роль>",
                "subject": {
                  "id": "<идентификатор_субъекта_2>",
                  "type": "<тип_субъекта>"
                }
              },
              ...
              {
                "roleId": "<роль>",
                "subject": {
                  "id": "<идентификатор_субъекта_N>",
                  "type": "<тип_субъекта>"
                }
              }
            ]
          }' \
      mdb.api.yandexcloud.kz:443 \
      yandex.cloud.mdb.spqr.v1.ClusterService.SetAccessBindings
    

    Где:

    • resource_id — идентификатор кластера.

    • accessBindings.roleId — назначаемая роль, например managed-spqr.editor.

    • accessBindings.subject.id — идентификатор субъекта, которому назначается роль.

    • accessBindings.subject.type — тип субъекта, которому назначается роль.

      Допустимые типы субъектов:

      • userAccount — аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей.

      • serviceAccount — сервисный аккаунт, созданный в Yandex Cloud.

      • federatedUser — аккаунт пользователя федерации удостоверений.

      • system — публичная группа пользователей.

        Допустимые значения идентификатора субъекта:

        • allAuthenticatedUsers — все пользователи, прошедшие аутентификацию.
        • allUsers — любой пользователь, прохождение аутентификации не требуется.
        • group:organization:<идентификатор_организации>:users — все пользователи указанной организации.
        • group:federation:<идентификатор_федерации>:users — все пользователи указанной федерации удостоверений.

      Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.

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

Отозвать рольОтозвать роль

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

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

  2. Найдите описание ресурса с ролью, которую вы хотите отозвать, и удалите его:

    resource "yandex_mdb_sharded_postgresql_cluster_iam_binding" "<локальное_имя_ресурса>" {
      cluster_id = "<идентификатор_кластера>"
      role       = "<роль>"
      members    = [
        "<тип_субъекта>:<идентификатор_субъекта>"
      ]
    }
    
  3. Проверьте корректность конфигурационных файлов.

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

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

    curl \
      --request PATCH \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.yandexcloud.kz/managed-spqr/v1/clusters/<идентификатор_кластера>:updateAccessBindings' \
      --data '{
                "access_binding_deltas": [
                  {
                    "action": "REMOVE",
                    "access_binding": {
                      "role_id": "<роль>",
                      "subject": {
                        "id": "<идентификатор_субъекта>",
                        "type": "<тип_субъекта>"
                      }
                    }
                  }
                ]
              }'
    

    Где:

    • access_binding_deltas.roleId — назначаемая роль, например managed-spqr.editor.

    • access_binding_deltas.subject.id — идентификатор субъекта, которому назначается роль.

    • access_binding_deltas.subject.type — тип субъекта, которому назначается роль.

      Допустимые типы субъектов:

      • userAccount — аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей.

      • serviceAccount — сервисный аккаунт, созданный в Yandex Cloud.

      • federatedUser — аккаунт пользователя федерации удостоверений.

      • system — публичная группа пользователей.

        Допустимые значения идентификатора субъекта:

        • allAuthenticatedUsers — все пользователи, прошедшие аутентификацию.
        • allUsers — любой пользователь, прохождение аутентификации не требуется.
        • group:organization:<идентификатор_организации>:users — все пользователи указанной организации.
        • group:federation:<идентификатор_федерации>:users — все пользователи указанной федерации удостоверений.

      Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.

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

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

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

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

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

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

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/spqr/v1/cluster_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "resource_id": "<идентификатор_кластера>",
            "access_binding_deltas": [
              {
                "action": "REMOVE",
                "access_binding": {
                  "role_id": "<роль>",
                  "subject": {
                    "id": "<идентификатор_субъекта>",
                    "type": "<тип_субъекта>"
                  }
                }
              }
            ]
          }' \
      mdb.api.yandexcloud.kz:443 \
      yandex.cloud.mdb.spqr.v1.ClusterService.UpdateAccessBindings
    

    Где:

    • resource_id — идентификатор кластера.

    • access_binding_deltas.roleId — назначаемая роль, например managed-spqr.editor.

    • access_binding_deltas.subject.id — идентификатор субъекта, которому назначается роль.

    • access_binding_deltas.subject.type — тип субъекта, которому назначается роль.

      Допустимые типы субъектов:

      • userAccount — аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей.

      • serviceAccount — сервисный аккаунт, созданный в Yandex Cloud.

      • federatedUser — аккаунт пользователя федерации удостоверений.

      • system — публичная группа пользователей.

        Допустимые значения идентификатора субъекта:

        • allAuthenticatedUsers — все пользователи, прошедшие аутентификацию.
        • allUsers — любой пользователь, прохождение аутентификации не требуется.
        • group:organization:<идентификатор_организации>:users — все пользователи указанной организации.
        • group:federation:<идентификатор_федерации>:users — все пользователи указанной федерации удостоверений.

      Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.

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

ПримерыПримеры

Добавить сервисному аккаунту доступ к управлению кластеромДобавить сервисному аккаунту доступ к управлению кластером

Чтобы сервисный аккаунт мог просматривать информацию обо всех кластерах Managed Service for Sharded PostgreSQL в каталоге, но изменять ресурсы только конкретного кластера, выдайте ему роль managed-spqr.viewer на каталог и роль managed-spqr.editor на этот кластер:

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

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

  2. Добавьте описание ресурса:

    resource "yandex_mdb_sharded_postgresql_cluster_iam_binding" "spqr-cluster-editor" {
      cluster_id = "<идентификатор_кластера>"
      role       = "managed-spqr.editor"
      members    = [
        "serviceAccount:<идентификатор_сервисного_аккаунта>"
      ]
    }
    

    Где:

    • cluster_id — идентификатор кластера.
    • role — назначаемая роль.
    • members — список субъектов, которым назначается роль, в формате: <тип_субъекта>:<идентификатор_субъекта>.
  3. Проверьте корректность конфигурационных файлов.

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

    export IAM_TOKEN="<IAM-токен>"
    
  2. Назначьте роль на каталог:

    curl \
      --request POST \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://resource-manager.api.yandexcloud.kz/resource-manager/v1/folders/<идентификатор_каталога>:updateAccessBindings' \
      --data '{
                "access_binding_deltas": [
                  {
                    "action": "ADD",
                    "access_binding": {
                      "role_id": "managed-spqr.viewer",
                      "subject": {
                        "id": "<идентификатор_сервисного_аккаунта>",
                        "type": "serviceAccount"
                      }
                    }
                  }
                ]
              }'
    

    Где access_binding_deltas.subject.id — идентификатор сервисного аккаунта, которому назначается роль.

  3. Воспользуйтесь методом Cluster.UpdateAccessBindings и выполните запрос, например, с помощью cURL:

    curl \
      --request PATCH \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.yandexcloud.kz/managed-spqr/v1/clusters/<идентификатор_кластера>:updateAccessBindings' \
      --data '{
                "access_binding_deltas": [
                  {
                    "action": "ADD",
                    "access_binding": {
                      "role_id": "managed-spqr.editor",
                      "subject": {
                        "id": "<идентификатор_сервисного_аккаунта>",
                        "type": "serviceAccount"
                      }
                    }
                  }
                ]
              }'
    

    Где access_binding_deltas.subject.id — идентификатор сервисного аккаунта, которому назначается роль.

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

    curl \
      --request GET \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://resource-manager.api.yandexcloud.kz/resource-manager/v1/folders/<идентификатор_каталога>:listAccessBindings'
    
  5. Проверьте список ролей, назначенных на кластер:

    curl \
      --request GET \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.yandexcloud.kz/managed-spqr/v1/clusters/<идентификатор_кластера>:listAccessBindings'
    
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

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

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

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

  3. Назначьте роль на каталог:

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/resourcemanager/v1/folder_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "resource_id": "<идентификатор_каталога>",
            "access_binding_deltas": [
              {
                "action": "ADD",
                "access_binding": {
                  "role_id": "managed-spqr.viewer",
                  "subject": {
                    "id": "<идентификатор_сервисного_аккаунта>",
                    "type": "serviceAccount"
                  }
                }
              }
            ]
          }' \
      resource-manager.api.yandexcloud.kz:443 \
      yandex.cloud.resourcemanager.v1.FolderService.UpdateAccessBindings
    

    Где access_binding_deltas.subject.id — идентификатор сервисного аккаунта, которому назначается роль.

  4. Назначьте роль на кластер:

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/spqr/v1/cluster_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "resource_id": "<идентификатор_кластера>",
            "access_binding_deltas": [
              {
                "action": "ADD",
                "access_binding": {
                  "role_id": "managed-spqr.editor",
                  "subject": {
                    "id": "<идентификатор_сервисного_аккаунта>",
                    "type": "serviceAccount"
                  }
                }
              }
            ]
          }' \
      mdb.api.yandexcloud.kz:443 \
      yandex.cloud.mdb.spqr.v1.ClusterService.UpdateAccessBindings
    

    Где access_binding_deltas.subject.id — идентификатор сервисного аккаунта, которому назначается роль.

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

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/resourcemanager/v1/folder_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "resource_id": "<идентификатор_каталога>"
          }' \
      resource-manager.api.yandexcloud.kz:443 \
      yandex.cloud.resourcemanager.v1.FolderService.ListAccessBindings
    
  6. Проверьте список ролей, назначенных на кластер:

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

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

Предыдущая
Подключение к базе данных
Следующая
Изменение кластера
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»