Image

Image
von Ashutosh Tamhankar
Cloud Engineer

Die wichtigsten Erkenntnisse
aus der Sicherung von APIs in AWS

Ausgelöst durch eine kürzlich aufgetretene Sicherheitslücke in der API einer SaaS-Plattform - bei der bestimmte APIs versehentlich ohne Authentifizierung öffentlich zugänglich waren - haben wir uns auf den Weg gemacht, um zu erfahren, wie man APIs mit AWS sichert. In diesem Artikel werden die wichtigsten Erkenntnisse aus der Authentifizierung und Autorisierung von APIs in AWS zusammengefasst.

Problem

Bei dem Sicherheitsvorfall ermöglichten ungesicherte APIs jedem Benutzer über die API den Zugriff auf Daten, die vor unbefugtem Zugriff geschützt werden sollten. Stell Dir vor, Du betreibst ein Restaurant auf einer solchen Plattform mit ungeschützten APIs, die Daten wie Bestelldetails, historische Verkaufsdaten und sogar persönliche Informationen von Kunden offenlegen. Nun stell Dir vor, dass ein böswilliger Benutzer im Namen von Kunden Bestellungen aufgibt - ohne deren Zustimmung.

Lösung

Um die Lösung für das oben beschriebene Szenario zu demonstrieren, haben wir eine Beispielplattform für Restaurants und Geschäfte aufgebaut, wobei wir uns auf die Sicherung der APIs konzentriert haben, die die Plattform ihren Nutzern zur Verfügung stellt, z. B. dem Plattformadministrator, dem Geschäftsinhaber und einem Kunden, der eines der Geschäfte besucht, die die Verkaufsplattform nutzen.

  • Jeder Kunde kann die Produkte sehen und eine Bestellung in dem Geschäft aufgeben, das er gerade besucht.
  • Jeder Kunde kann nur seine eigenen Bestellungen einsehen. Ein Besucher-(Gast-)Kunde sollte seinen Bestellstatus einsehen können, wenn die Anwendung das Session-Cookie zwischenspeichert. Ein registrierter Kunde sollte in der Lage sein, alle seine früheren Bestellungen einzusehen.
  • Jeder Shop-Besitzer kann nur auf Informationen zu seinem eigenen Shop zugreifen, einschliesslich Produkte, Bestellungen und Verkäufe.
  • Der Administrator der SaaS-Plattform kann nur aggregierte plattformweite Statistiken einsehen.

Finde den Code der Demo, die mit dem CDK entwickelt wurde, im folgenden Repo: amanoxsolutions/api-security-demo

Image

Das obige Diagramm veranschaulicht die High-Level-Architektur der Beispielplattform für Restaurants. Die APIs werden über das API-Gateway bereitgestellt, das mit Lambdas integriert ist, die wiederum eine Schnittstelle zu einer DynamoDB-Tabelle haben. Die APIs wurden durch die folgenden Prozesse gesichert:

  1. Steuerung des API-Zugriffs mithilfe des Autorisierungstyps AWS_IAM in API Gateway
  2. Definition von Rollen und Zuordnung zu Cognito-Identitätspools (Kunde, Shopbesitzer, Plattformadministrator), um den API-Zugriff auf der Grundlage von Rollen einzuschränken (z. B. kann ein Kunde nicht auf Shop-Management-APIs zugreifen)
  3. Validierung von Shop-Tokens und HTTP-Methoden (derzeit nur in resources/lambdas/list_products/main.py sichtbar)

Key learnings

  • Befolge immer das Prinzip des geringsten Privilegs - in diesem Zusammenhang wird dies durch die Zuweisung verschiedener IAM-Rollen an Cognito-Benutzer auf der Grundlage ihrer Rolle erreicht. Einem Kunden wird eine IAM-Rolle zugewiesen, die Zugriff auf eine andere Reihe von APIs gewährt als die IAM-Rolle, die einem Shop-Besitzer zugewiesen ist, und wiederum eine andere als die IAM-Rolle, die einem Plattform-Administrator zugewiesen ist.
  • Unbefugter Zugriff wird durch eine klare Rollenzuordnung blockiert. Hier ist ein Beispiel dafür, wie unberechtigter Zugriff effektiv blockiert wird, wenn ein Kunde versucht, Bestelldetails ohne die entsprechenden Berechtigungen abzurufen. Ausgabe von postman:
https://gt4n9vo5yk.execute-api.eu-central-1.amazonaws.com/prod/shop/0001/orders

{
    "Message": "User: arn:aws:sts::645143808269:assumed-role/api-security-demo-IdentityPool-AuthenticatedDefaultRole/CognitoIdentityCredentials is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:eu-central-1:********8269:gt4n9vo5yk/prod/GET/shop/0001/orders"

}

Schlussfolgerung

Durch die Integration von Authentifizierungs- und Autorisierungsmechanismen haben wir die APIs in unserer Beispielanwendung erfolgreich gesichert und damit gezeigt, wie AWS-Services zusammenarbeiten können, um sensible Daten zu schützen.
Image

Data Masking of AWS Lambda Function Logs

Beim Protokollieren von Ereignissen und API-Antworten in Lambda können sensible Daten wie PII in CloudWatch-Logs gespeichert werden. Wie lässt sich sicherstellen, dass Kundendaten aus allen Logs entfernt werden?
zum Artikel
Image

MFA-Anforderung für AWS-Root-Benutzer

Ab Ende März 2025 wird AWS Multi-Faktor-Authentifizierung (MFA) für alle AWS Organizations-Mitgliedskonten Root-Benutzer erzwingen. Entdecke in unserem Blog, wie du den Root-Benutzer Zugang zentral verwalten kannst.
zum Artikel
Image

Ein Beispiel für den Einsatz von GitOps zur Bereitstellung einer modernen Anwendungs­entwicklungs­plattform

In diesem Artikel erfährst du, wie GitOps mit OpenShift GitOps (ArgoCD) das Infrastrukturmanagement automatisiert, Entwickler stärkt und die Anwendungsbereitstellung beschleunigt.
zum Artikel
HYCU Teaser

Vereinfache deinen Datacenter Fussabdruck im hybriden Cloudzeitalter

Wir alle befinden uns in einer Welt, die sich rasch auf exponentielle technologische Fortschritte zubewegt. Für Unternehmen ist es von entscheidender Bedeutung, ihre IT-Plattformen nicht nur anzupassen, sondern sie auch zukunftssicher zu machen.
zum Artikel