Durch die Nutzung von AWS re:Post stimmt du den AWS re:Post Nutzungsbedingungen

Wie verwende ich die AWS CLI, um den Zugriff auf AWS-Ressourcen mit einem MFA-Token zu authentifizieren?

Lesedauer: 4 Minute
0

Ich möchte ein Multi-Faktor-Authentifizierungs (MFA)-Token mit der AWS Command Line Interface (AWS CLI) verwenden, um den Zugriff auf meine AWS-Ressourcen zu authentifizieren.

Kurzbeschreibung

Sie können bis zu acht MFA-Geräte für jeden AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement)-Benutzer aktivieren.

Hinweis: Die MFA-Aktivierung für den Root-Benutzer wirkt sich nur auf die Anmeldeinformationen des Root-Benutzers aus. Jede IAM-Identität in Ihrem AWS-Konto hat ihre eigene MFA-Konfiguration.

Informationen zur MFA-Aktivierung finden Sie unter Sichern der Root-Benutzeranmeldung mit MFA und MFA in IAM.

Lösung

Um die AWS CLI zur Authentifizierung bei AWS-Ressourcen zu verwenden, verwenden Sie die API-Aktion GetSessionToken, um temporäre Anmeldeinformationen abzurufen.

Hinweis: Wenn Sie beim Ausführen von AWS CLI-Befehlen Fehlermeldungen erhalten, finden Sie weitere Informationen unter Problembehandlung bei der AWS CLI. Stellen Sie außerdem sicher, dass Sie die neueste Version der AWS CLI verwenden.

ARN des MFA-Geräts

Gehen Sie wie folgt vor, um den ARN des MFA-Geräts abzurufen:

  1. Öffnen Sie die IAM-Konsole.
  2. Wählen Sie im Navigationsbereich Benutzer und dann den IAM-Benutzer aus.
  3. Wählen Sie auf der Seite Zusammenfassung die Registerkarte Sicherheitsanmeldeinformationen aus.
  4. Kopieren Sie unter Assigned MFA device (Zugewiesenes MFA-Gerät) den ARN des MFA-Geräts.

Verwendung der AWS CLI, um temporäre Anmeldeinformationen abzurufen

Führen Sie den Befehl get-session-token aus:

aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

Beispielausgabe:

{
    "Credentials": {
        "SecretAccessKey": "secret-access-key",
        "SessionToken": "temporary-session-token",
        "Expiration": "expiration-date-time",
        "AccessKeyId": "access-key-id"
    }
}

Wichtig: Stellen Sie sicher, dass die Seriennummer, das Token und der ARN des MFA-Geräts korrekt sind. Andernfalls erhalten Sie möglicherweise eine Fehlermeldung, die der folgenden ähnelt:

„An error occurred (AccessDenied) when calling the GetSessionToken operation: MultiFactorAuthentication failed, unable to validate MFA code. Please verify your MFA serial number is valid and associated with this user.“

Um das MFA-Hardwaregerät zu authentifizieren, befindet sich die Seriennummer normalerweise auf der Rückseite des Geräts, und der Wert ähnelt GAHT12345678. Um Ihr virtuelles MFA-Gerät zu authentifizieren, ähnelt der Wert arn:aws:iam::123456789012:mfa/user.

Hinweis: Die AWS CLI unterstützt die MFA-Authentifizierung nur bei einem virtuellen oder Hardware-MFA-Gerät. Die AWS CLI unterstützt keine MFA-Authentifizierung beim FIDO-Sicherheitsschlüssel.

Weitere Informationen finden Sie unter Zuweisen von MFA-Geräten in der AWS CLI oder AWS-API.

Verwendung temporärer Anmeldeinformationen, um ihre Werte in Umgebungsvariablen zu exportieren

Führen Sie die folgenden Befehle für das Betriebssystem (OS) aus:

Linux

export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output
export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output
export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output

Windows

set AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output
set AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output
set AWS_SESSION_TOKEN=example-session-Token-as-in-previous-output

Bevor Sie den Befehl get-session-token erneut ausführen, führen Sie die folgenden Befehle aus, um die Umgebungsvariablen aufzuheben:

Linux

unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN

Windows

set AWS_ACCESS_KEY_ID=
set AWS_SECRET_ACCESS_KEY=
set AWS_SESSION_TOKEN=

Verwendung temporärer Anmeldeinformationen bei benannten Profilen

Sie können auch benannte Profile verwenden, um die Befehle anzugeben, für die eine MFA-Authentifizierung erforderlich ist. Fügen Sie in der Datei mit den Anmeldeinformationen, die sich im Ordner .aws des Stammverzeichnisses des Benutzers befindet, eine neue Profilkonfiguration hinzu, um MFA-authentifizierte Befehle auszugeben.

Beispiel für eine Profilkonfiguration:

[mfa]aws_access_key_id = example-access-key-as-in-returned-output
aws_secret_access_key = example-secret-access-key-as-in-returned-output
aws_session_token = example-session-token-as-in-returned-output

Nachdem die Anmeldeinformationen abgelaufen sind, führen Sie den Befehl get-session-token erneut aus, und exportieren Sie dann die zurückgegebenen Werte in die Umgebungsvariablen oder die Profilkonfiguration.

Es hat sich bewährt, im Hintergrund ein Skript oder einen Cron Job auszuführen, der in der Ausgabe des Befehls get-session-token nach dem Ablauf sucht. Wenn das MFA-Token abgelaufen ist, stellen Sie sicher, dass das Skript oder der Cron Job zur erneuten Authentifizierung auffordert.

Wenn Sie benannte Profile zur Authentifizierung verwenden, geben Sie die Option —profile gefolgt vom Profilnamen an, um zu überprüfen, ob die API-Aufrufe MFA zur Authentifizierung verwenden.

Ähnliche Informationen

Wie setze ich ein verlorenes oder defektes MFA-Gerät für meinen IAM-Benutzer oder Root-Benutzer meines AWS-Kontos zurück?

Wie erzwinge ich die MFA-Authentifizierung für IAM-Benutzer, die die AWS-Managementkonsole und die AWS CLI verwenden?