Udostępnij za pomocą


Tworzenie usługi SAS dla kontenera lub obiektu blob w języku Java

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 SAS jest podpisana kluczem. 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 token delegowania 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 delegowania użytkownika.
  • Przy użyciu klucza konta magazynu. Sygnatury SAS dla usługi i konta są podpisane przy użyciu klucza konta magazynowego. 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 usługowego SAS dla kontenera lub obiektu blob, korzystając z biblioteki Blob Storage dla Java.

Informacje o usłudze SAS

Sygnatura SAS 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 usługi.

Możesz również użyć przechowywanych zasad dostępu, aby zdefiniować uprawnienia i czas trwania sygnatury dostępu współdzielonego. Jeśli podano nazwę istniejącej przechowywanej zasady dostępu, ta zasada jest skojarzona z SAS. Aby dowiedzieć się więcej na temat przechowywanych zasad dostępu, zobacz Definiowanie przechowywanych zasad dostępu. Jeśli nie podano żadnej przechowywanej polityki dostępu, przykłady kodu w tym artykule pokazują, jak zdefiniować uprawnienia i czas trwania tokenu dostępu współdzielonego.

Utwórz sygnaturę dostępu współdzielonego usługi

Możesz stworzyć SAS usługi dla kontenera lub obiektu blob na podstawie potrzeb aplikacji.

Sygnaturę dostępu współdzielonego usługi można utworzyć, aby delegować ograniczony dostęp do zasobu kontenera przy użyciu następującej metody:

Wartości sygnatury dostępu współdzielonego, takie jak czas wygaśnięcia i podpisane uprawnienia, są przekazywane do metody w ramach BlobServiceSasSignatureValues. Uprawnienia są określane jako wystąpienie BlobContainerSasPermission.

Poniższy przykład kodu pokazuje, jak utworzyć wspólny podpis usługi (SAS) z uprawnieniami do odczytu dla zasobu kontenera:

public String createServiceSASContainer(BlobContainerClient containerClient) {
    // 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.generateSas(sasSignatureValues);
    return sasToken;
}

Użyj sygnatury SAS usługi do autoryzacji obiektu klienta.

Sygnatura dostępu współdzielonego usługi umożliwia autoryzowanie obiektu klienta do wykonywania operacji na kontenerze lub obiekcie blob na podstawie uprawnień przyznanych przez sygnaturę dostępu współdzielonego.

W poniższych przykładach kodu pokazano, jak autoryzować obiekt BlobContainerClient przy użyciu sygnatury dostępu współdzielonego usługi. Ten obiekt klienta może służyć do przeprowadzania operacji na zasobie kontenera na podstawie uprawnień przyznanych przez SAS.

Najpierw utwórz obiekt BlobServiceClient podpisany przy użyciu klucza dostępu do konta:

String accountName = "<account-name>";
String accountKey = "<account-key>";
StorageSharedKeyCredential credential = new StorageSharedKeyCredential(accountName, accountKey);
        
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
        .endpoint(String.format("https://%s.blob.core.windows.net/", accountName))
        .credential(credential)
        .buildClient();

Następnie wygeneruj sygnaturę dostępu współdzielonego usługi, jak pokazano we wcześniejszym przykładzie, i użyj sygnatury dostępu współdzielonego , aby autoryzować obiekt BlobContainerClient :

// Create a SAS token
BlobContainerClient containerClient = blobServiceClient
        .getBlobContainerClient("sample-container");
String sasToken = createServiceSASContainer(containerClient);

// Create a new BlobContainerClient using the SAS token
BlobContainerClient sasContainerClient = new BlobContainerClientBuilder()
        .endpoint(containerClient.getBlobContainerUrl())
        .sasToken(sasToken)
        .buildClient();

Zasoby

Aby dowiedzieć się więcej na temat korzystania z biblioteki klienta usługi Azure Blob Storage dla języka Java, zobacz następujące zasoby.

Przykłady kodu

Zasoby biblioteki klienta

Zobacz też