VERTRIEB: 1-800-867-1380

Erstellen und Verwenden einer SAS (Shared Access Signature)

Letzte Aktualisierung: April 2014

Eine SAS (Shared Access Signature) ist ein URI, der eingeschränkte Zugriffsrechte auf Container, BLOBs, Warteschlangen und Tabellen für die Dauer eines bestimmten Zeitintervalls gewährt. Wenn Sie einem Client eine SAS bereitstellen, können Sie es diesem emöglichen, auf Ressourcen in Ihrem Speicherkonto zuzugreifen, ohne dass Sie den Kontoschlüssel freigeben müssen.

noteHinweis
Eine ausführliche Konzeptübersicht und ein Lernprogramm zu SAS finden Sie unter SAS (Shared Access Signatures).

Zu den unterstützten Vorgängen mithilfe von SAS gehören:

  • Lesen und Schreiben von Seiten- oder Block-BLOB-Inhalten, Blockierlisten, Eigenschaften und Metadaten

  • Löschen, Leasen und Erstellen einer Momentaufnahme eines BLOB

  • Auflisten der BLOBs innerhalb eines Containers

  • Hinzufügen, Löschen, Aktualisieren und Löschen von Warteschlangennachrichten (in der Speicherclientbibliothek 2.0 und neuer)

  • Abrufen von Warteschlangenmetadaten, einschließlich der Nachrichtenanzahl (in der Speicherclientbibliothek 2.0 und neuer)

  • Abfragen, Hinzufügen, Aktualisieren, Löschen von Tabellenentitäten sowie Ausführen von Upsert-Vorgängen für Tabellenentitäten (in der Speicherclientbibliothek 2.0 und neuer)

Die Abfrageparameter des SAS-URI enthalten alle Informationen, die erforderlich sind, um den gesteuerten Zugriff auf eine Speicherressource zu gewähren. Die URI-Abfrageparameter geben das Zeitintervall an, in dem die SAS gültig ist, die gewährten Berechtigungen, die Ressource, die bereitgestellt wird, und die Signatur, die die Speicherdienste verwenden sollten, um die Anforderung zu authentifizieren.

Darüber hinaus kann der URI der SAS auf eine gespeicherte Zugriffsrichtlinie verweisen, die eine zusätzliche Steuerungsebene für eine Gruppe von Signaturen bietet, einschließlich der Möglichkeit, den Zugriff auf die Ressource ggf. zu ändern oder aufzuheben. Weitere Informationen zu gespeicherten Zugriffsrichtlinien finden Sie unter Verwenden einer gespeicherten Zugriffsrichtlinie.

Weitere Informationen zum URI-Format einer SAS finden Sie unter Delegieren des Zugriffs mit einer SAS (Shared Access Signature).

Eine SAS erlaubt den Zugriff auf die durch die gewährten Berechtigungen des URI angegebene Ressource. Sie sollten immer HTTPS verwenden, um einen SAS-URI zu erstellen. Durch Verwendung von HTTP für eine SAS kann Ihr Speicherkonto anfällig für böswillige Benutzer werden.

Wenn eine SAS Zugriff gewährt, der nicht für die Öffentlichkeit vorgesehen ist, sollte sie mit möglichst wenigen Berechtigungen erstellt werden. Darüber hinaus sollte eine SAS über eine sichere Verbindung an Clients verteilt werden, einer gespeicherten Zugriffsrichtlinie zugeordnet werden, um sie aufheben zu können, und die kürzeste mögliche Lebensdauer der Signatur angeben.

ImportantWichtig
Ein SAS-URI wird dem Kontoschlüssel, mit dem Signatur erstellt wurde, und der zugehörigen gespeicherten Zugriffsrichtlinie (sofern vorhanden) zugeordnet. Wenn keine gespeicherte Zugriffsrichtlinie angegeben wird, kann eine SAS nur durch Änderung des Kontoschlüssels aufgehoben werden.

Im folgenden Codebeispiel wird eine Zugriffsrichtlinie für einen Container erstellt. Anschließend wird eine SAS für den Container generiert. Diese SAS kann dann an Clients verteilt werden:

// The connection string for the storage account.  Modify for your account.
string storageConnectionString =
   "DefaultEndpointsProtocol=https;" +
   "AccountName=myaccount;" +
   "AccountKey=<account-key>";

// As an alternative, you can retrieve storage account information from an app.config file. 
// This is one way to store and retrieve a connection string if you are 
// writing an application that will run locally, rather than in Windows Azure.

// string storageConnectionString = ConfigurationManager.AppSettings["StorageAccountConnectionString"];

// Create the storage account with the connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);
                                               
// Create the blob client object.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Get a reference to the container for which shared access signature will be created.
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
container.CreateIfNotExists();

// Create blob container permissions, consisting of a shared access policy 
// and a public access setting. 
BlobContainerPermissions blobPermissions = new BlobContainerPermissions();

// The shared access policy provides 
// read/write access to the container for 10 hours.
blobPermissions.SharedAccessPolicies.Add("mypolicy", new SharedAccessBlobPolicy()
{
   // To ensure SAS is valid immediately, don’t set start time.
   // This way, you can avoid failures caused by small clock differences.
   SharedAccessExpiryTime = DateTime.UtcNow.AddHours(10),
   Permissions = SharedAccessBlobPermissions.Write |
      SharedAccessBlobPermissions.Read
});

// The public access setting explicitly specifies that 
// the container is private, so that it can't be accessed anonymously.
blobPermissions.PublicAccess = BlobContainerPublicAccessType.Off;

// Set the permission policy on the container.
container.SetPermissions(blobPermissions);

// Get the shared access signature to share with users.
string sasToken =
   container.GetSharedAccessSignature(new SharedAccessBlobPolicy(), "mypolicy");

Ein Client, der eine SAS erhält, kann sie aus seinem Code heraus verwenden, um ein Objekt vom Typ StorageCredentials zu erstellen. Diese Anmeldeinformationen können dann verwendet werden, um ein CloudStorageAccount-Objekt oder ein CloudBlobClient-Objekt für die Verwendung mit der Ressource zu erstellen, wie im folgenden Beispiel veranschaulicht:

Uri blobUri = new Uri("https://myaccount.blob.core.windows.net/mycontainer/myblob.txt");
            
// Create credentials with the SAS token. The SAS token was created in previous example.
StorageCredentials credentials = new StorageCredentials(sasToken);

// Create a new blob.
CloudBlockBlob blob = new CloudBlockBlob(blobUri, credentials);

// Upload the blob. 
// If the blob does not yet exist, it will be created. 
// If the blob does exist, its existing content will be overwritten.
using (var fileStream = System.IO.File.OpenRead(@"c:\Test\myblob.txt"))
{
    blob.UploadFromStream(fileStream);
}

Siehe auch

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.
Anzeigen:
© 2014 Microsoft