[LINUX] (Befehl) MFA-Authentifizierung in AWS CLI

Überblick

Wenn Sie MFA für den IAM-Benutzer für den Zugriff auf die AWS Management Console konfiguriert haben Die MFA-Authentifizierung ist auch erforderlich, wenn Sie die AWS-CLI mit demselben Benutzer verwenden. Ich habe es bald vergessen, also habe ich es zu einem Befehl gemacht.

Grobe Einrichtung

  1. Erstellen Sie einen Zugriffsschlüssel (falls Sie dies noch nicht getan haben)
  2. Fügen Sie .bashrc Folgendes hinzu
  3. Melden Sie sich wieder an oder 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
}

Wie benutzt man

AWSCLIINIT

$ 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
$

Wenn kein Fehler vorliegt, ist die Authentifizierung erfolgreich. Token usw. werden in der Umgebungsvariablen festgelegt.

So was.

Vor der MFA-Zertifizierung


$ 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

Bei Verwendung dieses Befehls


$ 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

(Befehl) MFA-Authentifizierung in AWS CLI
AWS CLI-Installationsverfahren
Prozedur-Memo zum Einfügen der AWS-Befehlszeilenschnittstelle in CentOS6