Tworzenie sygnatury dostępu współdzielonego konta przy użyciu platformy .NET

Sygnatura dostępu współdzielonego (SAS) umożliwia udzielanie ograniczonego dostępu do kontenerów i obiektów blob na koncie magazynu. Podczas tworzenia sygnatury dostępu współdzielonego określasz jego ograniczenia, w tym zasoby usługi Azure Storage, do których może uzyskiwać dostęp klient, jakie uprawnienia mają w tych zasobach i jak długo sygnatura dostępu współdzielonego jest prawidłowa.

Każda sygnatura dostępu współdzielonego jest podpisana przy użyciu klucza. Sygnaturę dostępu współdzielonego można podpisać na jeden z dwóch sposobów:

  • Za pomocą klucza utworzonego przy użyciu poświadczeń firmy Microsoft Entra. Sygnatura dostępu współdzielonego podpisana przy użyciu poświadczeń usługi Microsoft Entra to sygnatura dostępu współdzielonego delegowania użytkownika. Klient, który tworzy sygnaturę dostępu współdzielonego delegowania użytkownika, musi mieć przypisaną rolę RBAC platformy Azure obejmującą akcję Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey . Aby dowiedzieć się więcej, zobacz Tworzenie sygnatury dostępu współdzielonego delegowania użytkownika.
  • Przy użyciu klucza konta magazynu. Sygnatura dostępu współdzielonego usługi i sygnatura dostępu współdzielonego konta są podpisane przy użyciu klucza konta magazynu. Klient tworzący sygnaturę dostępu współdzielonego usługi musi mieć bezpośredni dostęp do klucza konta lub mieć przypisane uprawnienie Microsoft.Storage/storageAccounts/listkeys/action . Aby dowiedzieć się więcej, zobacz Tworzenie sygnatury dostępu współdzielonego usługi lub Tworzenie sygnatury dostępu współdzielonego konta.

Uwaga

Sygnatura dostępu współdzielonego delegowania użytkownika zapewnia doskonałe zabezpieczenia sygnatury dostępu współdzielonego podpisanej przy użyciu klucza konta magazynu. Firma Microsoft zaleca używanie sygnatury dostępu współdzielonego delegowania użytkowników, jeśli jest to możliwe. Aby uzyskać więcej informacji, zobacz Udzielanie ograniczonego dostępu do danych za pomocą sygnatur dostępu współdzielonego (SAS).

W tym artykule pokazano, jak za pomocą klucza konta magazynu utworzyć sygnaturę dostępu współdzielonego konta z biblioteką klienta usługi Azure Storage dla platformy .NET.

Informacje o sygnaturze dostępu współdzielonego konta

Sygnatura dostępu współdzielonego konta jest tworzona na poziomie konta magazynu. Tworząc sygnaturę dostępu współdzielonego konta, możesz wykonywać następujące czynności:

  • Delegowanie dostępu do operacji na poziomie usługi, które nie są obecnie dostępne w ramach sygnatury dostępu współdzielonego specyficznej dla usługi, takich jak Pobieranie właściwości usługi Blob Service, Ustawianie właściwości usługi Blob Service i Pobieranie statystyk usługi Blob Service.
  • Delegowanie dostępu do więcej niż jednej usługi na koncie magazynu jednocześnie. Na przykład można delegować dostęp do zasobów zarówno w usłudze Azure Blob Storage, jak i w usłudze Azure Files przy użyciu sygnatury dostępu współdzielonego konta.

Przechowywane zasady dostępu nie są obsługiwane dla sygnatury dostępu współdzielonego konta.

Tworzenie sygnatury dostępu współdzielonego konta

Sygnatura dostępu współdzielonego konta jest podpisana przy użyciu klucza dostępu do konta. Możesz użyć klasy StorageSharedKeyCredential , aby utworzyć poświadczenia używane do podpisywania sygnatury dostępu współdzielonego.

Poniższy przykład kodu pokazuje, jak utworzyć nowy obiekt AccountSasBuilder i wywołać metodę ToSasQueryParameters , aby uzyskać ciąg tokenu SAS konta.

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;
}

Używanie sygnatury dostępu współdzielonego konta z klienta

Aby uzyskać dostęp do interfejsów API na poziomie usługi Blob przy użyciu sygnatury dostępu współdzielonego konta, utwórz obiekt BlobServiceClient przy użyciu sygnatury dostępu współdzielonego konta i punktu końcowego usługi Blob Storage dla konta magazynu.

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}"));

Zasoby

Aby dowiedzieć się więcej na temat tworzenia sygnatury dostępu współdzielonego konta przy użyciu biblioteki klienta usługi Azure Blob Storage dla platformy .NET, zobacz następujące zasoby.

Zasoby biblioteki klienta

Zobacz też