Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
    • Cloud Interconnect
    • Cloud Backup
    • Compute Cloud
    • Object Storage
    • Managed Service for Kubernetes®
    • Managed Service for PostgreSQL
    • Managed Service for ClickHouse®
    • Monium
    • Cloud CDN
    • Network Load Balancer
    • Virtual Private Cloud
    • Cloud DNS
    • Application Load Balancer
    • Yandex Cloud Router
    • Managed Service for MySQL®
    • Managed Service for Valkey™
    • Managed Service for Apache Spark™
    • Managed Service for OpenSearch
    • Managed Service for Apache Kafka®
    • Data Transfer
    • Yandex MPP Analytics Engine for PostgreSQL
    • SpeechKit
    • Yandex Identity Hub
    • Key Management Service
    • Certificate Manager
    • Yandex Lockbox
    • Audit Trails
    • Container Registry
    • Managed Service for Prometheus®
    • Message Queue
    • Identity and Access Management
    • Yandex Cloud Console
    • Resource Manager
    • Yandex Cloud Billing
    • Cloud Apps
    • Yandex AI Studio
    • Yandex BareMetal
    • Smart Web Security
    • Security Deck
    • Yandex Cloud Video
    • Stackland
    • Yandex StoreDoc
    • Yandex Managed Service for Apache Airflow®
    • Data Processing
    • Yandex MetaData Hub
    • Managed Service for YDB
    • Yandex WebSQL
    • DataLens
    • Yandex Search API
    • SpeechSense
    • DataSphere
    • Vision OCR
    • Translate
    • Cloud Registry
    • SmartCaptcha
    • Cloud Desktop
    • SourceCraft Code Assistant
    • Managed Service for GitLab
    • Cloud Functions
    • API Gateway
    • Yandex Cloud Postbox
    • Serverless Integrations
    • IoT Core
    • Serverless Containers
    • Cloud Notification Service
    • Yandex Query
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»
Yandex Identity and Access Management
KZ
    • Все инструкции
    • Обработка секретов, попавших в открытый доступ
    • Пользователи
    • Группы пользователей
      • Создание сервисного аккаунта
      • Просмотр сервисных аккаунтов каталога
      • Изменение сервисного аккаунта
      • Назначение роли сервисному аккаунту
      • Настройка прав доступа к сервисному аккаунту
      • Использование имперсонации
      • Получение информации о сервисном аккаунте
      • Получение ID-токена сервисного аккаунта
      • Удаление сервисного аккаунта
  • Безопасное использование Yandex Cloud
  • Управление доступом
  • Правила тарификации
  • Справочник ролей
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

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

  • Назначить роль на сервисный аккаунт
  • Примеры
  • Настроить доступ пользователя к сервисному аккаунту
  • Назначить несколько ролей
  • Настроить доступ сервисного аккаунта к другому сервисному аккаунту
  • Полезные ссылки
  1. Пошаговые инструкции
  2. Сервисные аккаунты
  3. Настройка прав доступа к сервисному аккаунту

Настройка прав доступа к сервисному аккаунту

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

Этот раздел про назначение роли на сервисный аккаунт как на ресурс. Чтобы выдать роль сервисному аккаунту на другой ресурс, воспользуйтесь инструкцией Назначение роли сервисному аккаунту.

Примечание

Чтобы назначить роль на сервисный аккаунт, нужна роль iam.serviceAccounts.admin.

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

