AWS CLI via MFA

Hier volgt een instructie voor het instellen van AWS MFA en de daaropvolgende installatie en configuratie van AWS CLI.

Helaas heeft deze verplichte procedure mij de helft van mijn werkdag gekost. Om andere onzekere AWS-gebruikers 😉 zoals ik zelf, niet waardevolle tijd te laten verspillen aan het triviale, besloot ik een instructie op te stellen.

Zelfs voor een sandbox-account is de configuratie MFA dit is doorgaans een verplichte eis. Bij ons is dat zo.

Configuratie van MFA

  1. Installeer compatibele mobiele applicatie
  2. Ga naar AWS-console
  3. Mijn beveiligingsreferenties -> MFA-apparaat toewijzen
    AWS CLI via MFA
  4. Virtueel MFA-apparaat
    AWS CLI via MFA
  5. Volg de instructies op het scherm
    AWS CLI via MFA
    AWS CLI via MFA
  6. Het virtuele apparaat is klaar
    AWS CLI via MFA

Installatie van AWS CLI

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

Configuratie van een benoemd profiel

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

  1. Mijn beveiligingsreferenties -> Toegangssleutel aanmaken
    AWS CLI via MFA
  2. Kopieer de sleutel naar het klembord. Deze is nodig in de volgende stap.
  3. $ aws configure --profile <je profielnaam>

AWS CLI via MFA

  1. Kopieer de ARN van het virtuele apparaat
    AWS CLI via MFA
  2. aws sts get-session-token --profile <profielnaam> --serial-number <ARN van het virtuele apparaat> --token-code <eengeldig wachtwoord>
    Het eengeldig wachtwoord moet uit de eerder ingestelde mobiele applicatie worden gehaald.
  3. De opdracht geeft JSON weer, waarbij afzonderlijke velden moeten worden ingevoerd in de overeenkomstige omgevingsvariabelen AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN.

Ik heb besloten om te automatiseren via ~/.bash_profile
Voor het parsen van JSON vereist dit script 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 '

Wanneer we een opmerking aan een commit schrijven (ongeacht welke tool we hiervoor gebruiken om met git te werken), kunnen we de naam van de taken in tekstvorm toevoegen (zonder aanhalingstekens of speciale symbolen zoals @).

$ aws-login-dev <eengeldig wachtwoord>

Hopelijk helpt deze instructie je om tijdrovende zoektochten in de officiële documentatie te vermijden. 😉

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster