Wie zu verwenden MFA mit AWS CLI?
Wie kann ich in der MFA-code bei der Verwendung von AWS CLI? Ich habe die Dokumentation Seite der IAM -http://docs.aws.amazon.com/cli/latest/reference/iam/index.html.
Habe ich die MFA-Geräte bereits aktiviert, unter meinem Benutzernamen.
aws iam list-mfa-devices --user-name X
gibt
{
"MFADevices": [
{
"UserName": "X",
"SerialNumber": "arn:aws:iam::+++:mfa/X",
"EnableDate": "2016-01-13T23:15:43Z"
}
]
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Call
aws sts get-session-token --token-code <value>
dokumentiert hier. Dies wird Ihnen eine vorübergehende Sicherheits-token. Dokumentation über die Verwendung der temporären Sicherheits-token finden hier.Der CLI verwalten können eine Menge für Sie, wenn Sie über Rollen. Hier beschrieben: http://docs.aws.amazon.com/cli/latest/userguide/cli-roles.html
In meine credentials-Datei habe ich:
Hinweis: die
mfa_serial
Eintrag. Sie erhalten diesen Wert aus Ihrem Benutzer-details sind in der AWS IAM-Konsole. Dieser Eintrag sagt der CLI, die MFA ist erforderlich für diese Rolle.Wenn ich rufe
aws s3 ls --profile my_admin_role
es sagtEnter MFA code:
habe ich nach dem einfügen in den code, es gibt die Liste.Hinweis: ich habe nicht gefunden, einen Weg, um die CLI zu Fragen, für MFA beim aufrufen eines Benutzerprofils (
--profile my_iam_user
) nur das aufrufen einer Rolle Profil löst die MFA-Antrag.Den MFA-token wird dann übernommen und der Benutzer-Profil können ebenfalls verwendet werden:
Habe ich veröffentlicht eine PR für die aws-Befehlszeilenschnittstelle, die es erlauben, zu verwenden mfa_serial in den Anmeldeinformationen, die Sie zwingen, zu geben Sie die token, bevor Anfrage an AWS - (und es wird zwischengespeichert werden, während der token gültig ist)
Fühlen Sie sich frei, zu wählen, wenn Sie wollen, um es zu bekommen in.
AWS MFA verwenden Sie auf der Kommandozeile kann ziemlich unangenehm und umständlich, vor allem, wenn Sie mehrere profile haben und Rollen.
Habe ich veröffentlicht
awscli-mfa.sh
Skript, das macht MFA/Rolle-session-management auf der Kommandozeile sehr viel einfacher. Ein Begleit-Skriptenable-disable-vmfa-device.sh
ähnlich macht es einfach zu aktivieren oder deaktivieren eines virtuellen MFA-Gerät auf ein IAM-Benutzerkonto.awscli-mfa.sh
weiterhin besteht eine gestartete session in~/.aws/credentials
(mit einigen Infos in~/.aws/config
), oder Sie können eine env-Sitzung, so dass seine Angaben nicht erhalten blieb. Bei der Ausführung in Windows-Subsystem für Linux, das Skript bietet auch session-Aktivierung Saiten für PowerShell und der Windows-Kommandozeile. Jedoch, das Skript selbst läuft nur in der bash (geschrieben für macOS, Linux und WSL bash mit Ubuntu).Finden Sie die Skripte und am Beispiel MFA-Richtlinien in meinem GitHub-repo auf https://github.com/vwal/awscli-mfa
Auf Windows
Ich bin unter windows und habe ich eine batch-Datei zu übergeben, in meinem MFA-code eingeben und automatisch meine Anmeldeinformationen. Erste, Sie brauchen, um Ihre Produktion Anmeldeinformationen bei AWS:
Beantworten Sie die Fragen entsprechend mit deinem key und secret. Dann führe ich mein Skript wie dieses:
Hier der Inhalt meiner
mfa-getCreds.bat
:Für diese auszuführen, müssen Sie die ausgezeichnete jq Paket in Ihrem Pfad.
Schrieb ich ein kleines bash-Skript, um über diese lästige problem.
Sie können es hier finden: https://gist.github.com/geekgunda/db4c9c8d850c08a48d1d60f119628032
Annahmen:
Mein use-case ist, ich habe einen root-account, wo alle IAM-Benutzer erstellt und zugewiesen IAM-Gruppen, die wiederum die Fähigkeit haben, zu übernehmen Rollen, die auf ein anderes Konto mit unterschiedlichem Zugang je nach der Gruppe, der Sie sind auf. Ich habe ein paar Hausregeln im Ort;
Diese wurde eingerichtet für die Nutzung von AWS Shared-Organisationen.
Zuvor habe ich mit einem python-Skript, das ich schrieb, um mein Benutzer-login über cli mit der MFA und die Schalter-Konten. Dies erfolgt durch Bearbeiten der ~/.aws/Anmeldeinformationen.
Ich habe seit migriert mit diesem Projekt https://gitlab.com/severity1/aws-auth, das ist geschrieben in Go und ermöglicht es mir, das gleiche zu tun, ohne viel setup und es funktioniert auf windows, macosx und linux.
Dadurch können effektiv alle meine Benutzer die Möglichkeit, lokale Tests während der Entwicklung von Anwendungen für AWS-ohne hartcodieren AWS-Anmeldeinformationen in Ihrem code.
Wir dokumentieren eine einige überlegungen für AWS-API-multifactor im Allgemeinen (wo, um die Bedingungen, was sind die Folgen etc.) in der Dokumentation für einige custom tooling (https://github.com/kreuzwerker/awsu) wir entwickelt für die Verwendung von Yubikeys als Quelle für die TOTP-Token. Dies macht das arbeiten mit Rollen und langfristige Anmeldeinformationen + Sitzungs-Token ziemlich einfach.
Habe ich Gabel-Chinmay die gist und aktualisiert es, ziehen Sie die Geräte-Seriennummern von aws statt hardcoding es. Ich habe auch aktualisiert die Ausgänge an status zurück 1 anstelle von nur beenden.
Finden Sie hier:
https://gist.github.com/jpribyl/e44021ae5cbf7fd1b4549598e85b5341
Ich bin mit es in der deploy-Skripte wie dieses (habe ich umbenannt, das Skript zu awsMfaCli.sh):
aws-mfa
fungiert als wrapper umsts
und funktioniert wirklich gut: https://github.com/broamski/aws-mfa