AWS CLI через MFA

    image


    Далее последует инструкция по настройке AWS MFA, и последющей установке и настройке AWS CLI.


    К сожалению, у меня на эту обязательную процедуру ушла половина рабочего дня. Чтобы другим неуверенным пользователям AWS ;) как и я сам, не тратить драгоценное время на банальное, решил составить инструкцию.


    Даже для sandbox аккаунта настройка MFA — это, как правило, обязательное требование. У нас это так.


    Настройка MFA


    1. Установите совместимое мобильное приложение
    2. Зайдите в AWS консоль
    3. My Security Credentials -> Assign MFA Device
    4. Virtual MFA Device
    5. Следуйте инструкциям на экране

    6. Виртуальное устройство готово

    Установка AWS CLI


    https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html


    Настройка именованного профиля


    https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html


    1. My Security Credentials -> Create access key
    2. Скопируйте ключ в буфер обмена. Он понадобится на следующем шаге
    3. $ aws configure --profile <your profile name>

    AWS CLI через MFA


    1. Скопируйте ARN виртуального устройства
    2. aws sts get-session-token --profile <имя профиля> --serial-number <ARN виртуального устройства> --token-code <одноразовый пароль>
      Одноразовый пароль необходимо взять из мобильного приложения настроенного ранее.
    3. Команда выведет JSON, отдельные поля которго необходимо подставить в соответствующие переменные окржуения AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN

    Я решил автоматизировать через ~/.bash_profile
    Для разбора JSON данный скрипт требует jq.


    #!/usr/bin/env bash
    
    aws_login() {
        session=$(aws sts get-session-token "$@")
        echo "${session}"
        AWS_ACCESS_KEY_ID=$(echo "${session}" | jq -r '.Credentials.AccessKeyId')
        export AWS_ACCESS_KEY_ID
        AWS_SECRET_ACCESS_KEY=$(echo "${session}" | jq -r '.Credentials.SecretAccessKey')
        export AWS_SECRET_ACCESS_KEY
        AWS_SESSION_TOKEN=$(echo "${session}" | jq -r '.Credentials.SessionToken')
        export AWS_SESSION_TOKEN
    }
    
    alias aws-login-dev='aws_login --profile <имя dev профиля> --serial-number <ARN виртуального устройства> --token-code '
    alias aws-login-prod='aws_login --profile <имя prod профиля> --serial-number <ARN виртуального устройства> --token-code '

    Использование:


    $ aws-login-dev <одноразовый пароль>

    Надеюсь данная инструкция поможет вам избежать пространных блужданий по официальной документации ;)

    Похожие публикации

    Средняя зарплата в IT

    120 000 ₽/мес.
    Средняя зарплата по всем IT-специализациям на основании 6 430 анкет, за 1-ое пол. 2021 года Узнать свою зарплату
    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

    Комментарии 2

      0

      Проходил подобный квест. Только не понял, почему это обязательно даже для песочницы? Ну кроме того, что теперь в рандомный момент времени токен может протухнуть, например, в середине рабочей сессии, и того, что теперь ты прибит гвоздями к телефону и, соответственно, его зарядку, наличию интернета и прочему?

        0
        Таковы требования нашей гильдии безопасников) Мало ли что)

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое