Перейти к содержимому

Имперсонация запросов

Имперсонация (impersonation) в MWS CLI — механизм, позволяющий пользовательскому, федеративному или сервисному аккаунтам выполнять операции от имени другого сервисного аккаунта.

Имперсонация может быть полезна в следующих сценариях:

  • Отладка и диагностика — пользователь может выполнить команду от имени сервисного аккаунта, чтобы проверить, есть ли у того нужные права или корректно ли работают политики доступа.
  • Администрирование — администратор сервиса может разово выполнить задачу от имени сервисного аккаунта, не выдавая себе постоянных расширенных прав.
  • Безопасная автоматизация — один сервис может имперсонировать другой для выполнения цепочки действий, не храня долгоживущие токены и не нарушая принцип минимальных привилегий.
Примечание

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

Имперсонация запроса в MWS CLI выполняется с помощью флага --impersonate или параметра impersonate профиля. Имперсонация поддерживается всеми командами MWS CLI.

В значении передается имя или идентификатор сервисного аккаунта, например sa-editor или iam/projects/mws-cli-sandbox/serviceAccounts/my-admin-service-account.

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

Заголовок раздела «Запрос от имени другого сервисного аккаунта»

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

bash
mws vpc network list \
--impersonate iam/projects/mws-cli-sandbox/serviceAccounts/my-admin-service-account

Этот запрос выведет список сетей, доступных для сервисного аккаунта my-admin-service-account.

Чтобы выстроить цепочку субъектов имперсонации:

bash
mws compute vm list \
--impersonate iam/projects/mws-cli-sandbox/serviceAccounts/my-test-service-account \
--impersonate my-admin-service-account

В этом запросе MWS CLI сначала переключится на сервисный аккаунт iam/projects/mws-cli-sandbox/serviceAccounts/my-test-service-account, а затем внутри его контекста — на сервисный аккаунт my-admin-service-account. В итоге запрос вернет список виртуальных машин так, если бы запрос делал сам сервисный аккаунт my-admin-service-account.

Чтобы зафиксировать субъект имперсонации в профиле MWS CLI, используйте команду mws profile param set impersonate:

bash
mws profile param set impersonate my-admin-service-account

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

bash
mws profile param set impersonate iam/projects/mws-cli-sandbox/serviceAccounts/my-test-service-account,my-admin-service-account
Важно

Флаг в команде MWS CLI имеет более высокий приоритет, чем установленный в профиле параметр.

Чтобы использовать имперсонацию при работе с утилитой kubectl, настройте конфигурационный файл kubeconfig кластера Managed Kubernetes:

bash
mws mk8s get-kubeconfig --impersonate my-mk8s-service-account

Значение флага --impersonate сохранится в конфигурационном файле. Токены для утилиты kubectl будут выдаваться с учетом настроек имперсонации.