Yandex Cloud
Поиск
Связаться с намиПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»
Все решения
    • Все решения для IAM
    • Устранение ошибок при назначении роли `resource-manager.clouds.owner` пользователю облака
    • Устранение ошибок при работе с приглашениями в облачную организацию
    • Устранение ошибки `The signature of response or assertion was invalid` при авторизации федеративным аккаунтом
    • Устранение проблем при создании OAuth-токенов от имени учетных записей Яндекс ID
    • Устранение ошибки `publicAccessBindings` при переносе облака между разными организациями
    • Устранение ошибки `OAuth token is invalid or expired`
    • Устранение ошибки `Обратитесь к администратору организации за новым приглашением`
    • Устранение ошибки `Service account is not available`
    • Устранение ошибки `PROHIBITED_BILLING_ACCOUNT_USAGE_STATUS`
    • Устранение ошибки `Validation failed - access_binding_deltas Number of elements must be in the range of 1 to 1000`
    • В списке пользователей организации не отображается федеративный пользователь
    • Пользователь не видит приглашение в организацию или роль `admin`
    • Появление неизвестного пользователя в организации
    • Устранение ошибки `Такой логин не подойдет`
    • Устранение ошибки `Forbidden` при работе от имени сервисного аккаунта
    • Как отменить удаление облака
    • Как изменить владельца облака
    • Как изменить владельца организации
    • Как удалить организацию
    • Какое время жизни сессии при аутентификации федеративного пользователя
    • Какую минимальную роль необходимо выдать пользователю для доступа к Консоли управления

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

  • Описание проблемы
  • Решение
  • Назначение роли на ресурс
  1. Identity and Access Management
  2. Устранение ошибки `Forbidden` при работе от имени сервисного аккаунта

Устранение ошибки Forbidden при работе от имени сервисного аккаунта

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 3 марта 2026 г.
  • Описание проблемы
  • Решение
  • Назначение роли на ресурс

Описание проблемыОписание проблемы

При работе от имени сервисного аккаунта возникают ошибки 403 Forbidden или Permission Denied.

РешениеРешение

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

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

Назначение роли на ресурсНазначение роли на ресурс

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

Чтобы назначить роль на ресурс, нужна роль admin или service-name.admin, где service-name— название сервиса, на ресурс которого назначается роль.

Узнайте, на какие ресурсы можно назначать роли.

Чтобы назначить роль на ресурс:

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

Роли сервисному аккаунту назначаются так же, как пользовательскому аккаунту.

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

  1. В консоли управления на панели сверху нажмите или и выберите облако или каталог.
  2. Перейдите на вкладку Права доступа.
  3. Нажмите кнопку Настроить доступ.
  4. В открывшемся окне выберите раздел Сервисные аккаунты.
  5. Выберите нужный сервисный аккаунт из списка или воспользуйтесь поиском.
  6. Нажмите кнопку Добавить роль и выберите роль из списка или воспользуйтесь поиском.
  7. Нажмите кнопку Сохранить.

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

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

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

yc resource-manager <категория_ресурса> add-access-binding <имя_или_идентификатор_ресурса> \
  --role <идентификатор_роли> \
  --subject serviceAccount:<идентификатор_сервисного_аккаунта>

Где:

  • <категория_ресурса> — cloud, чтобы назначить роль на облако, или folder, чтобы назначить роль на каталог.
  • <имя_или_идентификатор_ресурса> — имя или идентификатор ресурса, на который назначается роль.
  • --role — идентификатор роли, например viewer.
  • --subject serviceAccount — идентификатор сервисного аккаунта, которому назначается роль.

