Далее последует инструкция по настройке AWS MFA, и последющей установке и настройке AWS CLI.
К сожалению, у меня на эту обязательную процедуру ушла половина рабочего дня. Чтобы другим неуверенным пользователям AWS ;) как и я сам, не тратить драгоценное время на банальное, решил составить инструкцию.
Даже для sandbox аккаунта настройка MFA — это, как правило, обязательное требование. У нас это так.
Настройка MFA
- Установите совместимое мобильное приложение
- Зайдите в AWS консоль
- My Security Credentials -> Assign MFA Device
- Virtual MFA Device
- Следуйте инструкциям на экране
- Виртуальное устройство готово
Установка 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
- My Security Credentials -> Create access key
- Скопируйте ключ в буфер обмена. Он понадобится на следующем шаге
$ aws configure --profile <your profile name>
AWS CLI через MFA
- Скопируйте ARN виртуального устройства
aws sts get-session-token --profile <имя профиля> --serial-number <ARN виртуального устройства> --token-code <одноразовый пароль>
Одноразовый пароль необходимо взять из мобильного приложения настроенного ранее.- Команда выведет 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 <одноразовый пароль>
Надеюсь данная инструкция поможет вам избежать пространных блужданий по официальной документации ;)
Cib0rg
Проходил подобный квест. Только не понял, почему это обязательно даже для песочницы? Ну кроме того, что теперь в рандомный момент времени токен может протухнуть, например, в середине рабочей сессии, и того, что теперь ты прибит гвоздями к телефону и, соответственно, его зарядку, наличию интернета и прочему?
radneck Автор
Таковы требования нашей гильдии безопасников) Мало ли что)