(Commandization) Authentification MFA dans AWS CLI

Aperçu

Si vous avez configuré MFA pour que l'utilisateur IAM puisse accéder à AWS Management Console L'authentification MFA est également requise lors de l'utilisation de l'AWS CLI avec le même utilisateur, Je l'ai vite oublié, alors j'en ai fait une commande.

Procédure de configuration approximative

  1. Créez une clé d'accès (si vous ne l'avez pas encore fait)
  2. Ajoutez ce qui suit à .bashrc
  3. Reconnectez-vous ou source ~ / .bashrc

.bashrc




function AWSCLIINIT() {
    unset AWS_ACCESS_KEY_ID
    unset AWS_SECRET_ACCESS_KEY
    unset AWS_SESSION_TOKEN
    aws configure

    mfa_arn=`aws sts get-caller-identity --query 'Arn' --output text 2>/dev/null | sed -e "s/:user\//:mfa\//g"`
    if [ -n "$mfa_arn" ]
    then
        echo "YourMFA :"$mfa_arn
        echo -n INPUT YourMFA-Code :
        read mfa_code

        get_session_token=`aws sts get-session-token --output text --serial-number $mfa_arn --token-code $mfa_code 2>/dev/null`

        if [ -n "$get_session_token" ]
        then
            set -- $get_session_token
            export AWS_ACCESS_KEY_ID=$2
            export AWS_SECRET_ACCESS_KEY=$4
            export AWS_SESSION_TOKEN=$5
        else
            echo "MFA ERROR"
        fi

    else
        echo "aws configure is wrong"
    fi
}

Comment utiliser

AWSCLIINIT

--Je fais ʻaws configure` à l'intérieur, alors entrez si nécessaire

$ AWSCLIINIT 
AWS Access Key ID [********************]: 
AWS Secret Access Key [********************]: 
Default region name [ap-northeast-1]: 
Default output format [json]: 
YourMFA :arn:aws:iam::123456789012:mfa/abcdefg
INPUT YourMFA-Code :123456
$

S'il n'y a pas d'erreur, l'authentification est réussie. Les jetons, etc. sont définis dans la variable d'environnement.

Comme ça.

Avant la certification MFA


$ aws iam get-user

An error occurred (AccessDenied) when calling the GetUser operation: User: arn:aws:iam::123456789012:user/abcdefg is not authorized to perform: iam:GetUser on resource: user abcdefg with an explicit deny

Lors de l'utilisation de cette commande


$ aws iam get-user
{
    "User": {
        "UserName": "abcdefg", 
        "PasswordLastUsed": "2020-01-25T01:16:10Z", 
        "CreateDate": "2019-12-10T02:55:57Z", 
        "UserId": "AAAAAAAAAAAAAAAAAA", 
        "Path": "/", 
        "Arn": "arn:aws:iam::123456789012:user/abcdefg"
    }
}

Recommended Posts

(Commandization) Authentification MFA dans AWS CLI
Procédure d'installation de l'AWS CLI
Mémo de procédure pour mettre l'interface de ligne de commande AWS dans CentOS6