Udostępnij za pośrednictwem


Tworzenie sygnatury dostępu współdzielonego usługi dla obiektu blob przy użyciu języka 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 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 usługi dla obiektu blob z biblioteką klienta usługi Blob Storage dla języka Java.

Informacje o sygnaturze dostępu współdzielonego usługi

Sygnatura dostępu współdzielonego usługi 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ć zapisanych zasad dostępu, aby zdefiniować uprawnienia i czas trwania sygnatury dostępu współdzielonego. Jeśli podano nazwę istniejących przechowywanych zasad dostępu, te zasady są skojarzone z sygnaturą dostępu współdzielonego. Aby dowiedzieć się więcej na temat przechowywanych zasad dostępu, zobacz Definiowanie przechowywanych zasad dostępu. Jeśli nie podano żadnych przechowywanych zasad dostępu, przykłady kodu w tym artykule pokazują, jak zdefiniować uprawnienia i czas trwania sygnatury dostępu współdzielonego.

Tworzenie sygnatury dostępu współdzielonego usługi dla obiektu blob

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

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

W poniższym przykładzie kodu pokazano, jak utworzyć sygnaturę dostępu współdzielonego usługi z uprawnieniami do odczytu dla zasobu obiektu blob:

public String createServiceSASBlob(BlobClient blobClient) {
    // 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
    BlobSasPermission sasPermission = new BlobSasPermission()
            .setReadPermission(true);

    BlobServiceSasSignatureValues sasSignatureValues = new BlobServiceSasSignatureValues(expiryTime, sasPermission)
            .setStartTime(OffsetDateTime.now().minusMinutes(5));

    String sasToken = blobClient.generateSas(sasSignatureValues);
    return sasToken;
}

Używanie sygnatury dostępu współdzielonego usługi do autoryzowania obiektu klienta

Poniższy przykład kodu pokazuje, jak użyć sygnatury dostępu współdzielonego usługi utworzonej we wcześniejszym przykładzie w celu autoryzowania obiektu BlobClient . Ten obiekt klienta może służyć do wykonywania operacji na zasobie obiektu blob na podstawie uprawnień przyznanych przez sygnaturę dostępu współdzielonego.

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 BlobClient :

// Create a SAS token
BlobClient blobClient = blobServiceClient
        .getBlobContainerClient("sample-container")
        .getBlobClient("sample-blob.txt");
String sasToken = createServiceSASBlob(blobClient);

// Create a new BlobClient using the SAS token
BlobClient sasBlobClient = new BlobClientBuilder()
        .endpoint(blobClient.getBlobUrl())
        .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.

Zasoby biblioteki klienta

Zobacz też