Консоль управления
CLI
Terraform
API
  1. В консоли управления на панели сверху нажмите или и выберите каталог, которому принадлежит сервисный аккаунт.
  2. Перейдите в сервис Identity and Access Management.
  3. На панели слева выберите Сервисные аккаунты и выберите нужный сервисный аккаунт.
  4. Перейдите на вкладку Права доступа.
  5. Нажмите Назначить роли.
  6. В окне Выдача доступа в поле Кому выдать доступ выберите субъект или воспользуйтесь поиском.
  7. Нажмите Добавить роль и выберите роль.
  8. Нажмите Сохранить.

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

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

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

    yc iam service-account add-access-binding --help
    
  2. Узнайте идентификатор роли:

    yc iam role list
    

    Результат:

    +-------------------------------------+-------------+
    |                 ID                  | DESCRIPTION |
    +-------------------------------------+-------------+
    | access-transparency.admin           |             |
    | access-transparency.billingProvider |             |
    | access-transparency.editor          |             |
    | ...                                 |             |
    
  3. Назначьте субъекту роль на сервисный аккаунт:

    yc iam service-account add-access-binding <имя_или_идентификатор_сервисного_аккаунта> \
      --role <идентификатор_роли> \
      --subject <тип_субъекта>:<идентификатор_субъекта>
    

    Где:

    • --role — идентификатор роли, которую нужно назначить.

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

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

      Для обозначения субъекта используется параметр --subject со значением в формате <тип_субъекта>:<идентификатор>. Для некоторых типов субъектов в Yandex Cloud CLI вместо --subject доступны отдельные параметры, в которых достаточно указать имя или идентификатор субъекта без типа. Возможные обозначения субъектов и соответствующие параметры CLI:

      Тип субъекта

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

      Параметр Yandex Cloud CLI

      userAccount

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

      --user-account-id или --user-yandex-login

      serviceAccount

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

      --service-account-id или --service-account-name

      federatedUser

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

      --user-account-id

      group

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

      --group-members

      system

      system:allAuthenticatedUsers

      (группа All authenticated users)

      --all-authenticated-users

      system:allUsers

      (группа All users)

      —

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

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

      --organization-users

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

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

      --federation-users

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

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

      —

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

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

  1. Опишите в конфигурационном файле ресурс с ролью на организацию.

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

    resource "yandex_iam_service_account_iam_binding" "admin-account-iam" {
      service_account_id = "<идентификатор_сервисного_аккаунта>"
      role               = "<роль>"
      members            = ["<субъект_1>","<субъект_2>,...,<субъект_n>"]
    }
    

    Где:

    • service_account_id — идентификатор сервисного аккаунта, к которому нужно настроить доступ.

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

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

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

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

      Тип субъекта

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

      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. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

Воспользуйтесь методом REST API updateAccessBindings для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/UpdateAccessBindings. Вам понадобится идентификатор сервисного аккаунта и идентификатор субъекта, которому назначается роль на сервисный аккаунт.

  1. Узнайте идентификатор сервисного аккаунта с помощью метода REST API list:

    curl \
      --header "Authorization: Bearer <IAM-токен>" \
      https://iam.api.yandexcloud.kz/iam/v1/serviceAccounts?folderId=<идентификатор_каталога>
    

    Результат:

    {
    "serviceAccounts": [
        {
        "id": "aje6o61dvog2********",
        "folderId": "b1gvmob95yys********",
        "createdAt": "2018-10-19T13:26:29Z",
        "name": "my-robot"
        }
        ...
    ]
    }
    
  2. Назначьте субъекту роль на сервисный аккаунт, в свойстве action укажите ADD:

    curl \
      --request POST \
      --header 'Content-Type: application/json' \
      --header "Authorization: Bearer <IAM-токен>" \
      --data '{
      "accessBindingDeltas": [{
          "action": "ADD",
          "accessBinding": {
              "roleId": "<роль>",
              "subject": {
                  "id": "<идентификатор_субъекта>",
                  "type": "<тип_субъекта>"
      }}}]}' \
      https://iam.api.yandexcloud.kz/iam/v1/serviceAccounts/<идентификатор_сервисного_аккаунта>:updateAccessBindings
    

    Где:

    • 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)

    • <идентификатор_сервисного_аккаунта> — идентификатор сервисного аккаунта, к которому нужно настроить доступ.

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

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

Настроить доступ пользователя к сервисному аккаунтуНастроить доступ пользователя к сервисному аккаунту

Консоль управления
CLI
Terraform
API
  1. В консоли управления на панели сверху нажмите или и выберите каталог, которому принадлежит сервисный аккаунт.
  2. Перейдите в сервис Identity and Access Management.
  3. На панели слева выберите Сервисные аккаунты и выберите нужный сервисный аккаунт.
  4. Перейдите на вкладку Права доступа.
  5. Нажмите Назначить роли.
  6. В окне Выдача доступа в поле Кому выдать доступ выберите пользователя из списка или воспользуйтесь поиском по пользователям.
  7. Нажмите Добавить роль и выберите роль.
  8. Нажмите Сохранить.

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

Назначьте пользователю test-user роль editor на сервисный аккаунт my-robot:

```bash
yc iam service-account add-access-binding my-robot \
  --role editor \
  --user-yandex-login test-user
```

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

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

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

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

    resource "yandex_iam_service_account_iam_binding" "admin-account-iam" {
      service_account_id = "aje6o61dvog2********"
      role               = "editor"
      members            = ["userAccount:gfei8n54hmfh********",]
    }
    

    Где:

    • service_account_id — идентификатор сервисного аккаунта, к которому нужно настроить доступ.
    • role — назначаемая роль.
    • members — список пользователей, которым назначается роль. Указывается в виде userAccount:<идентификатор_пользователя>.

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

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

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

