Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
    • Cloud Interconnect
    • Cloud Backup
    • Cloud Registry
    • Yandex AI Studio
    • Compute Cloud
    • Object Storage
    • Managed Service for Kubernetes®
    • Yandex BareMetal
    • Smart Web Security
    • Security Deck
    • Managed Service for PostgreSQL
    • Managed Service for ClickHouse®
    • Monium
    • Cloud CDN
    • Network Load Balancer
    • Virtual Private Cloud
    • Cloud DNS
    • Application Load Balancer
    • Yandex Cloud Video
    • Stackland
    • Yandex Cloud Router
    • Yandex Managed Service for Trino
    • Managed Service for MySQL®
    • Managed Service for Valkey™
    • Managed Service for Apache Spark™
    • Yandex StoreDoc
    • Managed Service for OpenSearch
    • Managed Service for Apache Kafka®
    • Data Transfer
    • Yandex MPP Analytics Engine for PostgreSQL
    • Yandex Managed Service for Apache Airflow®
    • Data Processing
    • Yandex MetaData Hub
    • Managed Service for YDB
    • Managed Service for Sharded PostgreSQL
    • Managed Service for YTsaurus
    • Yandex WebSQL
    • DataLens
    • Yandex Search API
    • SpeechSense
    • SpeechKit
    • DataSphere
    • Vision OCR
    • Translate
    • Yandex Neurosupport
    • Yandex Cloud Detection and Response
    • Yandex Identity Hub
    • Key Management Service
    • Certificate Manager
    • Yandex Lockbox
    • Audit Trails
    • SmartCaptcha
    • Cloud Desktop
    • GOST Gateway
    • Yandex SIEM
    • SourceCraft Code Assistant
    • Container Registry
    • Managed Service for GitLab
    • SourceCraft
    • Managed Service for Prometheus®
    • Cloud Functions
    • API Gateway
    • Yandex Cloud Postbox
    • Message Queue
    • Serverless Integrations
    • IoT Core
    • Data Streams
    • Serverless Containers
    • Cloud Notification Service
    • Yandex Query
    • Identity and Access Management
    • Yandex Cloud Console
    • Resource Manager
    • Yandex Cloud Billing
    • Yandex Cloud Quota Manager
    • Cloud Apps
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Yandex Cloud Trust
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка 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`
    • Появление неизвестного пользователя в организации
    • Устранение ошибки `Такой логин не подойдет`
    • Устранение ошибки `Response is invalid in a general way` при авторизации через SAML-провайдер
    • Устранение ошибки `Forbidden` при работе от имени сервисного аккаунта
    • Как отменить удаление облака
    • Как изменить владельца облака
    • Как изменить владельца организации
    • Как удалить организацию
    • Какое время жизни сессии при аутентификации федеративного пользователя
    • Какую минимальную роль необходимо выдать пользователю для доступа к Консоли управления

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

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

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

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

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

При работе от имени сервисного аккаунта возникают ошибки 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 <идентификатор_роли> \
  --service-account-id <идентификатор_сервисного_аккаунта>

Где:

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

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

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

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

    yc iam service-account get <имя_сервисного_аккаунта>
    

    Результат:

    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. Назначьте роль сервисному аккаунту, используя его идентификатор:

    yc resource-manager folder add-access-binding <имя_или_идентификатор_каталога> \
      --role <роль> \
      --service-account-id <идентификатор_сервисного_аккаунта>
    

    Где:

    • --role — идентификатор роли, которую нужно назначить.
    • --service-account-id — идентификатор сервисного аккаунта. Также вы можете использовать параметр --service-account-name и указать логин пользователя вместо идентификатора.

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

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

  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:<идентификатор_сервисного_аккаунта>.

      Обозначения субъектов

      Для обозначения субъекта используется комбинация типа и уникального идентификатора — <тип_субъекта>:<идентификатор>. Возможные обозначения субъектов:

      Тип субъекта

      Обозначение субъекта

      userAccount

      userAccount:<идентификатор_пользователя>

      serviceAccount

      serviceAccount:<идентификатор_сервисного_аккаунта>

      federatedUser

      federatedUser:<идентификатор_пользователя>

      group

      group:<идентификатор_группы>

      system

      system:allAuthenticatedUsers

      (группа All authenticated users)

      system:allUsers

      (группа All users)

      system:group:organization:<идентификатор_организации>:users

      (группа All users in organization X)

      system:group:federation:<идентификатор_федерации>:users

      (группа All users in federation N)

      system:group:userpool:<идентификатор_пула>:users

      (группа All users in userpool P)

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

  2. Создайте ресурсы:

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

    2. Проверьте корректность конфигурации с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

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

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово 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=<идентификатор_каталога>
    export IAM_TOKEN=<IAM-токен>
    curl \
      --header "Authorization: Bearer ${IAM_TOKEN}" \
      "https://iam.api.cloud.yandex.net/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:

    {
      "accessBindingDeltas": [{
        "action": "ADD",
        "accessBinding": {
          "roleId": "<роль>",
          "subject": {
            "id": "<идентификатор_сервисного_аккаунта>",
            "type": "serviceAccount"
          }
        }
      }]
    }
    

    Где:

    • roleId — назначаемая роль.

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

      Обозначения субъектов

      Для обозначения субъекта используется комбинация типа и уникального идентификатора в полях запроса subject.type и subject.id. Возможные комбинации:

      subject.type

      subject.id

      userAccount

      <идентификатор_пользователя>

      serviceAccount

      <идентификатор_сервисного_аккаунта>

      federatedUser

      <идентификатор_пользователя>

      group

      <идентификатор_группы>

      system

      allAuthenticatedUsers

      (группа All authenticated users)

      allUsers

      (группа All users)

      group:organization:<идентификатор_организации>:users

      (группа All users in organization X)

      group:federation:<идентификатор_федерации>:users

      (группа All users in federation N)

      group:userpool:<идентификатор_пула>:users

      (группа All users in userpool P)

  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.cloud.yandex.net/resource-manager/v1/folders/${FOLDER_ID}:updateAccessBindings"
    

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

Предыдущая
Устранение ошибки `Response is invalid in a general way` при авторизации через SAML-провайдер
Следующая
Как отменить удаление облака
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»