AWS CLI через MFA

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Далее последует инструкция по настройке 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 <одноразовый пароль>

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

Источник: https://habr.com/ru/post/516262/


Интересные статьи

Интересные статьи

Почти год назад я переехал жить в Беларусь. Как вы уже догадались, если релокейт проходит без проблем, то такие истории на хабр не пишутся. Однако, у меня есть что рассказать. Моя и...
Становится уже доброй традицией воспроизведение всего любопытного, что появилось на Хаскеле — повторять на Эликсире. Первой ласточкой были «Примерно 20 строк для подсчета слов», появ...
У некоторых бизнес-тренеров в области е-коммерса и консультантов по увеличению интернет-продаж на многие вопросы часто можно слышать универсальную отмазку — «надо тестировать» или другую (чтобы не...
В 1С Битрикс есть специальные сущности под названием “Информационные блоки, сокращенно (инфоблоки)“, я думаю каждый с ними знаком, но не каждый понимает, что это такое и для чего они нужны
Если вы последние лет десять следите за обновлениями «коробочной версии» Битрикса (не 24), то давно уже заметили, что обновляется только модуль магазина и его окружение. Все остальные модули как ...