1

Ich mache eine App, die S3 verwendet, um viele Benutzermedien zu speichern, die ich dann dem Benutzer zu einem späteren Zeitpunkt anzeigen kann. Ich versuche, den besten und sichersten Weg zu finden, dies zu erreichen.S3- und Web-Anwendungen

ich gelesen, dass die Medien bei S3 zu speichern und dann die URL von S3 mit Medien laden könnte eine schlechte Wahl sein, weil es Informationen aussetzen kann, dass Sie nicht im Freien wollen heraus könnten. Ist es richtig, alle Medien von S3 auf den Server herunterzuladen, bevor sie auf eine Seite geladen werden? das scheint, als würde es den Zweck von S3 überhaupt zunichte machen, wenn ich von dort weiterhin Medien herunterladen muss, um sie anzuzeigen.

Was ist die beste Vorgehensweise, um dies zu erreichen?

Ich würde mich über einen kleinen Ratschlag freuen.

Danke!

+2

Sicherheit durch Obscurity (dh in der Hoffnung, dass die Leute keine Informationen finden) ist keine gute Form der Sicherheit. Ihr System sollte so gestaltet sein, dass es sicher ist, unabhängig davon, welche Informationen bekannt sind (z. B. die Ordnerstruktur Ihrer Dokumente). Wenn Sie Inhalte über eine signierte URL bereitstellen, wird die Sicherheit der Dateien gewährleistet, selbst wenn jemand die Speicherstruktur kennt. –

Antwort

0

Es gibt viele verschiedene Möglichkeiten, S3 zu verwenden. Es gibt kein einziges "Best-Practice".

Serve alle Inhalte an Web-Server:

In diesem Szenario wird S3 einfach als Speichermedium verwendet. Der Inhalt wird über den Webserver angefordert, der dann den Inhalt von S3 herunterlädt und den Inhalt an den Client weiterleitet.

In diesem Szenario ist dem Client der S3-Bucket nicht bekannt.

nicht besiegen Dies ist nicht der Zweck der S3, da der Zweck der S3 (in diesem Szenario) Content-Speicher ist nicht Lieferung.

Serve Inhalt von einem öffentlichen S3 Eimer:

In diesem Szenario Ihnen Setup-Eimer Ihrer S3 den Inhalt direkt zu servieren. In diesem Fall ist der gesamte Inhalt öffentlich, daher wird eine direkte Verknüpfung mit dem Inhalt aus der Web-App verwendet. Alle Inhalte im S3-Bucket können von jedem heruntergeladen werden.

Der Eimer kann als bucket.s3-website.amazonaws.com oder unter Ihrer eigenen Domain verwiesen werden.

Dieses Szenario hat den Vorteil, dass es die Bereitstellung des Inhalts von Ihrem Webserver auslastet.

Serve Inhalt von einem privaten S3 Eimer:

In diesem Szenario Ihre Eimer sind privat, aber immer noch direkt den Inhalt servieren. Mit diesem System erstellen Sie ablaufende vor-signierte URLs, um den privaten Inhalt zu schützen. Der Inhalt wird direkt von S3 heruntergeladen, aber nicht alle Inhalte können von jedem heruntergeladen werden.

Wie im vorherigen Szenario hat dieses Szenario den Vorteil, dass sie die Lieferung des Inhalts von Ihrem Web-Server auslagert.

Cloudfront:

Sie Cloudfront vor Ihrer Anwendung verwenden können, und/oder S3 Eimer eine der folgenden Funktionen ausführen:

der Inhalt
  1. Cache, globale Lieferung beschleunigen,
  2. Schützen Sie Ihren Webserver, in Verbindung mit WAF

Abschließende Gedanken:

Die von Ihnen gewählte Konfiguration hängt von Ihrer Anwendung ab.

+0

Vielen Dank für Ihre ausführliche Antwort. Eine meiner größten Sorgen mit dem öffentlichen Eimer ist die Fähigkeit, einfach mit der rechten Maustaste auf die Medien Zugriff auf die URL zu haben, die Struktur enthalten könnte, die am besten nicht veröffentlicht werden soll. Wenn ich die vor-signierte URL verwenden würde, würde das helfen, oder ist CloudFront die einzige Möglichkeit, eine maskiertere URL zu erstellen? – ackerchez

+0

Voreingestellte URLs maskieren die Struktur nicht. CloudFront kann einen Teil der Struktur maskieren. Wenn Sie Ihren eigenen Server verwenden, können Sie ihn vollständig maskieren. –

+0

in einer Einstellung, wo Sie Ihren eigenen Server verwenden, um die Struktur zu maskieren, wie würde das funktionieren? – ackerchez