Notatka
Dostęp do tej strony wymaga autoryzacji. Może 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 przyznanie ograniczonego dostępu do kontenerów i obiektów blob w ramach konta 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żdy SAS jest podpisany kluczem. Sygnaturę dostępu współdzielonego (SAS) można podpisać na dwa sposoby:
- Za pomocą klucza utworzonego przy użyciu poświadczeń firmy Microsoft Entra. SAS podpisany przy użyciu poświadczeń Microsoft Entra to SAS delegowania użytkownika. Klient, który tworzy sygnaturę SAS delegowania użytkownika, musi mieć przypisaną rolę RBAC platformy Azure, która obejmuje akcję Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Aby dowiedzieć się więcej, zobacz Tworzenie SAS delegowania użytkownika.
- Przy użyciu klucza konta magazynu. Zarówno sygnatura dostępu współdzielonego usługi, jak i sygnatura dostępu współdzielonego konta są podpisywane przy użyciu klucza konta magazynującego. Klient, który tworzy sygnaturę dostępu współdzielonego (SAS) dla usługi, musi mieć bezpośredni dostęp do klucza konta lub mieć przypisane uprawnienie do Microsoft.Storage/storageAccounts/listkeys/action. Aby dowiedzieć się więcej, zobacz Utwórz sygnaturę dostępu współdzielonego usługi lub Utwórz sygnaturę dostępu współdzielonego konta.
Uwaga
Sygnatura dostępu współdzielonego delegowana przez użytkownika zapewnia wyższy poziom bezpieczeństwa niż sygnatura dostępu współdzielonego podpisana przy użyciu klucza konta magazynu. Firma Microsoft zaleca użycie SAS delegowania użytkownika, 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 używać poświadczeń Microsoft Entra do tworzenia sygnatury dostępu współdzielonego (SAS) delegowanej przez użytkownika dla kontenera lub obiektu blob za pomocą biblioteki klienta usługi Azure Storage dla języka Java.
Informacje o SAS delegowania użytkownika
Token SAS służący do uzyskiwania dostępu do kontenera lub obiektu blob może być zabezpieczony przy użyciu poświadczeń Microsoft Entra lub klucza konta. Sygnatura dostępu współdzielonego (SAS) zabezpieczona przy użyciu poświadczeń Microsoft Entra nazywa się SAS delegowanym przez użytkownika, ponieważ token OAuth 2.0 używany do podpisania tego SAS jest uzyskiwany 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 sygnatury dostępu współdzielonego (SAS), użyj poświadczeń Microsoft Entra, aby utworzyć sygnaturę SAS delegowania użytkownika w celu zwiększenia poziomu zabezpieczeń. Aby uzyskać więcej informacji na temat sygnatury dostępu współdzielonego delegowania użytkownika, zobacz Tworzenie sygnatury dostępu współdzielonego delegowania użytkownika.
Uwaga
Każdy klient, który ma prawidłowy token SAS, może uzyskiwać dostęp do danych na koncie magazynu w zakresie dozwolonym przez ten token SAS. Ważne jest chronienie sygnatury dostępu współdzielonego przed złośliwym lub niezamierzonym użyciem. Stosuj rozsądek przy dystrybucji SAS i miej przygotowany plan na cofnięcie skompromitowanego SAS. Aby zapobiec niezamierzonemu użyciu, używaj delegowanego przez użytkownika identyfikatora SAS, który powiązuje token SAS z zamierzonym użytkownikiem końcowym i nie może zostać użyty przez nikogo innego.
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 zarządzaną tożsamością w usłudze Azure, czy kontem użytkownika Microsoft Entra uruchamiającym kod w środowisku programistycznym, podmiot zabezpieczeń musi mieć przypisaną rolę platformy Azure, która zapewnia dostęp do danych. Aby uzyskać informacje o przypisywaniu uprawnień przy użyciu mechanizmu RBAC platformy Azure, zobacz Przypisywanie roli platformy Azure na potrzeby dostępu do danych obiektów blob.
konfigurowanie projektu
Aby pracować z przykładami kodu w tym artykule, dodaj następujące dyrektywy importu:
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.sas.*;
Uzyskiwanie uwierzytelnionego poświadczenia tokenu
Aby uzyskać poświadczenie tokenu, którego kod może używać do autoryzowania żądań do usługi 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 języka Java.
Poniższy fragment kodu pokazuje, jak uzyskać poświadczenie tokenu uwierzytelniającego i użyć go do utworzenia klienta usługi Blob Storage:
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
Aby dowiedzieć się więcej na temat autoryzowania dostępu do usługi Blob Storage z aplikacji przy użyciu zestawu JAVA SDK, zobacz Uwierzytelnianie platformy Azure przy użyciu języka Java i tożsamości platformy Azure.
Pobieranie klucza delegowania użytkownika
Każdy SAS jest podpisywany kluczem. Aby utworzyć sygnaturę dostępu współdzielonego z delegowaniem użytkownika, należy najpierw zażądać klucza delegowania użytkownika, który następnie służy do podpisania sygnatury SAS. Klucz delegowania użytkownika jest analogiczny do klucza konta używanego do podpisywania sygnatury dostępu współdzielonego usługi lub sygnatury dostępu współdzielonego konta, z tą różnicą, że opiera się na poświadczeniach firmy 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.
Gdy masz już klucz delegowania użytkownika, możesz użyć go do utworzenia dowolnej liczby sygnatur dostępu współdzielonego delegowania użytkownika w okresie ważności 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 UserDelegationKey requestUserDelegationKey(BlobServiceClient blobServiceClient) {
// Request a user delegation key that's valid for 1 day, as an example
UserDelegationKey userDelegationKey = blobServiceClient.getUserDelegationKey(
OffsetDateTime.now().minusMinutes(5),
OffsetDateTime.now().plusDays(1));
return userDelegationKey;
}
Utwórz SAS delegacji użytkownika
Możesz utworzyć sygnaturę dostępu współdzielonego (SAS) delegowaną przez użytkownika dla kontenera lub obiektu blob, w zależności od potrzeb aplikacji.
Po uzyskaniu klucza delegowania użytkownika możesz utworzyć sygnaturę SAS delegowaną przez użytkownika. Możesz utworzyć sygnaturę SAS delegowania użytkownika, aby przyznać ograniczony dostęp do zasobu kontenera za pomocą następującej metody z wystąpienia BlobContainerClient:
Klucz delegowania użytkownika do podpisania SAS jest przekazywany do tej metody wraz z określonymi wartościami elementu BlobServiceSasSignatureValues. Uprawnienia są określane za pomocą wystąpienia BlobContainerSasPermission.
Poniższy przykład kodu pokazuje, jak utworzyć sygnaturę dostępu współdzielonego z delegowaniem użytkownika dla kontenera:
public String createUserDelegationSASContainer(BlobContainerClient containerClient, UserDelegationKey userDelegationKey) {
// Create a SAS token that's valid for 1 day, as an example
OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
// Assign read permissions to the SAS token
BlobContainerSasPermission sasPermission = new BlobContainerSasPermission()
.setReadPermission(true);
BlobServiceSasSignatureValues sasSignatureValues = new BlobServiceSasSignatureValues(expiryTime, sasPermission)
.setStartTime(OffsetDateTime.now().minusMinutes(5));
String sasToken = containerClient.generateUserDelegationSas(sasSignatureValues, userDelegationKey);
return sasToken;
}
Użyj sygnatury dostępu współdzielonego delegowanej przez użytkownika do autoryzowania obiektu klienckiego
Za pomocą sygnatury dostępu współdzielonego (SAS) delegowanej przez użytkownika można autoryzować obiekt klienta do wykonywania operacji na kontenerze lub obiekcie blob na podstawie uprawnień przyznanych przez tę sygnaturę SAS.
W poniższym przykładzie kodu pokazano, jak użyć sygnatury dostępu współdzielonego (SAS) delegowania użytkownika utworzonej we wcześniejszym przykładzie do autoryzowania obiektu BlobContainerClient. Ten obiekt klienta może służyć do wykonywania operacji na zasobie kontenera zgodnie z uprawnieniami nadanymi przez sygnaturę dostępu współdzielonego (SAS).
// Create a SAS token for a container
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient("sample-container");
String sasToken = createUserDelegationSASContainer(containerClient, userDelegationKey);
// Create a new BlobContainerClient using the SAS token
BlobContainerClient sasContainerClient = new BlobContainerClientBuilder()
.endpoint(containerClient.getBlobContainerUrl())
.sasToken(sasToken)
.buildClient();
Zasoby
Aby dowiedzieć się więcej o tworzeniu sygnatury dostępu współdzielonego (SAS) delegowanej przez użytkownika za pomocą biblioteki klienta usługi Azure Blob Storage dla języka Java, zobacz następujące zasoby.
Przykłady kodu
Operacje interfejsu API REST
Zestaw Azure SDK dla języka Java zawiera biblioteki, które bazują na interfejsie API REST platformy Azure, co umożliwia interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów języka Java. 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 sygnaturę dostępu współdzielonego (SAS) delegowaną przez użytkownika
Powiązana zawartość
- Ten artykuł jest częścią przewodnika dla deweloperów usługi Blob Storage dla języka Java. Aby dowiedzieć się więcej, zobacz pełną listę artykułów z przewodnika dla deweloperów w temacie Tworzenie aplikacji Java.