2012-10-18 13 views
8

Ich baue eine Webanwendung und untersuche mit Amazon S3 die Benutzer-Uploads.amazon s3 für Downloads Wie man mit Sicherheit umgehen kann

Mein Anliegen ist, ich möchte nicht, dass Benutzer A seinen Download-Link für ein Dokument er hochgeladen ist urltoMyS3/doc1234.pdf und versuchen Sie urltoMyS3/doc1235.pdf und erhalten Sie ein anderes Benutzerdokument.

Die einzige Möglichkeit, dies zu tun ist, nur die Webanwendung eine Verbindung zu S3 zu ermöglichen, dann zu überprüfen, ob der Benutzer Zugriff auf eine Datei in der Webanwendung hat, die Webanwendung die Datei herunterladen, und dann servieren Sie es dem Kunden. Das Problem bei dieser Methode ist, dass die Anwendung die Datei zuerst herunterladen muss und den Downloadprozess für den Benutzer zwangsläufig verlangsamen würde.

Wie werden Benutzerdateien normalerweise mit Amazon S3 verarbeitet? Oder wird es einfach nicht in einem Szenario verwendet, in dem die Dateien nicht öffentlich sein sollten? Gibt es einen anderen Service für so etwas?

Dank

Antwort

8

Sie Query String Authentication implementieren können, die Ihr Problem lösen wird.

Die Abfragezeichenfolgenauthentifizierung ist nützlich, um HTTP oder Browser Zugriff auf Ressourcen zu gewähren, die normalerweise eine Authentifizierung erfordern würden. Die Signatur in der Abfragezeichenfolge sichert die Anforderung. Abfragezeichenfolge Authentifizierungsanforderungen erfordern ein Ablaufdatum. Sie können jede zukünftige Ablaufzeit in der Epoche oder UNIX-Zeit angeben (Anzahl der Sekunden seit dem 1. Januar 1970).

+1

FYI, leitet Ihr Link jetzt auf eine generische Begrüßungsseite. –

0

Wenn zeitgebundenen Authentifizierung für nicht (wie in anderen Antworten vorgeschlagen). Sie könnten in Erwägung ziehen, etwas wie s3fs zu implementieren, um Ihren S3-Bucket als Laufwerk auf Ihrem Webanwendungsserver bereitzustellen. Auf diese Weise können Sie einfach Ihre Authentifizierung vornehmen und dann die Datei direkt an den Benutzer senden, ohne dass Sie eine Vorstellung davon haben, dass sich die Datei in S3 befindet. Ebenso können Sie hochgeladene Dateien einfach direkt in dieses s3fs-Mount schreiben.

S3fs, können Sie auch einen lokalen Cache des S3-Verzeichnisses auf Ihrem Computer für einen schnelleren Zugriff konfigurieren.

Dies funktioniert auch in einer Cluster-Webserver-Umgebung, da jeder Server einfach das s3fs-Laufwerk mounten und unabhängig davon ausführen/lesen/schreiben kann.

A link with more info