[Документация Yandex Cloud](../../../index.md) > [Yandex Identity and Access Management](../../index.md) > [Пошаговые инструкции](../index.md) > Сервисные аккаунты > Использование имперсонации

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

{% note warning %}

Использование имперсонации может быть запрещено [политиками авторизации](../../concepts/access-control/access-policies.md) на уровне [каталога](../../../resource-manager/concepts/resources-hierarchy.md#folder), [облака](../../../resource-manager/concepts/resources-hierarchy.md#cloud) или [организации](../../../organization/concepts/organization.md).

{% endnote %}

[Имперсонация](../../concepts/access-control/impersonation.md) позволяет пользователю выполнять действия от имени [сервисного аккаунта](../../concepts/users/service-accounts.md) с помощью параметра `--impersonate-service-account-id` в команде [Yandex Cloud CLI](../../../cli/index.md).

{% note info %}

Чтобы использовать имперсонацию:
* у сервисного аккаунта должны быть [права](../../roles-reference.md), необходимые для выполнения нужного действия с ресурсами Yandex Cloud;
* пользователю должна быть назначена [роль](../../security/index.md#iam-serviceAccounts-tokenCreator) `iam.serviceAccounts.tokenCreator` на нужный сервисный аккаунт или на каталог, в котором находится этот сервисный аккаунт.

{% endnote %}

Чтобы выполнить операцию от имени сервисного аккаунта:

{% list tabs group=instructions %}

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../../cli/quickstart.md#install).

  1. [Узнайте](get-id.md) идентификатор сервисного аккаунта, которому вы хотите назначить роль. Чтобы узнать идентификатор, получите список доступных сервисных аккаунтов (в профиле администратора):

      ```bash
      yc iam service-account list
      ```

      Результат:

      ```
      +----------------------+----------+--------+---------------------+-----------------------+
      |          ID          |   NAME   | LABELS |     CREATED AT      | LAST AUTHENTICATED AT |
      +----------------------+----------+--------+---------------------+-----------------------+
      | ajebqtreob2d******** | test-sa  |        | 2024-09-08 18:59:45 | 2025-09-04 07:10:00   |
      | aje6o61dvog2******** | my-robot |        | 2023-06-27 16:18:18 | 2025-10-10 18:00:00   |
      +----------------------+----------+--------+---------------------+-----------------------+
      ```

  1. Назначьте сервисному аккаунту `test-sa` роль `viewer` на каталог `my-folder`. В типе субъекта укажите `serviceAccount`, а в значении — идентификатор сервисного аккаунта (в профиле администратора):

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

  1. [Получите](../../../organization/operations/users-get.md) идентификатор пользователя и назначьте ему роль `iam.serviceAccounts.tokenCreator` на сервисный аккаунт `test-sa` (в профиле администратора):

      ```
      yc iam service-account add-access-binding test-sa \
        --role iam.serviceAccounts.tokenCreator \
        --subject userAccount:<идентификатор_пользователя>
      ```

  1. Пользователь может выполнить команду от имени сервисного аккаунта `test-sa` с помощью параметра `--impersonate-service-account-id`.

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

      ```
      yc compute instance list \
        --folder-name my-folder \
        --impersonate-service-account-id <идентификатор_сервисного_аккаунта>
      ```

      Также пользователь может получить [IAM-токен](../../concepts/authorization/iam-token.md) сервисного аккаунта `test-sa` для кратковременного доступа:

      ```
      yc iam create-token \
        --impersonate-service-account-id <идентификатор_сервисного_аккаунта>
      ```

      [Срок действия](../../concepts/authorization/iam-token.md#lifetime) полученного токена закончится автоматически.

  1. Если доступ больше не нужен пользователю, отзовите роль у сервисного аккаунта (в профиле администратора):

      ```
      yc resource-manager folder remove-access-binding my-folder \
        --role viewer \
        --subject serviceAccount:<идентификатор_сервисного_аккаунта>
      ```
  1. Отзовите роль `iam.serviceAccounts.tokenCreator` у пользователя, получавшего права сервисного аккаунта:

      ```
      yc iam service-account remove-access-binding test-sa \
        --role iam.serviceAccounts.tokenCreator \
        --subject userAccount:<идентификатор_пользователя>
      ```

{% endlist %}

#### Полезные ссылки {#see-also}

* [Имперсонация](../../concepts/access-control/impersonation.md)