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

Das fehlende Bindeglied: So rufen Sie vollständige Dokumente mit AWS S3 Vectors ab

Viele Tutorials zu AWS S3 Vectors zeigen nur die halbe Wahrheit: Vektoren speichern klappt, aber wie kommst du wieder an deine kompletten Dokumente? In diesem Artikel erfährst du, wie du S3 Vectors mit einem S3 Bucket kombinierst und so eine echte End-to-End-Dokumentensuche aufbaust
zum Artikel
Image

Katastrophensicher dank moderner IT: Desaster Recovery mit Nutanix

Ausfälle passieren. Mit Nutanix DRaaS bist du vorbereitet: automatische Failover, schnelle Wiederherstellung und Hybrid-Cloud-Szenarien. Erfahre im Blog, wie du dein Unternehmen vor dem Ernstfall schützt.
zum Artikel
Image

Air-Gapped Backup Vault: Massgeschneiderte Lösung

Ein Totalausfall eines AWS-Kontos – und trotzdem bleiben deine Daten sicher? In unserem Blog zeigen wir, wie wir eine eigene Air-Gapped Backup Vault Lösung entwickelt haben, warum AWS Backup dafür nicht ausreichte und welche Stärken und Schwächen unser Ansatz hat.
zum Artikel
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