Воспользуйтесь методом REST API updateAccessBindings для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/UpdateAccessBindings. Вам понадобится идентификатор сервисного аккаунта и идентификатор пользователя, которому назначается роль на сервисный аккаунт.

  1. Узнайте идентификатор сервисного аккаунта с помощью метода REST API list:

    curl \
      --header "Authorization: Bearer <IAM-токен>" \
      https://iam.api.yandexcloud.kz/iam/v1/serviceAccounts?folderId=b1gvmob95yys********
    

    Результат:

    {
    "serviceAccounts": [
        {
        "id": "aje6o61dvog2********",
        "folderId": "b1gvmob95yys********",
        "createdAt": "2018-10-19T13:26:29Z",
        "name": "my-robot"
        }
        ...
    ]
    }
    
  2. Узнайте идентификатор пользователя по логину с помощью метода REST API getByLogin:

    curl \
      --header "Authorization: Bearer <IAM-токен>" \
      https://iam.api.yandexcloud.kz/iam/v1/yandexPassportUserAccounts:byLogin?login=test-user
    

    Результат:

    {
    "id": "gfei8n54hmfh********",
    "yandexPassportUserAccount": {
        "login": "test-user",
        "defaultEmail": "test-user@yandex.ru"
    }
    }
    
  3. Назначьте пользователю роль editor на сервисный аккаунт my-robot. В свойстве action укажите ADD, а в свойстве subject - тип userAccount и идентификатор пользователя:

    curl \
      --request POST \
      --header 'Content-Type: application/json' \
      --header "Authorization: Bearer <IAM-токен>" \
      --data '{
      "accessBindingDeltas": [{
          "action": "ADD",
          "accessBinding": {
              "roleId": "editor",
              "subject": {
                  "id": "gfei8n54hmfh********",
                  "type": "userAccount"
      }}}]}' \
      https://iam.api.yandexcloud.kz/iam/v1/serviceAccounts/aje6o61dvog2********:updateAccessBindings
    

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

CLI
Terraform
API

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

Команда add-access-binding позволяет добавить только одну роль. Вы можете назначить несколько ролей с помощью команды set-access-binding.

Внимание

Команда set-access-binding полностью перезаписывает права доступа к ресурсу! Все текущие роли на ресурс будут удалены.

  1. Убедитесь, что на ресурс не назначены роли, которые вы не хотите потерять:

    yc iam service-account list-access-bindings my-robot
    
  2. Назначьте роль нескольким пользователям:

    yc iam service-account set-access-bindings my-robot \
      --access-binding role=editor,subject=userAccount:gfei8n54hmfh******** \
      --access-binding role=viewer,subject=userAccount:helj89sfj80a********
    

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

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

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

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

    • service_account_id — идентификатор сервисного аккаунта, к которому нужно настроить доступ.

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

      Примечание

      Для каждой роли можно использовать только один ресурс yandex_iam_service_account_iam_binding.

    • members — список пользователей и сервисных аккаунтов, которым назначается роль. Указывается в виде userAccount:<идентификатор_пользователя> или serviceAccount:<идентификатор_сервисного_аккаунта>.

    Пример назначения нескольких ролей на сервисный аккаунт с помощью Terraform
    ...
    resource "yandex_iam_service_account_iam_binding" "admin-account-iam" {
      service_account_id = "aje82upckiqh********"
      role               = "admin"
      members = [
        "userAccount:aje82upckiqh********",
      ]
    }
    resource "yandex_iam_service_account_iam_binding" "admin-account-iam2" {
      service_account_id = "aje82upckiqh********"
      role               = "viewer"
      members = [
        "userAccount:aje82upckiqh********",
      ]
    }
    ...
    

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

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

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

Назначьте одному пользователю роль editor, а другому viewer:

curl \
  --request POST \
  --header 'Content-Type: application/json' \
  --header "Authorization: Bearer <IAM-токен>" \
  --data '{
  "accessBindingDeltas": [{
      "action": "ADD",
      "accessBinding": {
          "roleId": "editor",
          "subject": {
              "id": "gfei8n54hmfh********",
              "type": "userAccount"
          }
      }
  },{
      "action": "ADD",
      "accessBinding": {
          "roleId": "viewer",
          "subject": {
              "id": "helj89sfj80a********",
              "type": "userAccount"
  }}}]}' \
  https://iam.api.yandexcloud.kz/iam/v1/serviceAccounts/aje6o61dvog2********:updateAccessBindings