Например, чтобы назначить сервисному аккаунту роль viewer на каталог my-folder:

  1. Выберите роль, которую хотите назначить сервисному аккаунту. Описание ролей можно найти в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud.

  2. Узнайте идентификатор сервисного аккаунта по его имени:

    yc iam service-account get my-robot
    

    Результат:

    id: aje6o61dvog2********
    folder_id: b1gvmob95yys********
    created_at: "2018-10-15T18:01:25Z"
    name: my-robot
    

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

    yc iam service-account list
    

    Результат:

    +----------------------+------------------+-----------------+
    |          ID          |       NAME       |   DESCRIPTION   |
    +----------------------+------------------+-----------------+
    | aje6o61dvog2******** | my-robot         | my description  |
    +----------------------+------------------+-----------------+
    
  3. Назначьте роль viewer сервисному аккаунту my-robot, используя его идентификатор:

    yc resource-manager folder add-access-binding my-folder \
      --role viewer \
      --subject serviceAccount:aje6o61dvog2********
    

Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

  1. Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:

    Пример структуры конфигурационного файла:

    resource "yandex_resourcemanager_folder_iam_member" "admin-account-iam" {
      folder_id   = "<идентификатор_каталога>"
      role        = "<роль>"
      member      = "serviceAccount:<идентификатор_сервисного_аккаунта>"
    }
    

    Где:

    • folder_id — идентификатор каталога. Обязательный параметр.
    • role — назначаемая роль. Описание ролей можно найти в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud. Обязательный параметр.
    • member — идентификатор сервисного аккаунта, которому назначается роль. Указывается в виде serviceAccount:<идентификатор_сервисного_аккаунта>. Обязательный параметр.

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

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

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

    2. Выполните проверку с помощью команды:

      terraform plan
      

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

  3. Разверните облачные ресурсы.

    1. Если в конфигурации нет ошибок, выполните команду:

      terraform apply
      
    2. Подтвердите создание ресурсов: введите в терминал слово yes и нажмите Enter.

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

    yc resource-manager folder list-access-bindings <имя_или_идентификатор_каталога>
    

Чтобы назначить сервисному аккаунту роль на облако или каталог, воспользуйтесь методом REST API updateAccessBindings для ресурса Cloud или Folder:

  1. Выберите роль, которую хотите назначить сервисному аккаунту. Описание ролей можно найти в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud.

  2. Узнайте ID каталога с сервисными аккаунтами.

  3. Получите IAM-токен для аутентификации в API Yandex Cloud.

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

    export FOLDER_ID=b1gvmob95yys********
    export IAM_TOKEN=CggaATEVAgA...
    curl \
      --header "Authorization: Bearer ${IAM_TOKEN}" \
      "https://iam.api.yandexcloud.kz/iam/v1/serviceAccounts?folderId=${FOLDER_ID}"
    

    Результат:

    {
     "serviceAccounts": [
      {
       "id": "ajebqtreob2d********",
       "folderId": "b1gvmob95yys********",
       "createdAt": "2018-10-18T13:42:40Z",
       "name": "my-robot",
       "description": "my description"
      }
     ]
    }
    
  5. Сформируйте тело запроса, например в файле body.json. В свойстве action укажите ADD, в свойстве roleId — нужную роль, например editor, а в свойстве subject — тип serviceAccount и идентификатор сервисного аккаунта:

    body.json:

    {
      "accessBindingDeltas": [{
        "action": "ADD",
        "accessBinding": {
          "roleId": "editor",
          "subject": {
            "id": "ajebqtreob2d********",
            "type": "serviceAccount"
          }
        }
      }]
    }
    
  6. Назначьте роль сервисному аккаунту. Например, на каталог с идентификатором b1gvmob95yys********:

    export FOLDER_ID=b1gvmob95yys********
    export IAM_TOKEN=CggaAT********
    curl \
      --request POST \
      --header "Content-Type: application/json" \
      --header "Authorization: Bearer ${IAM_TOKEN}" \
      --data '@body.json' \
      "https://resource-manager.api.yandexcloud.kz/resource-manager/v1/folders/${FOLDER_ID}:updateAccessBindings"
    

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

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