So testen Sie Anmeldeinformationen für AWS Command Line Tools

149

Gibt es einen Befehl / Unterbefehl, der an das awsDienstprogramm übergeben werden kann, um 1) ~/.aws/credentialsdie Gültigkeit der Anmeldeinformationen in der Datei zu überprüfen und 2) anzugeben, zu welchem ​​Benutzer die Anmeldeinformationen gehören? Ich suche nach etwas Allgemeinem, das keine Annahmen darüber macht, dass der Benutzer Berechtigungen für IAM oder einen bestimmten Dienst hat.

Der Anwendungsfall hierfür ist eine Überprüfung der Integrität während der Bereitstellung, um sicherzustellen, dass die Anmeldeinformationen ordnungsgemäß sind. Im Idealfall gibt es eine Möglichkeit, den Rückgabewert zu überprüfen und die Bereitstellung abzubrechen, wenn ungültige Anmeldeinformationen vorhanden sind.

Smitelli
quelle
3
Könnte ich vorschlagen, dass dies besser unter serverfault.com gefragt wird ? Der Stapelüberlauf ist speziell für Programmierfragen vorgesehen.
Tripp Kinetics
4
@TrippKinetics Ja, ich war auf dem Zaun, wo ich fragen soll. In meinen Augen ging es bei der Frage eher darum, eine API programmgesteuert abzufragen, als Server per se zu verwalten.
Smitelli

Antworten:

219

Verwenden Sie GetCallerIdentity :
aws sts get-caller-identity

Im Gegensatz zu anderen API / CLI-Aufrufen funktioniert es immer, unabhängig von Ihren IAM-Berechtigungen.

Sie erhalten die Ausgabe im folgenden Format:

{
    "Account": "123456789012", 
    "UserId": "AR#####:#####", 
    "Arn": "arn:aws:sts::123456789012:assumed-role/role-name/role-session-name"
}

Das genaue ARN-Format hängt von der Art der Anmeldeinformationen ab, enthält jedoch häufig den Namen des (menschlichen) Benutzers.

Es werden die Standard- AWS-CLI-Fehlercodes verwendet , die bei Erfolg 0 und 255 angeben, wenn Sie keine Anmeldeinformationen haben.

Jason
quelle
5
Dies ist eine großartige Antwort, aber wenn Sie MFA verwenden, achten Sie darauf - es ist komplizierter. Bei MFA müssen Sie Arbeitsanmeldeinformationen (i) in Kombination mit einem MFA-Token verwenden, um unterschiedliche temporäre Arbeitsanmeldeinformationen zu erhalten (ii). Mit dieser Lösung erhalten Sie dieselben Ergebnisse für Anmeldeinformationen (i) oder (ii).
Mark Chackerian
3
@ MarkChackerian Das ist nicht immer der Fall. Ich habe einen Benutzer erstellt, dessen MFA mithilfe der Trek10-Richtlinie erzwungen wird . Wenn das MFA-Sitzungstoken nicht aktiv ist aws iam get-user --profile test-mfa, erhalte ich bei Ausführung Folgendes : An error occurred (AccessDenied) when calling the GetUser operation. Allerdings aws sts get-caller-identity --profile test-mfaAusgänge (ähnlich, ohne MFA Session - Token aktiv) das test-mfa‚s Konto, ARN, und die Benutzer - ID.
Ville
54

Es gibt einen direkten Weg - aws iam get-userwürde die Details darüber mitteilen, wer Sie sind (der aktuelle IAM-Benutzer) - vorausgesetzt, der Benutzer verfügt über iamBerechtigungen.

Es gibt einige CLI-Aufrufe, die ein --dry-runFlag unterstützen, mit aws ec2 run-instancesdem Sie angeben, ob Sie die erforderliche Konfiguration / Berechtigung haben, um den Vorgang auszuführen.

Dort wird auch --auth-dry-rungeprüft, ob Sie über die erforderlichen Berechtigungen für den Befehl verfügen, ohne den Befehl tatsächlich auszuführen. Wenn Sie über die erforderlichen Berechtigungen verfügen, gibt der Befehl DryRunOperation zurück. Andernfalls wird UnauthorizedOperation zurückgegeben. [Aus der AWS-Dokumentation - Allgemeine Optionen ]

Sie können die IAM-Zugriffsschlüssel in der Verwaltungskonsole auflisten, die Sie überprüfen können, um festzustellen, wem welcher Schlüssel zugewiesen wurde.

Der beste Weg, um zu verstehen, welcher Benutzer / welche Rolle welche Berechtigungen hat, ist die Verwendung von IAM Policy Simulator .

Naveen Vijay
quelle
16
Ironischerweise hat der Benutzer, für den ich den Test ausgeführt habe, einen AccessDeniedFehler erhalten - der die vollständige arn:aws:iam::123...890:user/somebodyZeichenfolge als Teil der Fehlerausgabe enthielt .
Smitelli
7
Es ist durchaus möglich, dass der Benutzer keine Berechtigung hat, sich selbst zu "benennen". : - /
Jason
Ja, ich habe diese Situation. In der AWS-Konsole neben Benutzer-ARN wird N / A angezeigt, und der Mauszeiger erklärt, dass "Benutzer arn: aws: iam: ...: Benutzer / Steve nicht berechtigt ist, iam: GetUser für Ressource: Benutzer Steve auszuführen"
Steve Bennett