Sdílet prostřednictvím


Vytvoření SAS služby pro kontejner nebo objekt blob pomocí Javy

Sdílený přístupový podpis (SAS) umožňuje poskytnout omezený přístup ke kontejnerům a blobům ve vašem účtu úložiště. 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. Klientovi, který vytváří SAS pro delegování uživatele, musí být přiřazena role 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 delegování uživatele nabízí vyšší úroveň zabezpečení než SAS podepsaný klíčem účtu úložiště. Microsoft doporučuje používat delegování uživatele SAS, 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 služby pro kontejner nebo objekt blob s klientskou knihovnou Blob Storage pro Javu.

Informace o službě SAS

Sdílený přístupový podpis služby je podepsaný přístupovým klíčem účtu. Pomocí třídy StorageSharedKeyCredential můžete vytvořit přihlašovací údaje, které se používají k podepsání přístupové služby SAS.

K definování oprávnění a doby trvání SAS můžete také použít uložené zásady přístupu. Pokud je zadaný název existující uložené zásady přístupu, je tato zásada přidružená k SAS. Další informace o uložených zásadách přístupu najdete v tématu Definování uložených zásad přístupu. Pokud nejsou k dispozici žádné uložené zásady přístupu, příklady kódu v tomto článku ukazují, jak definovat oprávnění a dobu trvání pro SAS.

Vytvoření SAS služby

Službu SAS pro kontejner nebo objekt blob, můžete vytvořit na základě potřeb vaší aplikace.

Můžete vytvořit službu SAS pro delegování omezeného přístupu k prostředku kontejneru pomocí následující metody.

Hodnoty podpisu SAS, například čas vypršení platnosti a podepsaná oprávnění, se předávají metodě jako součást instance BlobServiceSasSignatureValues . Oprávnění jsou specifikována jako instance BlobContainerSasPermission.

Následující příklad kódu ukazuje, jak vytvořit SAS služby s oprávněními ke čtení pro prostředek kontejneru:

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;
}

Použijte sdílený přístupový podpis služby k autorizaci klientského objektu

SAS služby můžete použít k autorizaci klientského objektu pro provádění operací s kontejnerem nebo blobem na základě oprávnění udělených SAS.

Následující příklady kódu ukazují, jak pomocí SAS služby autorizovat objekt BlobContainerClient . Tento objekt klienta lze použít k provádění operací s prostředkem kontejneru 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();

Potom vygenerujte SAS služby, jak je znázorněno v předchozím příkladu, a použijte SAS k autorizaci objektu 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();

Zdroje informací

Další informace o používání klientské knihovny služby Azure Blob Storage pro Javu najdete v následujících zdrojích informací.

Ukázky kódu

Prostředky klientské knihovny

Viz také