Wie authentifiziere ich mit einem MFA-Token den Zugriff auf meine AWS-Ressourcen über die AWS CLI?
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:
- Die Unterstützung für Sicherheitsschlüssel ist nur mit der AWS-Managementkonsole verfügbar. Weitere Informationen finden Sie unter Aktivieren eines FIDO-Sicherheitsschlüssels (Konsole). Als Problemumgehung können Sie ein virtuelles MFA-Gerät verwenden. Weitere Informationen finden Sie unter Aktivieren und Verwalten virtueller MFA-Geräte (AWS CLI oder AWS-API).
- Alle IAM-Benutzer müssen über ausreichende Berechtigungen verfügen, um MFA-Geräte zu erstellen, anzuzeigen und zu deaktivieren, die ihrem Benutzer zugewiesen sind. Sie müssen außerdem ein MDA-Gerät eingeschaltet und ihrem Benutzer zugewiesen haben, bevor sie beginnen.
- Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS CLI verwenden.
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)
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 2 Jahren