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

Автоматический поиск ключей для аутентификации (ADC)

В MWS Cloud доступен механизм автоматического обнаружения ключей доступа — Automatic Discovery of Credentials (ADC). Он проверяет несколько источников хранения ключей, и если находит рабочие реквизиты, то использует их для авторизации. Такой подход позволит запускать ваш код в различных окружениях без изменения методов аутентификации.

ADC доступен для следующих инструментов:

ADC ищет доступные методы аутентификации в строгом порядке:

  1. В переменной окружения MWS_TOKEN — для аутентификации с помощью IAM-токена.
  2. В переменной окружения MWS_SERVICE_ACCOUNT_AUTHORIZED_KEY_PATH — для аутентификации с помощью авторизованного ключа.
  3. (только для MWS Go SDK) Используя логику, реализованную в вашем провайдере для MWS Go SDK.
  4. Используя ключ сервисного аккаунта — если ADC определит, что код выполняется на виртуальной машине в MWS Cloud.

Первый этап: попытка аутентификации с помощью IAM-токена

Заголовок раздела «Первый этап: попытка аутентификации с помощью IAM-токена»

В первую очередь ADC пытается аутентифицироваться с помощью IAM-токена, для этого он проверяет переменную окружения MWS_TOKEN.

Чтобы этот способ аутентификации сработал, вручную добавьте IAM-токен в переменную окружения:

  1. Получите IAM-токен с помощью утилиты MWS CLI или с помощью JWT.

  2. Сохраните полученный токен в переменную окружения MWS_TOKEN:

    bash
    export MWS_TOKEN="<IAM_TOKEN>"
Примечание

Время жизни IAM-токена ограничено. Используйте этот способ аутентификации для тестирования и разработки.

Второй этап: попытка аутентификации с помощью авторизованного ключа

Заголовок раздела «Второй этап: попытка аутентификации с помощью авторизованного ключа»

Если ADC не обнаружил переменную MWS_TOKEN, он предпримет попытку аутентификации с помощью авторизованного ключа. Для этого он проверит переменную окружения MWS_SERVICE_ACCOUNT_AUTHORIZED_KEY_PATH — в ней должен находиться путь до файла с авторизованным ключом.

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

  1. Сохраните файл с ключом на вашем устройстве.

  2. Добавьте путь до файла с ключом в переменную окружения:

    bash
    export MWS_SERVICE_ACCOUNT_AUTHORIZED_KEY_PATH="<путь до файла с авторизованным ключом>"
  3. Чтобы настройка сохранилась при перезапуске устройства, добавьте ее в .bashrc:

    bash
    echo 'export MWS_SERVICE_ACCOUNT_AUTHORIZED_KEY_PATH="<путь до файла с авторизованным ключом>"' >> ~/.bashrc && source ~/.bashrc

Третий этап: попытка аутентификации через собственный провайдер (только для MWS Go SDK)

Заголовок раздела «Третий этап: попытка аутентификации через собственный провайдер (только для MWS Go SDK)»

Если попытки аутентификации с помощью IAM-токена и авторизованного ключа не сработали, ADC предпримет попытку аутентифицироваться с помощью созданного вами провайдера. Этот способ подойдет только для MWS Go SDK.

Четвертый этап: попытка аутентификации с помощью сервисного аккаунта

Заголовок раздела «Четвертый этап: попытка аутентификации с помощью сервисного аккаунта»

Если все перечисленные ранее методы аутентификации не обнаружены, ADC попытается определить, является ли текущая среда виртуальной машиной Compute. Если это так, ADC проверит, привязан ли к ВМ сервисный аккаунт.

Чтобы этот способ аутентификации сработал, заранее привяжите сервисный аккаунт к ВМ.

Пример автоматического поиска реквизитов

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

Например, вы хотите сначала запустить ваш код в окружении для разработки. На вашем рабочем компьютере вы добавили переменную окружения MWS_TOKEN, содержащую временный IAM-токен. MWS Go SDK с помощью ADC обнаружил эту переменную окружения и использует ее для авторизации запросов.

В дальнейшем вы решили перенести готовый код в продуктовую среду на виртуальную машину Compute. На ВМ не задана переменная окружения MWS_TOKEN, но ADC найдет другой способ аутентификации — например, через сервисный аккаунт, привязанный к виртуальной машине. Так ваш код заработает на ВМ без дополнительных настроек.