Вы также можете назначать роли с помощью метода REST API setAccessBindings для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/SetAccessBindings.

Внимание

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

curl \
  --request POST \
  --header 'Content-Type: application/json' \
  --header "Authorization: Bearer <IAM-токен>" \
  --data '{
  "accessBindings": [{
      "roleId": "editor",
      "subject": { "id": "ajei8n54hmfh********", "type": "userAccount" }
  },{
      "roleId": "viewer",
      "subject": { "id": "helj89sfj80a********", "type": "userAccount" }
  }]}' \
  https://iam.api.yandexcloud.kz/iam/v1/serviceAccounts/aje6o61dvog2********:setAccessBindings

Настроить доступ сервисного аккаунта к другому сервисному аккаунтуНастроить доступ сервисного аккаунта к другому сервисному аккаунту

Разрешите сервисному аккаунту test-sa управлять сервисным аккаунтом my-robot:

CLI
Terraform
API

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

  1. Узнайте идентификатор сервисного аккаунта test-sa, которому вы хотите назначить роль. Чтобы узнать идентификатор, получите список доступных сервисных аккаунтов:

    yc iam service-account list
    

    Результат:

    +----------------------+----------+------------------+
    |          ID          |   NAME   |   DESCRIPTION    |
    +----------------------+----------+------------------+
    | ajebqtreob2d******** | test-sa  | test-description |
    | aje6o61dvog2******** | my-robot |                  |
    +----------------------+----------+------------------+
    
  2. Назначьте роль editor сервисному аккаунту test-sa, указав его идентификатор:

    yc iam service-account add-access-binding my-robot \
      --role editor \
      --service-account-id ajebqtreob2d********
    

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

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

Чтобы разрешить сервисному аккаунту test-sa управлять сервисным аккаунтом my-robot, созданным при помощи Terraform:

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

    • service_account_id — идентификатор сервисного аккаунта, к которому нужно настроить доступ.
    • role — назначаемая роль.
    • members — список пользователей и сервисных аккаунтов, которым назначается роль. Указывается в виде userAccount:<идентификатор_пользователя> или serviceAccount:<идентификатор_сервисного_аккаунта>.
    Пример разрешения сервисному аккаунту test-sa управлять сервисным аккаунтом my-robot с помощью Terraform
    ...
    resource "yandex_iam_service_account_iam_binding" "admin-account-iam" {
      service_account_id = "aje82upckiqh********"
      role               = "admin"
      members = [
        "serviceAccount:aje82upckiqh********",
      ]
    }
    ...
    

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

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

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

    yc resource-manager service-account list-access-bindings <имя_или_идентификатор_сервисного_аккаунта>
    
  1. Узнайте идентификатор сервисного аккаунта test-sa, которому вы хотите назначить роль. Чтобы узнать идентификатор, получите список доступных сервисных аккаунтов:

    curl \
      --header "Authorization: Bearer <IAM-токен>" \
      https://iam.api.yandexcloud.kz/iam/v1/serviceAccounts?folderId=b1gvmob95yys********
    

    Результат:

    {
     "serviceAccounts": [
      {
       "id": "ajebqtreob2d********",
       "folderId": "b1gvmob95yys********",
       "createdAt": "2018-10-18T13:42:40Z",
       "name": "test-sa",
       "description": "test-description"
      },
      {
       "id": "aje6o61dvog2********",
       "folderId": "b1gvmob95yys********",
       "createdAt": "2018-10-15T18:01:25Z",
       "name": "my-robot"
      }
     ]
    }
    
  2. Назначьте сервисному аккаунту test-sa роль editor на другой сервисный аккаунт my-robot. В свойстве subject укажите тип serviceAccount и идентификатор test-sa. В URL запроса в качестве ресурса укажите идентификатор my-robot:

    curl \
      --request POST \
      --header 'Content-Type: application/json' \
      --header "Authorization: Bearer <IAM-токен>" \
      --data '{
      "accessBindingDeltas": [{
          "action": "ADD",
          "accessBinding": {
              "roleId": "editor",
              "subject": {
                  "id": "ajebqtreob2d********",
                  "type": "serviceAccount"
      }}}]}' \
      https://iam.api.yandexcloud.kz/iam/v1/serviceAccounts/aje6o61dvog2********:updateAccessBindings
    

Полезные ссылкиПолезные ссылки

  • Использование имперсонации

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

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