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.
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:
- Öffne deine Authenticator-App.
- Gib den OTP-Code in einen Befehl wie diesen ein:
aws sts get-session-token --serial-number <MFA-ARN> --token-code <MFA-Code>
- 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:
- AWS CLI, konfiguriert mit deinen Profilen.
- YubiKey CLI (
ykman
). Die Dokumentation dazu findest du hier. jq
zum Parsen von JSON.- Einen YubiKey.
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.
- Melde dich in deinem AWS-Konto an und klicke oben rechts im Dropdown-Menü auf „Sicherheitsanmeldeinformationen“.
- Scrolle nach unten zum Bereich „Multi-Faktor-Authentifizierung (MFA)“ und klicke auf „MFA-Gerät zuweisen“.
- Wähle eine eindeutige Bezeichnung (z. B. „YubiKey“) und die Option „Authenticator-App“.
- 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.
- Öffne ein Terminal und registriere den YubiKey als MFA-Gerät mit folgendem Befehl, wobei
<profil-name>
für denykman
-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. - Ü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>
- 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. - 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.
- Lade das Skript von GitHub herunter.
- 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).
- Speichere das Skript z. B. unter
~/scripts/aws-session.sh
. - Mache es ausführbar:
chmod +x ~/scripts/aws-session.sh
- 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"'
- Lade die Konfigurationsdatei neu:
source ~/.bashrc # oder für Zsh: source ~/.zshrc
- Führe das Skript mit folgendem Befehl aus:
aws-session
Beim ersten Start fragt das Skript nach demykman
-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.