Delen via


Een account-SAS maken met Java

Met een Shared Access Signature (SAS) kunt u beperkte toegang verlenen tot containers en blobs in uw opslagaccount. Wanneer u een SAS maakt, geeft u de beperkingen op, waaronder welke Azure Storage-resources een client mag openen, welke machtigingen ze hebben voor deze resources en hoe lang de SAS geldig is.

Elke SAS is ondertekend met een sleutel. U kunt een SAS op twee manieren ondertekenen:

  • Met een sleutel die is gemaakt met behulp van Microsoft Entra-referenties. Een SAS die is ondertekend met Microsoft Entra-referenties is een SAS voor gebruikersdelegatie . Aan een client die een SAS voor gebruikersdelegering maakt, moet een Azure RBAC-rol worden toegewezen die de actie Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey bevat. Zie Een SAS voor gebruikersdelegatie maken voor meer informatie.
  • Met de sleutel van het opslagaccount. Zowel een service-SAS als een account-SAS zijn ondertekend met de sleutel van het opslagaccount. De client die een service-SAS maakt, moet directe toegang hebben tot de accountsleutel of de machtiging Microsoft.Storage/storageAccounts/listkeys/action toewijzen. Zie Een service-SAS maken of Een account-SAS maken voor meer informatie.

Notitie

Een SAS voor gebruikersdelegering biedt superieure beveiliging voor een SAS die is ondertekend met de sleutel van het opslagaccount. Microsoft raadt het gebruik van een SAS voor gebruikersdelegering aan, indien mogelijk. Zie Beperkte toegang verlenen tot gegevens met Shared Access Signatures (SAS) voor meer informatie.

In dit artikel wordt beschreven hoe u de sleutel van het opslagaccount gebruikt om een account-SAS te maken met de Azure Storage-clientbibliotheek voor Java.

Over de ACCOUNT-SAS

Er wordt een account-SAS gemaakt op het niveau van het opslagaccount en is ondertekend met de toegangssleutel voor het account. Door een account-SAS te maken, kunt u het volgende doen:

  • Gedelegeerdentoegang tot bewerkingen op serviceniveau die momenteel niet beschikbaar zijn met een servicespecifieke SAS, zoals Eigenschappen van blobservice ophalen, Eigenschappen van blobservice instellen en Blob-servicestatistieken ophalen.
  • Gedelegeerdentoegang tot meer dan één service in een opslagaccount tegelijk. U kunt bijvoorbeeld toegang tot resources delegeren in zowel Azure Blob Storage als Azure Files met behulp van een account-SAS.

Opgeslagen toegangsbeleid wordt niet ondersteund voor een account-SAS.

Uw project instellen

Als u wilt werken met de codevoorbeelden in dit artikel, voegt u de volgende importrichtlijnen toe:

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;

Een account-SAS maken

U kunt een account-SAS maken om beperkte toegang tot opslagaccountbronnen te delegeren met behulp van de volgende methode:

Gebruik de volgende helperklassen om de handtekeningwaarden voor de sas voor het account te configureren:

  • AccountSasPermission: Vertegenwoordigt de machtigingen die zijn toegestaan door de SAS. In ons voorbeeld stellen we de leesmachtiging in op true.
  • AccountSasService: vertegenwoordigt de services die toegankelijk zijn voor de SAS. In ons voorbeeld geven we toegang tot de Blob-service.
  • AccountSasResourceType: Vertegenwoordigt de resourcetypen die toegankelijk zijn voor de SAS. In ons voorbeeld geven we toegang tot API's op serviceniveau.

Zodra de helperklassen zijn geconfigureerd, kunt u parameters voor de SAS initialiseren met een AccountSasSignatureValues-exemplaar .

In het volgende codevoorbeeld ziet u hoe u SAS-parameters configureert en de methode generateAccountSas aanroept om de account-SAS op te halen:

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

Een account-SAS van een client gebruiken

In het volgende codevoorbeeld ziet u hoe u de account-SAS gebruikt die in het vorige voorbeeld is gemaakt om een BlobServiceClient-object te autoriseren. Dit clientobject kan vervolgens worden gebruikt voor toegang tot API's op serviceniveau op basis van de machtigingen die zijn verleend door de SAS.

Maak eerst een BlobServiceClient-object dat is ondertekend met de toegangssleutel van het account:

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

Genereer vervolgens de account-SAS, zoals wordt weergegeven in het vorige voorbeeld en gebruik de SAS om een BlobServiceClient-object te autoriseren:

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

U kunt ook een account-SAS gebruiken om een BlobContainerClient-object of BlobClient-object te autoriseren en te werken, als deze resourcetypen toegang krijgen als onderdeel van de handtekeningwaarden.

Resources

Zie de volgende resources voor meer informatie over het maken van een account-SAS met behulp van de Azure Blob Storage-clientbibliotheek voor Java.

Codevoorbeelden

Clientbibliotheekbronnen

Zie ook