Picture of a Yubikey on a table

Sicherer AWS CLI-Zugriff mit YubiKey

Falls du es leid bist, ständig MFA-Codes manuell einzugeben und temporäre AWS CLI-Sitzungstokens zu verwalten, ist diese Anleitung genau das Richtige für dich. MFA bietet eine starke Sicherheitsstufe für dein AWS-Konto, aber der zusätzliche Aufwand für die Generierung von Sitzungstokens kann schnell ermüdend werden – besonders wenn du häufig Rollen wechselst oder in mehreren Umgebungen arbeitest.

9. Dezember 2024

Diese Anleitung zeigt dir, wie du den MFA-Authentifizierungsprozess automatisieren kannst, um mit einem YubiKey auf deine AWS CLI zuzugreifen. Mit einem einfachen Befehl kannst du temporäre Sitzungs-Credentials generieren und direkt in deine AWS-Konfiguration einfügen, sodass dein Zugriff nahtlos funktioniert.

Warum AWS CLI MFA mit YubiKey automatisieren?

Hier ist das Problem: AWS MFA funktioniert gut für den Konsolenzugang, aber in der CLI wird es umständlich. Falls dein Konto MFA für CLI-Operationen erzwingt, musst du manuell ein Sitzungs-Token generieren, indem du diese Schritte ausführst:

  1. Öffne deine Authenticator-App.
  2. Gib den OTP-Code in einen Befehl wie diesen ein:
    aws sts get-session-token --serial-number <MFA-ARN> --token-code <MFA-Code>
  3. Kopiere das Sitzungs-Token und füge es entweder in deine ~/.aws/credentials-Datei ein oder setze eine Umgebungsvariable.

Das ist machbar, aber mühsam und fehleranfällig. Während du mitten im Debuggen einer Lambda-Funktion oder beim Deployment einer Infrastruktur mit CDK bist, willst du dich nicht mit diesem Prozess herumschlagen.

Mit einem YubiKey und etwas Bash-Scripting lässt sich das Ganze optimieren. Mithilfe des CLI-Tools ykman und einem angeschlossenen YubiKey kann der Ablauf wie folgt aussehen:

  • Der YubiKey generiert automatisch den MFA-Code.
  • Ein Sitzungs-Token wird von AWS STS abgerufen und automatisch in ~/.aws/credentials eingefügt.

Voraussetzungen

Bevor wir loslegen, stelle sicher, dass du Folgendes installiert hast:

Um den YubiKey für MFA zu konfigurieren, folge den Anweisungen von AWS. Sobald das Setup abgeschlossen ist, solltest du die ARN deines MFA-Geräts griffbereit haben.

Schritt 1: YubiKey als MFA-Gerät registrieren

Damit wir AWS MFA automatisieren können, muss der YubiKey als TOTP-basiertes MFA-Gerät in deinem AWS-Konto registriert sein.

  1. Melde dich in deinem AWS-Konto an und klicke oben rechts im Dropdown-Menü auf „Sicherheitsanmeldeinformationen“.
  2. Scrolle nach unten zum Bereich „Multi-Faktor-Authentifizierung (MFA)“ und klicke auf „MFA-Gerät zuweisen“.
  3. Wähle eine eindeutige Bezeichnung (z. B. „YubiKey“) und die Option „Authenticator-App“.
  4. Klicke auf „Geheimen Schlüssel anzeigen“ und kopiere den Schlüssel. Lass die Seite geöffnet, da wir den Schlüssel im nächsten Schritt benötigen.
  5. Öffne ein Terminal und registriere den YubiKey als MFA-Gerät mit folgendem Befehl, wobei <profil-name> für den ykman-Profilnamen und <secret> für den kopierten Geheimen Schlüssel steht:
    ykman oath accounts add -t <profil-name> <secret>
    Die Option -t legt fest, ob der YubiKey berührt werden muss, um den OTP-Code abzurufen. Du kannst sie weglassen, wenn du den Prozess vollständig automatisieren möchtest.
  6. Überprüfe, ob die Einrichtung funktioniert, indem du folgenden Befehl ausführst und den zuvor gewählten ykman-Profilnamen einsetzt:
    ykman oath accounts code <profil-name>
  7. Gib zwei aufeinanderfolgende OTP-Codes von ykman in das AWS-Webinterface ein. Du musst eventuell bis zu 30 Sekunden warten, bis ein neuer Code generiert wird.
  8. Klicke auf „MFA hinzufügen“, um die Registrierung des YubiKeys abzuschließen.

Nun, da der YubiKey erfolgreich als MFA-Gerät registriert wurde, können wir die Automatisierung für die Sitzungs-Token-Generierung einrichten.

Schritt 2: AWS CLI-Sitzungstoken automatisieren

Nun setzen wir alles zusammen.

  1. Lade das Skript von GitHub herunter.
  2. Stelle sicher, dass du die folgenden Informationen hast:
    • Den ykman-Profilnamen.
    • Den AWS CLI-Profilnamen.
    • Die MFA-ARN deines YubiKeys (zu finden unter „Sicherheitsanmeldeinformationen“ im AWS-Konto).
  3. Speichere das Skript z. B. unter ~/scripts/aws-session.sh.
  4. Mache es ausführbar:
    chmod +x ~/scripts/aws-session.sh
  5. Um das Skript leichter auszuführen, erstelle einen Alias. Füge in deine .bashrc oder .zshrc Datei am Ende folgende Zeile ein:
    alias aws-session='source "~/scripts/aws-session.sh"'
  6. Lade die Konfigurationsdatei neu:
    source ~/.bashrc # oder für Zsh: source ~/.zshrc
  7. Führe das Skript mit folgendem Befehl aus:
    aws-session
    Beim ersten Start fragt das Skript nach dem ykman-Profil, der Geräte-ARN und dem AWS-Profil. Falls du die -t-Option beim Einrichten des YubiKeys verwendet hast, musst du möglicherweise den Knopf auf dem YubiKey berühren.

Nach erfolgreicher Ausführung siehst du die Meldung „AWS-Sitzungs-Credentials erfolgreich aktualisiert“.

Jetzt kannst du AWS-Konten mit MFA-Beschränkung verwalten, ohne manuell Sitzungs-Tokens generieren zu müssen – und das mit minimalem Skriptaufwand.

Interesse geweckt?

Kontaktieren Sie uns und erfahren Sie, wie wir Ihre Cloud-Lösungen skalierbar, effizient und zukunftssicher gestalten können!

© Black Bridge GmbH