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

Secured with vision: Vista relies on Rubrik for resilient IT

Ein IT-Ausfall im medizinischen Notfall? Für Vista Augenpraxen & Kliniken keine Option. Mit Amanox, Rubrik und den Schweizer Azure-Regionen ist die Datensicherung jetzt sicher, schnell und gesetzeskonform. Mehr dazu im Blog.
zum Artikel
Image

Hybrid Multi-Cloud Kubernetes mit Nutanix NKP verwalten

Container verändern nicht nur die Entwicklung, sondern auch Betrieb und Infrastruktur. Warum moderne Apps neue Antworten brauchen, erfährst du im Blog.
zum Artikel
Image

LangChain bei AWS CloudWatch protokollieren

LangChain macht LLM-Anwendungen flexibel – doch ohne sauberes Logging wird’s in der Praxis schwierig. Erfahre, wie du mit AWS CloudWatch deine KI-Systeme zuverlässig überwachst, Fehler aufdeckst und smarter analysierst.
zum Artikel
Image

Serverless Chatbot mit LangChain & AWS Bedrock

LangChain und AWS Bedrock versprechen schnelle KI-Entwicklung – doch selbst einfache Chatbots stellen hohe Anforderungen. Erfahre, wie du mit cleverer Kombination beider Tools smarte Features wie RAG, Verlaufsspeicherung und Mehrsprachigkeit meisterst.
zum Artikel