Wie authentifiziere ich mit einem MFA-Token den Zugriff auf meine AWS-Ressourcen über die AWS CLI?

Lesedauer: 4 Minute
0

Wie verwende ich ein MFA-Token, um den Zugriff auf meine AWS-Ressourcen mit der AWS Command Line Interface (AWS CLI) zu authentifizieren?

Lösung

Es ist eine bewährte Methode, Ihr Konto und seine Ressourcen mithilfe eines Multi-Faktor-Authentifizierungsgeräts (MFA) zu schützen. Wenn Sie planen, mit Ihren Ressourcen über das AWS CLI zu interagieren, müssen Sie bei Verwendung eines MFA-Geräts eine temporäre Sitzung erstellen. Wenn Sie ein MFA-Hardwaregerät verwenden, entspricht der Wert einem Wert, der ähnlich wie GAHT12345678 ist. Wenn Sie ein virtuelles MFA-Gerät verwenden, können Sie den Wert anhand der Sicherheitsanmeldeinformationen ermitteln. Er sieht ähnlich aus wie arn:aws:iam::123456789012:mfa/user. Weitere Informationen finden Sie unter Prüfen des MFA-Status.

Wichtig:

Führen Sie den AWS-CLI-Befehl sts get-session-token aus und ersetzen Sie die Variablen durch Informationen von Ihrem Konto, Ihren Ressourcen und Ihrem MFA-Gerät:

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

Sie erhalten eine Ausgabe mit temporären Anmeldeinformationen und einer Ablaufzeit (standardmäßig 12 Stunden), die wie folgt aussieht:

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

Hinweis: Sie können eine Ablaufdauer (in Sekunden) mit der Option --duration-seconds im sts get-session-token-Befehl angeben, wobei der Wert von 900 Sekunden (15 Minuten) bis 129600 Sekunden (36 Stunden) reichen kann. Wenn Sie Stammbenutzer-Anmeldeinformationen verwenden, reicht der Bereich von 900 Sekunden (15 Minuten) bis 3 600 Sekunden (1 Stunde).

Verwenden temporärer Anmeldeinformationen mit Umgebungsvariablen

Sie können temporäre Anmeldeinformationen verwenden, indem Sie ihre Werte mit diesen Befehlen in Umgebungsvariablen exportieren.

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

Wenn Sie die Umgebungsvariablen festlegen, müssen Sie sie unbedingt aufheben, bevor Sie den Aufruf get-session-token mit diesen Befehlen erneut ausführen.

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=

Verwenden temporärer Anmeldeinformationen mit benannten Profilen

Sie können auch benannte Profile verwenden, um die Befehle anzugeben, die eine MFA-Authentifizierung erfordern. Bearbeiten Sie dazu die Datei mit Anmeldeinformationen im Ordner .aws im Home-Verzeichnis des Benutzers, um eine neue Profilkonfiguration für die Ausgabe von MFA-authentifizierten Befehlen hinzuzufügen. Hier ist ein 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 in die Profilkonfiguration.

Tipp: Erwägen Sie, ein Skript oder einen Cron-Job im Hintergrund auszuführen, der aus der Ausgabe des Befehls get-session-token auf „Ablauf“ prüft und dann zur erneuten Authentifizierung auffordert.

Wenn das AWS CLI mithilfe des configure-Befehls konfiguriert wird, gibt es eine Standardkonfiguration mit permanenten AWS Identity and Access Management (IAM)-Benutzeranmeldeinformationen zurück. Dieser IAM-Benutzer kann Befehle verwenden, die keine MFA-Authentifizierung erfordern.

Beispiel-Konfiguration:

.aws/credentials

[default]
aws_access_key_id = example-access-Key-for-an-IAM-user
aws_secret_access_key = example-secret-access-key-for-IAM-user

Hinweis: Sie können den Parameter mfa_serial nicht mit permanenten IAM-Anmeldeinformationen verwenden.

Wenn Sie Profile verwenden, um Befehle mithilfe der AWS CLI zu authentifizieren, geben Sie die Option --profile gefolgt vom Profilnamen an, um zu überprüfen, ob sich die Aufrufe mithilfe von MFA authentifizieren.

Beispielsweise verwendet dieser Befehl die standardmäßigen Profilanmeldeinformationen und ist nicht bei MFA authentifiziert.

$ aws s3 ls

Wichtig: Stellen Sie sicher, dass Sie die Priorität der Anmeldeinformationen verstehen, damit Sie überprüfen können, ob bei API-Aufrufen die richtigen Anmeldeinformationen verwendet werden. Dies kann mit dem Befehl GetCallerIdentity erfolgen. 

$ aws s3 ls --profile mfa

Sie können auch verlangen, dass sich ein Benutzer mit MFA authentifiziert, um bestimmte API-Aktionen mit den Bedingungen aws:MultiFactorAuthPresent oder aws:MultiFactorAuthAge in einer IAM-Richtlinie auszuführen.


Relevante Informationen

Aktivieren von MFA-Geräten für Benutzer in AWS

Verlorenes oder unbrauchbares Multi-Faktor-Authentifizierungsgerät (MFA)