Erstellen einer Konto-SAS mit .NET
Eine Shared Access Signature (SAS) ermöglicht Ihnen, eingeschränkten Zugriff auf Container und Blobs in Ihrem Speicherkonto zu gewähren. Wenn Sie eine SAS erstellen, geben Sie ihre Einschränkungen an, einschließlich der Azure Storage-Ressourcen, auf die Clients zugreifen dürfen, welche Berechtigungen sie für diese Ressourcen haben und wie lange die SAS gültig ist.
Jede SAS wird mit einem Schlüssel signiert. Zum Signieren einer SAS stehen zwei Möglichkeiten zur Verfügung:
- Mit einem Schlüssel, der mit Microsoft Entra-Anmeldeinformationen erstellt wurde. Eine SAS, die mit Microsoft Entra-Anmeldeinformationen signiert wurde, ist eine Benutzerdelegierungs-SAS. Einem Client, der eine SAS für die Benutzerdelegierung erstellt, muss eine Azure RBAC-Rolle zugewiesen werden, in der die Aktion Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey enthalten ist. Weitere Informationen finden Sie unter Erstellen einer SAS für die Benutzerdelegierung.
- Mit dem Speicherkontoschlüssel. Sowohl eine Dienst-SAS als auch eine Konto-SAS wird mit dem Speicherkontoschlüssel signiert. Der Client, der eine Dienst-SAS erstellt, muss entweder direkten Zugriff auf den Kontoschlüssel haben, oder ihm muss die Berechtigung Microsoft.Storage /storageAccounts/listkeys/action zugewiesen werden. Weitere Informationen finden Sie unter Erstellen einer Dienst-SAS oder Erstellen einer Konto-SAS.
Hinweis
Eine SAS für die Benutzerdelegierung bietet überragende Sicherheit für eine SAS, die mit dem Speicherkontoschlüssel signiert wird. Microsoft empfiehlt, nach Möglichkeit eine SAS für die Benutzerdelegierung zu verwenden. Weitere Informationen finden Sie unter Gewähren von eingeschränktem Zugriff auf Daten mithilfe von SAS (Shared Access Signature).
In diesem Artikel wird beschrieben, wie Sie den Speicherkontoschlüssel zum Erstellen einer Konto-SAS mit der Azure Storage-Clientbibliothek für .NET verwenden.
Informationen zur Konto-SAS
Eine Konto-SAS wird auf der Ebene des Speicherkontos erstellt. Wenn Sie eine Konto-SAS erstellen, können Sie Folgendes ausführen:
- Delegieren Sie den Zugriff auf Vorgänge auf Dienstebene, die derzeit nicht mit einer dienstspezifischen SAS verfügbar sind, z. B. Abrufen von Blob-Diensteigenschaften, Festlegen von Blob-Diensteigenschaften und Abrufen von Blob-Dienststatistiken.
- Delegieren Sie den Zugriff auf mehrere Dienste in einem Speicherkonto gleichzeitig. Beispielsweise können Sie den Zugriff auf Ressourcen in Azure Blob Storage und Azure Files delegieren, indem Sie eine Konto-SAS verwenden.
Gespeicherte Zugriffsrichtlinien werden für Konto-SAS nicht unterstützt.
Erstellen einer Konto-SAS
Eine Konto-SAS wird mit dem Kontozugriffsschlüssel signiert. Sie können die StorageSharedKeyCredential-Klasse verwenden, um die Informationen zu erstellen, die zum Signieren der SAS verwendet werden.
Das folgende Codebeispiel zeigt, wie Sie ein neues AccountSasBuilder-Objekt erstellen und die ToSasQueryParameters-Methode aufrufen, um die SAS-Tokenzeichenfolge des Kontos abzurufen.
public static async Task<string> CreateAccountSAS(StorageSharedKeyCredential sharedKey)
{
// Create a SAS token that's valid for one day
AccountSasBuilder sasBuilder = new AccountSasBuilder()
{
Services = AccountSasServices.Blobs | AccountSasServices.Queues,
ResourceTypes = AccountSasResourceTypes.Service,
ExpiresOn = DateTimeOffset.UtcNow.AddDays(1),
Protocol = SasProtocol.Https
};
sasBuilder.SetPermissions(AccountSasPermissions.Read |
AccountSasPermissions.Write);
// Use the key to get the SAS token
string sasToken = sasBuilder.ToSasQueryParameters(sharedKey).ToString();
return sasToken;
}
Verwenden einer Konto-SAS von einem Client
Um die Konto-SAS zum Zugreifen auf APIs auf Dienstebene für den Blob-Dienst zu verwenden, erstellen Sie ein BlobServiceClient-Objekt, indem Sie die Konto-SAS und den Blob-Speicherendpunkt für Ihr Speicherkonto verwenden.
string accountName = "<storage-account-name>";
string accountKey = "<storage-account-key>";
StorageSharedKeyCredential storageSharedKeyCredential =
new(accountName, accountKey);
// Create a BlobServiceClient object with the account SAS appended
string blobServiceURI = $"https://{accountName}.blob.core.windows.net";
string sasToken = await CreateAccountSAS(storageSharedKeyCredential);
BlobServiceClient blobServiceClientAccountSAS = new BlobServiceClient(
new Uri($"{blobServiceURI}?{sasToken}"));
Ressourcen
Weitere Informationen zum Erstellen einer Konto-SAS mithilfe der Azure Blob Storage-Clientbibliothek für .NET finden Sie in den folgenden Ressourcen.
Ressourcen zur Clientbibliothek
Weitere Informationen
- Gewähren von eingeschränktem Zugriff auf Azure Storage-Ressourcen mithilfe von SAS (Shared Access Signature)
- Erstellen einer Konto-SAS
- Verwandte Code-Beispiele mithilfe veralteter SDKs der .NET-Version 11.x finden Sie unter Code-Beispiele mithilfe der .NET-Version 11.x.