Blog

IAM-Benutzeranmeldeinformationen mit MFA

Joris Conijn

Aktualisiert Oktober 16, 2025
4 Minuten

Wenn Sie IAM-Benutzer für den programmatischen Zugriff verwenden. Sie haben ein ACCESS_KEY und ein SECRET_ACCESS_KEY. Mit diesen Anmeldeinformationen können Sie mit AWS interagieren. Ein gängiges Muster ist, dass Sie den IAM-Benutzer verwenden, um Rollen in demselben oder sogar in verschiedenen AWS-Konten zu übernehmen. Die CLI-Konfiguration würde etwa so aussehen:

[profile my-role]
source_profile = default
role_arn = arn:aws:iam::111122223333:role/Administrator
mfa_serial = arn:aws:iam::111122223333:mfa/my-iam-user

Aber wenn Sie diese Rolle zum ersten Mal verwenden. Oder wenn die zwischengespeicherten Anmeldeinformationen abgelaufen sind, werden Sie zur Eingabe eines MFA-Tokens aufgefordert. Wenn Sie viele Konten und Profile verwenden, wird dies lästig. Sie können für Ihre Rollen eine längere Sitzungszeit konfigurieren und verwenden. Aber Sie müssen immer noch Ihr MFA-Token pro Rolle eingeben. In diesem Blogbeitrag erkläre ich Ihnen, warum das so ist und was Sie tun können, um dies zu vermeiden!

Wie funktioniert das?

Was passiert also unter der Haube? Wenn Sie einen cli-Befehl ausführen wie:

aws s3 ls --profile=my-role

Es prüft zunächst im Ordner ~/.aws/cli/cache/, ob Anmeldeinformationen zwischengespeichert sind. Wenn dies nicht der Fall ist oder die Zugangsdaten abgelaufen sind, wird ein -Aufruf ausgeführt. Da wir das Quellprofil konfiguriert haben. Es verwendet die default Zugangsdaten, die in der Datei ~/.aws/credentials gefunden wurden.

[default]
aws_access_key_id = AKIAXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Denn wir haben unter unserem Profil in unserer ~/.aws/config Datei ein mfa_serial konfiguriert. Der AWS-Client fordert Sie zur Eingabe des Tokens auf und führt dann den assume-role API-Aufruf durch. Wenn alles in Ordnung ist, werden temporäre Anmeldeinformationen zurückgegeben, die zwischengespeichert werden. Rolle mit MFA-Token annehmen Das Problem bei diesem Ansatz ist, dass er jedes Mal ausgeführt wird, wenn Sie eine Rolle übernehmen müssen. Dadurch wird jedes Mal eine MFA-Abfrage ausgelöst, wenn Sie eine Rolle verwenden. Zum ersten Mal oder wenn die zwischengespeicherten Anmeldeinformationen abgelaufen sind.

Wie kann ich sie vermeiden?

Sie können die MFA-Eingabeaufforderungen vermeiden, indem Sie zunächst die temporären Anmeldedaten des IAM-Benutzers mit MFA abrufen. Dadurch erhalten Sie Zugangsdaten, die MFA-authentifiziert sind. Und weil sie bereits MFA-authentifiziert sind. Es ist nicht erforderlich, das Token während des assume-role API-Aufrufs anzugeben. STS-Anmeldeinformationen abrufen und dann die Rolle übernehmen Wie Sie sehen können, haben wir den Prozess in 2 Teile aufgeteilt:

  1. Holen Sie die temporären Anmeldeinformationen für den IAM-Benutzer mit MFA.
  2. Verwenden Sie die temporären Anmeldeinformationen, um die Rolle my-role zu übernehmen. Der Zauber hinter diesem Ansatz liegt darin, dass wir sie aufgeteilt haben. Sie können Schritt 2 mit anderen Rollen wiederholen. Dadurch entfällt die Aufforderung zur Eingabe des MFA-Tokens, da wir bereits mit MFA authentifiziert sind.Um dies zu erleichtern, habe ich ein kleines Cli-Tool namens aws-iam-login geschrieben, das Ihnen dabei hilft!Es muss nur die und kennen. Sie können diese abrufen, wenn Sie ausführen:
aws-iam-login default init

Mit diesem Befehl wird die ARN der Identität des Anrufers abgerufen. Anhand dieser Identität ermitteln wir den Benutzernamen und die mfa_serial des IAM-Benutzers. Diese werden dann in der Datei ~/.aws/credentials gespeichert. Zum Beispiel:

[default]
aws_access_key_id = AKIAXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
mfa_serial = arn:aws:iam::111122223333:mfa/my-iam-user
username = my-iam-user

Jetzt können Sie das Tool wie folgt verwenden:

aws-iam-login default

Damit authentifizieren Sie sich gegenüber der AWS-API. Und fordert mit Ihrem MFA-Token temporäre Anmeldeinformationen von AWS an. Diese Anmeldeinformationen werden dann als <profile-name>-sts gespeichert. Zum Beispiel:

[default-sts]
aws_access_key_id = ASIAXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
aws_session_token = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
expiration = 2022-07-25 19:00:00+00:00

Wenn Sie nun also folgendes in Ihrer ~/.aws/config Datei verwenden:

[profile my-role]
source_profile = default-sts
role_arn = arn:aws:iam::111122223333:role/Administrator

Sie verwenden nun die temporären Zugangsdaten, die in der Datei ~/.aws/credentials definiert sind. Wenn die temporären Anmeldeinformationen ungültig werden. Führen Sie den Befehl aws-iam-login default erneut aus und es werden neue Zugangsdaten abgerufen.

Rotieren Sie Ihre Anmeldeinformationen

aws-iam-login kann Ihnen nicht nur bei der Übernahme von Rollen helfen, sondern auch bei anderen Dingen! Es kann Ihre Anmeldedaten für Sie rotieren! Sie können dies mit dem folgenden Befehl tun:

aws-iam-login default rotate

Und das Tool wird:

  1. Alle verfügbaren Tasten für den Benutzer auflisten, wenn 1 Taste aktiv ist, ist eine Drehung möglich!
  2. Erstellen Sie einen neuen AccessKey und SecretAccessKey.
  3. Verwenden Sie die erstellten Schlüssel, um die alten Schlüssel zu deaktivieren.
  4. Schreiben Sie die neuen Schlüssel in die Datei ~/.aws/configuration.
  5. Löschen Sie die alten Schlüssel.

Fazit

Indem Sie die temporären Anmeldedaten des IAM-Benutzers verwenden. Sie werden nicht jedes Mal aufgefordert, Ihr MFA-Token einzugeben. Und aws-iam-login kann Ihnen dabei helfen!


Tags:

Verfasst von

Joris Conijn

Joris is the AWS Practise CTO of the Xebia Cloud service line and has been working with the AWS cloud since 2009 and focussing on building event-driven architectures. While working with the cloud from (almost) the start, he has seen most of the services being launched. Joris strongly believes in automation and infrastructure as code and is open to learning new things and experimenting with them because that is the way to learn and grow.

Contact

Let’s discuss how we can support your journey.