AWS CLI przez MFA

Poniżej znajduje się instrukcja dotycząca konfiguracji AWS MFA oraz późniejszej instalacji i konfiguracji AWS CLI.

Niestety, na tę obowiązkową procedurę poświęciłem połowę mojego dnia roboczego. Aby inni niepewni użytkownicy AWS 😉, tak jak ja, nie tracili cennego czasu na błahe czynności, postanowiłem stworzyć instrukcję.

Nawet dla konta sandbox konfiguracja MFA jest zazwyczaj obowiązkowym wymaganiem. U nas jest to normą.

Konfiguracja MFA

  1. Zainstaluj kompatybilna aplikacja mobilna
  2. Przejdź do konsoli AWS
  3. Moje dane uwierzytelniające zabezpieczeń -> Przydziel urządzenie MFA
    AWS CLI przez MFA
  4. Wirtualne urządzenie MFA
    AWS CLI przez MFA
  5. Postępuj zgodnie z instrukcjami na ekranie
    AWS CLI przez MFA
    AWS CLI przez MFA
  6. Wirtualne urządzenie jest gotowe
    AWS CLI przez MFA

Instalacja AWS CLI

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

Konfiguracja nazwanej profilu

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

  1. Moje dane uwierzytelniające zabezpieczeń -> Utwórz klucz dostępu
    AWS CLI przez MFA
  2. Skopiuj klucz do schowka. Będzie potrzebny w następnym kroku.
  3. $ aws configure --profile

AWS CLI przez MFA

  1. Skopiuj ARN wirtualnego urządzenia
    AWS CLI przez MFA
  2. aws sts get-session-token --profile --serial-number --token-code
    Jednorazowy kod należy wziąć z wcześniej skonfigurowanej aplikacji mobilnej.
  3. Polecenie zwróci JSON, a poszczególne pola należy wstawić do odpowiednich zmiennych środowiskowych AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN.

Postanowiłem zautomatyzować to za pomocą ~/.bash_profile
Do analizy JSON ten skrypt wymaga 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 '

Użycie:

$ aws-login-dev

Mam nadzieję, że ta instrukcja pomoże ci uniknąć zbędnych poszukiwań w oficjalnej dokumentacji 😉

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster