Sichere Blobs in Azure

7

Was ist der beste Weg, um Blobs in Windows Azure-Speicher für bestimmte Benutzer zu sichern? Ich verfüge z. B. über eine lokale ASP.NET-Website (Intranet) mit einem Back-End-Windows Azure-Blobspeicher für große Dateien. Ich mag die Idee einer signierten URL für die Sicherheit für jeden einzelnen Blob, aber würde das wirklich für einen Blob funktionieren, der für eine lange Zeit da sein wird. (unendlich?)

Ich brauche granulare Sicherheitsstufen für den Blob nur für bestimmte Benutzer (wie erreiche ich das einfach mit Blob Storage). * Hinweis Ich glaube, ich sollte das ACS nicht brauchen. Ich möchte es erreichen, wenn möglich mit Richtlinien und signierten URLs.

Zweite Frage, ich gehe davon aus, dass ich diese Daten auch im CDN auf die gleiche Weise sichern kann, kann das jemand bestätigen?

Danke

Shared Access Policy mit einer unendlichen Zeitarbeit und Privilegien für den Blob, z.B. Lese Arbeit?

    
user728584 14.03.2012, 08:50
quelle

2 Antworten

18

Wenn der Blob länger als eine Stunde für einzelne Benutzer verfügbar sein soll, müssen Sie eine SAS-Richtlinie verwenden, die an den Container angehängt ist. Da Sie jedoch maximal 5 pro Container haben können, wird es für viele Benutzer nicht gut skalieren. Eine SAS-Richtlinie kann einen Ablauf in Jahren haben.

Die üblichere Lösung besteht darin, dass ein Benutzer Ihre Website oder Ihren Service aufruft und Sie auf die von Ihnen gewählte Weise authentifiziert. Wenn sie die Datei tatsächlich herunterladen möchten, sollten Sie eine einmalige SAS-Signatur mit einem kürzeren Ablaufdatum (keine Richtlinie) generieren. Dies ist gut skalierbar und verhindert die Wiederverwendung durch nicht autorisierte Benutzer zu einem späteren Zeitpunkt. Sie profitieren auch davon, dass Sie aus dem Speicher und nicht aus Ihrer Webrolle bedienen.

Die Dinge werden komplizierter, wenn Sie CDN verwenden. Während Sie die SAS-Signatur auf der CDN-Ressource verwenden können, werden sie nicht wirklich berücksichtigt. Das heißt, die eindeutige URL ist der Schlüssel zur zugrunde liegenden Ressource. Wenn Sie also ein SAS-gesichertes Blob anfordern, wird es einfach in CDN gezogen und mit diesem URI als Schlüssel geliefert. Es wird dann die CDN-Caching-Richtlinie (nicht SAS-Ablaufdatum) verwenden, um vorwärts zu dienen. Dies kann zu einem Szenario führen, in dem der BLOB-URI in 10 Minuten abläuft, aber CDN diesen BLOB mit der gleichen SAS-Signatur für Tage zwischenspeichern, abhängig von der Ablaufrichtlinie. CDN wird den Speicher niemals erneut kontaktieren, um zu validieren. Daher wahrscheinlich keine gute Idee, dies zu verwenden. Da jede CDN-Ressource an URI gebunden ist, bedeutet dies auch, dass Sie jedes Mal, wenn sich die SAS-Signatur änderte, viele Kopien derselben Datei zwischenspeichern würden (laufende Transaktions- und Bandbreitengebühren). Lange Rede, kurzer Sinn, CDN und SAS vermischen sich nicht gut.

    
dunnry 14.03.2012, 16:30
quelle
3

Ich kann Ihnen mit dem CDN nicht helfen, da ich keine Erfahrung damit habe, obwohl ich erwarte, dass es auf ähnliche Weise funktioniert.

In diesem Fall würde ich eine gemeinsame Zugriffssignatur erstellen, wenn der Benutzer versucht, auf eine Datei zuzugreifen. Sie können in Ihrer Anwendung die Zugriffsregeln pflegen, die bestimmen, ob ein Benutzer auf eine bestimmte Datei zugreifen kann oder nicht.

Wenn diese Datei angefordert wird, generieren Sie im Handumdrehen eine Shared Access-Signatur (siehe hier für Details) und geben Sie diese an den Benutzer weiter.

Dies hat den Vorteil, dass Dateidownloads nicht durch Ihre Webrolle gepumpt werden, sondern direkt vom Blobspeicher zum Benutzer heruntergeladen werden.

    
David Steele 14.03.2012 10:09
quelle

Tags und Links