Использование имперсонации
Имперсонация позволяет пользователю выполнять действия от имени сервисного аккаунта с помощью параметра --impersonate-service-account-id в команде Yandex Cloud CLI.
Примечание
Чтобы использовать имперсонацию:
Чтобы выполнить операцию от имени сервисного аккаунта:
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
-
Узнайте идентификатор сервисного аккаунта, которому вы хотите назначить роль. Чтобы узнать идентификатор, получите список доступных сервисных аккаунтов (в профиле администратора):
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 | +----------------------+----------+--------+---------------------+-----------------------+ -
Назначьте сервисному аккаунту
test-saрольviewerна каталогmy-folder. В типе субъекта укажитеserviceAccount, а в значении — идентификатор сервисного аккаунта (в профиле администратора):yc resource-manager folder add-access-binding my-folder \ --role viewer \ --subject serviceAccount:<идентификатор_сервисного_аккаунта> -
Получите идентификатор пользователя и назначьте ему роль
iam.serviceAccounts.tokenCreatorна сервисный аккаунтtest-sa(в профиле администратора):yc iam service-account add-access-binding test-sa \ --role iam.serviceAccounts.tokenCreator \ --subject userAccount:<идентификатор_пользователя> -
Пользователь может выполнить команду от имени сервисного аккаунта
test-saс помощью параметра--impersonate-service-account-id.Например, пользователь может получить список виртуальных машин в каталоге
my-folder:yc compute instance list \ --folder-name my-folder \ --impersonate-service-account-id <идентификатор_сервисного_аккаунта>Также пользователь может получить IAM-токен сервисного аккаунта
test-saдля кратковременного доступа:yc iam create-token \ --impersonate-service-account-id <идентификатор_сервисного_аккаунта>Срок действия полученного токена закончится автоматически.
-
Если доступ больше не нужен пользователю, отзовите роль у сервисного аккаунта (в профиле администратора):
yc resource-manager folder remove-access-binding my-folder \ --role viewer \ --subject serviceAccount:<идентификатор_сервисного_аккаунта> -
Отзовите роль
iam.serviceAccounts.tokenCreatorу пользователя, получавшего права сервисного аккаунта:yc iam service-account remove-access-binding test-sa \ --role iam.serviceAccounts.tokenCreator \ --subject userAccount:<идентификатор_пользователя>