Sdílet prostřednictvím


Vytvořte účet SAS pomocí Javy

Sdílený přístupový podpis (SAS) umožňuje udělit omezený přístup ke kontejnerům a blobům ve vašem úložišti. Při vytváření sdíleného přístupového podpisu (SAS) zadáte jeho omezení, včetně určení, ke kterým prostředkům Azure Storage má klient povolený přístup, jaká oprávnění k těmto prostředkům má, a jak dlouho je tento podpis platný.

Každý SAS je podepsaný klíčem. Smlouvu typu SAS můžete podepsat dvěma způsoby:

  • S klíčem vytvořeným pomocí přihlašovacích údajů Microsoft Entra. SAS podepsaný pomocí přihlašovacích údajů Microsoft Entra je uživatelsky delegované SAS. Klient, který vytvoří SAS pro delegování uživatele, musí mít přiřazenu roli Azure RBAC, která zahrnuje akci Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Další informace najdete v tématu Vytvoření SAS pro delegování uživatele.
  • S klíčem účtu úložiště. SAS služby i SAS účtu jsou podepsané klíčem účtu úložiště. Klient, který vytvoří SAS služby, musí mít buď přímý přístup k klíči účtu, nebo musí mít přiřazené oprávnění Microsoft.Storage/storageAccounts/listkeys/action . Další informace najdete v tématu Vytvoření sdíleného přístupového podpisu služby nebo vytvoření sdíleného přístupového podpisu účtu.

Poznámka:

SAS s delegováním uživatele nabízí lepší zabezpečení než SAS podepsaný klíčem účtu úložiště. Microsoft doporučuje používat SAS s delegováním uživatele, pokud je to možné. Další informace najdete v tématu Udělení omezeného přístupu k datům pomocí sdílených přístupových podpisů (SAS).

Tento článek ukazuje, jak pomocí klíče účtu úložiště vytvořit SAS účtu s klientskou knihovnou Azure Storage pro Javu.

O SAS účtu

SAS účtu se vytvoří na úrovni úložiště a je podepsána pomocí přístupového klíče účtu. Vytvořením účtu SAS můžete:

Zásady uloženého přístupu nejsou u sdíleného přístupového podpisu účtu podporované.

Nastavení projektu

Pokud chcete pracovat s příklady kódu v tomto článku, přidejte následující direktivy importu:

import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.sas.*;
import com.azure.storage.common.sas.AccountSasPermission;
import com.azure.storage.common.sas.AccountSasResourceType;
import com.azure.storage.common.sas.AccountSasService;
import com.azure.storage.common.sas.AccountSasSignatureValues;

Vytvořit účet SAS

Účet SAS můžete vytvořit pro delegování omezeného přístupu k prostředkům účtu úložiště následujícím způsobem:

Ke konfiguraci hodnot podpisu pro SAS účtu použijte následující pomocné třídy:

  • AccountSasPermission: Představuje oprávnění povolená SAS. V našem příkladu nastavíme oprávnění ke čtení na true.
  • AccountSasService: Představuje služby přístupné sas. V našem příkladu povolíme přístup ke službě Blob Service.
  • AccountSasResourceType: Představuje typy prostředků, k nimž má přístup SAS. V našem příkladu povolíme přístup k rozhraním API na úrovni služeb.

Jakmile jsou pomocné třídy nakonfigurované, můžete inicializovat parametry sas s instancí AccountSasSignatureValues .

Následující příklad kódu ukazuje, jak nakonfigurovat parametry SAS a volat metodu generateAccountSas pro získání SAS účtu:

public String createAccountSAS(BlobServiceClient blobServiceClient) {
    // Configure the SAS parameters
    OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
    AccountSasPermission accountSasPermission = new AccountSasPermission()
            .setReadPermission(true);
    AccountSasService services = new AccountSasService()
            .setBlobAccess(true);
    AccountSasResourceType resourceTypes = new AccountSasResourceType()
            .setService(true);

    // Generate the account SAS
    AccountSasSignatureValues accountSasValues = new AccountSasSignatureValues(
        expiryTime,
        accountSasPermission,
        services,
        resourceTypes);
    String sasToken = blobServiceClient.generateAccountSas(accountSasValues);

    return sasToken;
}

Použijte přístupový podpis účtu (SAS) z klienta

Následující příklad kódu ukazuje použití SAS účtu vytvořeného v předchozím příkladu k autorizaci objektu BlobServiceClient . Tento objekt klienta se pak dá použít pro přístup k rozhraním API na úrovni služby na základě oprávnění udělených SAS.

Nejprve vytvořte objekt BlobServiceClient podepsaný přístupovým klíčem účtu:

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();

Pak vygenerujte SAS účtu, jak je znázorněno v předchozím příkladu, a použijte SAS k autorizaci objektu BlobServiceClient :

// Create a SAS token
String sasToken = createAccountSAS(blobServiceClient);

// Create a new BlobServiceClient using the SAS token
BlobServiceClient sasServiceClient = new BlobServiceClientBuilder()
        .endpoint(blobServiceClient.getAccountUrl())
        .sasToken(sasToken)
        .buildClient();

Sas účtu můžete také použít k autorizaci a práci s objektem BlobContainerClient nebo objektem BlobClient, pokud mají tyto typy prostředků přístup jako součást hodnot podpisu.

Prostředky

Další informace o vytvoření SAS účtu pomocí klientské knihovny Azure Blob Storage pro Javu najdete v následujících zdrojích informací.

Ukázky kódu

Prostředky klientské knihovny

Viz také