Blog
Steigern Sie Ihre Produktivität mit awscurl: Vereinfachen Sie IAM-gesicherte API-Tests in AWS

Mit modernen Clouds können Sie fantastische Dinge bauen. Sie können Ihre Ideen innerhalb einer Stunde zum Leben erwecken, experimentieren und Innovationen vorantreiben. Einer der großen Vorteile der Cloud ist, dass Sie von Anfang an eine Menge Sicherheitskontrollen erhalten. Aber diese Sicherheitskontrollen können Sie auch daran hindern, produktiv zu sein!
Wie können diese Sicherheitskontrollen mich blockieren?
Wenn Sie AWS nutzen, können Sie über die Konsole, das sdk oder die cli damit interagieren. Diese haben jedoch alle eines gemeinsam. Sie verwenden alle dieselbe Reihe von APIs, um die vom Benutzer angeforderten Aktionen durchzuführen. Diese APIs sind geschützt, und die Authentifizierung und Autorisierung erfolgt über den Dienst
Angenommen, Sie möchten eine interne API erstellen und den API-Gateway-Dienst verwenden. Die Aktivierung der IAM-Authentifizierung für die von Ihnen definierten Methoden ist einfach. Sie können dann den entsprechenden Rollen Zugriff auf Ihre API geben. Der Verbraucher dieser API muss nur den AWSSigv4-Header hinzufügen, und solange die Rollenrichtlinie den Aufruf der API zulässt, wird sie funktionieren.
Sie können verschiedene Programmiersprachen verwenden, um die Signatur hinzuzufügen. Was aber, wenn Sie die API von Ihrem lokalen Rechner aus oder die Cloud-Shell von der Konsole aus testen möchten? In diesen Fällen haben Sie eine Shell, und die Erstellung der Signatur wird viel schwieriger. Dies wird sich auf Ihre Produktivität auswirken.
Wie können wir unsere Blockaden lösen?
Wie im vorherigen Abschnitt erläutert, besteht die Herausforderung darin, die Signatur auf der Grundlage der aktuellen Nutzlast zu generieren. In der Vergangenheit habe ich ein einfaches Python-Skript verwendet, um diese API-Aufrufe auszuführen, aber das hat immer einige Zeit und Energie in Anspruch genommen. Außerdem fühlte ich mich demotiviert, wenn ich auf solche Situationen stieß.
Das Problem ist nicht das Drehbuch, das Sie schreiben müssen. Das Problem ist, dass Sie es immer wieder tun müssen, weil jede Situation anders ist. Das verstößt gegen einen meiner Grundsätze, nämlich alles zu automatisieren! Es sollte eine Lösung für dieses Problem geben, und die gute Nachricht ist, dass es eine gibt!
Igor Okulist hat ein kleines Tool namens awscurl entwickelt. Mit diesem Tool können Sie einen curl-Befehl ausführen, der Ihren API-Aufruf automatisch signiert. Wenn wir zum Beispiel das im vorherigen Abschnitt beschriebene Szenario verwenden, können Sie einfach den folgenden Befehl ausführen:
export AWS_PROFILE=my-profile
awscurl --region eu-west-1 --service execute-api -X GET https://my-url-to-my-api
Das Beispiel geht davon aus, dass Sie ein gültiges Profil namens my-profile konfiguriert haben. Dann führen Sie denselben Befehl aus wie den ursprünglichen curl-Befehl. Sie fügen dem Befehl jedoch nur eine Region und eine Service-Option hinzu. Zum Vergleich: Der normale curl-Befehl würde wie folgt aussehen:
curl -X GET https://my-url-to-my-api
Dieser Befehl führt jedoch zu folgendem Fehler:
{"message": "Missing Authentication Token"}
Der Befehl awscurl fügt den Authorization-Header ein, der in etwa wie folgt aussieht:
Authorization: AWS4-HMAC-SHA256 Credential=XXX, SignedHeaders=XXX, Signature=XXX
Wenn Sie dies selbst ausprobieren, können Sie die Option -v hinzufügen, die die gesendeten und empfangenen Kopfzeilen ausdruckt. Sie werden sehen, dass die API nun die Signatur akzeptiert und mit den tatsächlichen Ergebnissen antwortet.
Sie können damit jeden API-Aufruf durchführen, der sigv4 unterstützt, aber für die meisten Services ist das AWS cli-Tool das beste Tool für diese Aufgabe. Aber für Ihre eigenen APIs oder Aufrufe Ihres OpenSearch-Clusters ist dieses Tool definitiv eine Zeitersparnis.
Fazit
Wenn Sie eine interne API entwickeln oder einen OpenSearch-Cluster haben, der IAM für die Authentifizierung und Autorisierung verwendet, kann das Testen von Aufrufen zu diesen Endpunkten eine Herausforderung sein, da Sie eine Signatur erstellen müssen. Das awscurl cli Tool hilft Ihnen bei der Erstellung dieser Signatur, so dass Sie sich auf Ihren geschäftlichen Nutzen konzentrieren können, anstatt Signaturen für Tests zu erstellen.
Foto von Pixabay
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.
Unsere Ideen
Weitere Blogs
Contact



