Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Sygnatura dostępu współdzielonego (SAS) umożliwia udzielanie ograniczonego dostępu do kontenerów i blobów w koncie magazynowym. 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żdy SAS (sygnatura dostępu współdzielonego) jest podpisany przy użyciu klucza. Sygnaturę współdzielonego dostępu 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ę delegacji użytkownika SAS, musi mieć przypisaną rolę RBAC platformy Azure, która obejmuje akcję Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Aby dowiedzieć się więcej, zobacz Tworzenie sygnatury dostępu współdzielonego dla delegowanego użytkownika.
- Z kluczem konta magazynowania. Podpisy usługi SAS i konta SAS są podpisane przy użyciu klucza konta magazynu. Klient, który tworzy usługową sygnaturę dostępu SAS, musi mieć bezpośredni dostęp do klucza konta lub mieć przypisane do uprawnienie Microsoft.Storage/storageAccounts/listkeys/action. Aby dowiedzieć się więcej, zobacz Tworzenie sygnatury dostępu współdzielonego dla usługi lub Tworzenie sygnatury dostępu współdzielonego dla konta.
Uwaga
Delegacja dostępu użytkownika w SAS oferuje lepsze zabezpieczenia niż SAS podpisany kluczem konta magazynu. Firma Microsoft zaleca używanie sygnatury dostępu współdzielonego z delegowaniem użytkowników, jeśli 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 używać poświadczeń Microsoft Entra do tworzenia sygnatury dostępu współdzielonego użytkownika dla kontenera lub obiektu blob przy użyciu biblioteki klienta Azure Storage dla platformy .NET.
Informacje o delegowaniu użytkownika za pomocą sygnatury dostępu współdzielonego
Token SAS na potrzeby dostępu do kontenera lub obiektu blob może być zabezpieczony za pomocą poświadczeń Microsoft Entra lub klucza konta. Sygnatura dostępu współdzielonego zabezpieczona przy użyciu poświadczeń entra firmy Microsoft jest nazywana sygnaturą dostępu współdzielonego delegowania użytkownika, ponieważ token OAuth 2.0 używany do podpisywania sygnatury dostępu współdzielonego jest żądany w imieniu użytkownika.
Firma Microsoft zaleca korzystanie z poświadczeń firmy Microsoft, jeśli jest to możliwe jako najlepsze rozwiązanie w zakresie zabezpieczeń, zamiast używać klucza konta, co może być łatwiejsze w przypadku naruszenia zabezpieczeń. Jeśli projekt aplikacji wymaga sygnatur dostępu współdzielonego, użyj poświadczeń Microsoft Entra, aby utworzyć delegowaną sygnaturę dostępu dla użytkowników, co zapewnia lepsze zabezpieczenia. Aby uzyskać więcej informacji na temat sygnatury dostępu współdzielonego dla delegowania użytkownika, zobacz Tworzenie sygnatury dostępu współdzielonego dla delegowania użytkownika.
Uwaga
Każdy klient, który posiada prawidłową sygnaturę dostępu współdzielonego, może uzyskać dostęp do danych w Twoim koncie magazynowym zgodnie z uprawnieniami nadanymi przez tę sygnaturę. Ważne jest, aby chronić sygnaturę dostępu współdzielonego przed złośliwym lub niezamierzonym użyciem. Działaj według własnego uznania w dystrybucji SAS i przygotuj plan unieważnienia naruszonego SAS.
Aby uzyskać więcej informacji na temat sygnatur dostępu współdzielonego, zobacz Udzielanie ograniczonego dostępu do zasobów usługi Azure Storage przy użyciu sygnatur dostępu współdzielonego (SAS).
Przypisywanie ról platformy Azure w celu uzyskania dostępu do danych
Gdy podmiot zabezpieczeń firmy Microsoft Entra próbuje uzyskać dostęp do danych, podmiot zabezpieczeń musi mieć uprawnienia do zasobu. Niezależnie od tego, czy podmiot zabezpieczeń jest tożsamością zarządzaną na platformie Azure, czy kontem użytkownika Microsoft Entra uruchamiającym kod w środowisku deweloperskim, podmiot zabezpieczeń musi mieć przypisaną rolę platformy Azure, która przyznaje dostęp do danych. Aby uzyskać informacje na temat przypisywania uprawnień za pomocą Azure RBAC, zobacz Przydzielanie roli Azure do uzyskiwania dostępu do danych obiektów blob.
konfigurowanie projektu
Aby pracować z przykładami kodu w tym artykule, wykonaj następujące kroki, aby skonfigurować projekt.
Instalowanie pakietów
Zainstaluj następujące pakiety:
dotnet add package Azure.Identity
dotnet add package Azure.Storage.Blobs
Konfigurowanie kodu aplikacji
Dodaj następujące using dyrektywy:
using Azure;
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
using Azure.Storage.Sas;
Uzyskiwanie uwierzytelnionego poświadczenia tokenu
Aby uzyskać poświadczenia tokenu, którego kod może używać do autoryzacji żądań do Blob Storage, utwórz wystąpienie klasy DefaultAzureCredential. Aby uzyskać więcej informacji na temat używania klasy DefaultAzureCredential do autoryzowania tożsamości zarządzanej w celu uzyskania dostępu do usługi Blob Storage, zobacz Biblioteka klienta tożsamości platformy Azure dla platformy .NET.
Poniższy fragment kodu pokazuje, jak uzyskać poświadczenia autoryzowanego tokenu i użyć go do utworzenia klienta usługi dla Blob storage.
// Construct the blob endpoint from the account name.
string endpoint = $"https://{accountName}.blob.core.windows.net";
// Create a blob service client object using DefaultAzureCredential
BlobServiceClient blobServiceClient = new BlobServiceClient(
new Uri(endpoint),
new DefaultAzureCredential());
Aby dowiedzieć się więcej na temat autoryzowania dostępu do usługi Blob Storage z aplikacji przy użyciu zestawu .NET SDK, zobacz Jak uwierzytelniać aplikacje platformy .NET za pomocą usług platformy Azure.
Pobieranie klucza delegowania użytkownika
Każdy SAS jest podpisany przy użyciu klucza. Aby utworzyć SAS dla delegowania użytkownika, należy najpierw zażądać klucza delegowania użytkownika, który jest następnie używany do jego podpisania. Klucz delegowania użytkownika jest analogiczny do klucza konta używanego do podpisywania usługi SAS (Shared Access Signature) lub konta SAS, z tą różnicą, że opiera się na Twoich poświadczeniach Microsoft Entra. Gdy klient żąda klucza delegowania użytkownika przy użyciu tokenu OAuth 2.0, usługa Blob Storage zwraca klucz delegowania użytkownika w imieniu użytkownika.
Po utworzeniu klucza delegowania użytkownika możesz użyć tego klucza, aby utworzyć dowolną liczbę sygnatur współdzielonego dostępu do delegowania użytkownika w okresie istnienia klucza. Klucz delegowania użytkownika jest niezależny od tokenu OAuth 2.0 używanego do jego uzyskania, dlatego token nie musi być odnawiany, jeśli klucz jest nadal prawidłowy. Możesz określić czas, przez który klucz pozostaje ważny, maksymalnie siedem dni.
Użyj jednej z następujących metod, aby zażądać klucza delegowania użytkownika:
Poniższy przykład kodu pokazuje, jak zażądać klucza delegowania użytkownika:
public static async Task<UserDelegationKey> RequestUserDelegationKey(
BlobServiceClient blobServiceClient)
{
// Get a user delegation key for the Blob service that's valid for 1 day
UserDelegationKey userDelegationKey =
await blobServiceClient.GetUserDelegationKeyAsync(
DateTimeOffset.UtcNow,
DateTimeOffset.UtcNow.AddDays(1));
return userDelegationKey;
}
Utwórz sygnaturę dostępu współdzielonego delegacji użytkowników
Sygnaturę dostępu wspólnego dla delegacji użytkownika można utworzyć dla kontenera lub obiektu blob, zależnie od potrzeb aplikacji.
Po uzyskaniu klucza delegowania użytkownika można utworzyć sygnaturę dostępu współdzielonego (SAS) użytkownika, aby delegować ograniczony dostęp do kontenera. Na poniższym przykładzie kodu pokazano, jak utworzyć sygnaturę dostępu współdzielonego SAS dla kontenera.
public static async Task<Uri> CreateUserDelegationSASContainer(
BlobContainerClient containerClient,
UserDelegationKey userDelegationKey)
{
// Create a SAS token for the container resource that's also valid for 1 day
BlobSasBuilder sasBuilder = new BlobSasBuilder()
{
BlobContainerName = containerClient.Name,
Resource = "c",
StartsOn = DateTimeOffset.UtcNow,
ExpiresOn = DateTimeOffset.UtcNow.AddDays(1)
};
// Specify the necessary permissions
sasBuilder.SetPermissions(BlobSasPermissions.Read | BlobSasPermissions.Write);
// Add the SAS token to the blob URI
BlobUriBuilder uriBuilder = new BlobUriBuilder(containerClient.Uri)
{
// Specify the user delegation key
Sas = sasBuilder.ToSasQueryParameters(
userDelegationKey,
containerClient.GetParentBlobServiceClient().AccountName)
};
return uriBuilder.ToUri();
}
Używanie sygnatury dostępu współdzielonego delegowania użytkownika do autoryzowania obiektu klienta
Delegowany SAS użytkownika umożliwia autoryzację obiektu klienta do wykonywania operacji na kontenerze lub obiekcie blob na podstawie uprawnień przyznanych przez SAS.
W poniższym przykładzie kodu pokazano, jak autoryzować obiekt BlobContainerClient przy użyciu sygnatury dostępu współdzielonego delegowania użytkownika. Ten obiekt klienta może służyć do wykonywania operacji na zasobie kontenera na podstawie uprawnień przyznanych przez sygnaturę dostępu współdzielonego.
// Create a Uri object with a user delegation SAS appended
BlobContainerClient containerClient = blobServiceClient
.GetBlobContainerClient("sample-container");
Uri containerSASURI = await CreateUserDelegationSASContainer(containerClient, userDelegationKey);
// Create a container client object with SAS authorization
BlobContainerClient containerClientSAS = new BlobContainerClient(containerSASURI);
Zasoby
Aby dowiedzieć się więcej o tworzeniu sygnatury delegowanej dostępu współdzielonego użytkownika przy użyciu biblioteki klienta Azure Blob Storage dla platformy .NET, zapoznaj się z następującymi zasobami.
Przykłady kodu
Operacje interfejsu API REST
Zestaw Azure SDK dla platformy .NET zawiera biblioteki, które są oparte na interfejsie API REST platformy Azure, co umożliwia interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów platformy .NET. Metoda biblioteki klienta na potrzeby pobierania klucza delegowania użytkownika używa następującej operacji interfejsu API REST:
- Uzyskiwanie klucza delegowania użytkownika (interfejs API REST)
Zasoby biblioteki klienta
Zobacz też
- Udzielanie ograniczonego dostępu do zasobów usługi Azure Storage za pomocą sygnatur dostępu współdzielonego (SAS)
- Utwórz delegowaną sygnaturę dostępu współdzielonego użytkownika
Powiązana zawartość
- Ten artykuł jest częścią przewodnika dla deweloperów usługi Blob Storage dla platformy .NET. Aby dowiedzieć się więcej, zobacz pełną listę artykułów z przewodnika dla deweloperów w temacie Tworzenie aplikacji platformy .NET.