Umgang mit AWS-Anmeldeinformationen

Oct 29 2020

Unsere Webanwendung bietet viele Medien-Uploads. Wir verwenden AWS S3-Buckets für die Medienspeicherung. Gemäß der aktuellen Implementierung senden wir bei jedem Aufruf einer neuen API zum Hochladen von Dateien die AWS-Anmeldeinformationen an das Front-End, und das Front-End verwendet diese Anmeldeinformationen, um den Datei-Upload zu initiieren.

Eine kürzlich durchgeführte Sicherheitsüberprüfung ergab jedoch, dass dies ein schlechter Ansatz ist, da die AWS-Anmeldeinformationen von jedem Mitarbeiter des Frontends erfasst werden können und die Buckets lesbar / beschreibbar sind.

Ich verstehe, dass ich die AWS-Anmeldeinformationen nur im Backend speichern kann. Dann kann der Server die Datei zuerst empfangen, wenn der Benutzer sie hochlädt, und der Server kann sie dann mit diesen Anmeldeinformationen in S3 hochladen. Aber wie ich bereits erwähnt habe, verwenden wir viel Medien-Upload und dieser Prozess macht es zu einem zusätzlichen Overhead.

Welche anderen Möglichkeiten gibt es, um die Sicherheitsbedrohung zu beheben? Kann der Zugriff, der S3-Buckets nur auf unsere Domain beschränkt, das Problem lösen?

Antworten

3 tim Oct 29 2020 at 16:03

Es gibt mindestens zwei Möglichkeiten, dies zu erreichen:

  • unter Verwendung vorgegebener URLs (siehe auch hier )
  • Generieren einer temporären, signierten Richtlinie, die Aktionen für den Bucket ermöglicht

In beiden Fällen müssen Sie sicherstellen, dass Sie nur den gewünschten Zugriff gewähren. Einige mögliche Fallstricke:

  • Ermöglichen, dass ein Benutzer eine Datei liest, die er nicht besitzt
  • Ermöglichen, dass ein Benutzer eine Datei (überschreibt), die er nicht besitzt
  • Ermöglichen, dass ein Benutzer andere Aktionen ausführt, die er nicht ausführen sollte (Auflisten von Verzeichnissen, acls usw.)
  • Hochladen schädlicher Dateien (z. B. HTML für XSS)

Es gibt viel Raum für Fehler. Lassen Sie daher das Sicherheitsteam die endgültige Implementierung überprüfen.