Delen via


Een service-SAS maken voor een container of blob met JavaScript

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 service-SAS te maken voor een container of blob met de Blob Storage-clientbibliotheek voor JavaScript.

Een service-SAS maken voor een blobcontainer

In het volgende codevoorbeeld wordt een SAS voor een container gemaakt. Als de naam van een bestaand opgeslagen toegangsbeleid wordt opgegeven, is dat beleid gekoppeld aan de SAS. Als er geen opgeslagen toegangsbeleid is opgegeven, maakt de code een ad-hoc-SAS op de container.

Een service-SAS is ondertekend met de toegangssleutel voor het account. Gebruik de klasse StorageSharedKeyCredential om de referentie te maken die wordt gebruikt om de SAS te ondertekenen. Roep vervolgens de functie generateBlobSASQueryParameters aan met de vereiste parameters om de SAS-tokentekenreeks op te halen.

// Create a service SAS for a blob container
function getContainerSasUri(containerClient, sharedKeyCredential, storedPolicyName) {
    const sasOptions = {
        containerName: containerClient.containerName,
        permissions: ContainerSASPermissions.parse("c")
    };

    if (storedPolicyName == null) {
        sasOptions.startsOn = new Date();
        sasOptions.expiresOn = new Date(new Date().valueOf() + 3600 * 1000);
    } else {
        sasOptions.identifier = storedPolicyName;
    }

    const sasToken = generateBlobSASQueryParameters(sasOptions, sharedKeyCredential).toString();
    console.log(`SAS token for blob container is: ${sasToken}`);

    return `${containerClient.url}?${sasToken}`;
}

Een service-SAS voor een blob maken

In het volgende codevoorbeeld wordt een SAS op een blob gemaakt. Als de naam van een bestaand opgeslagen toegangsbeleid wordt opgegeven, is dat beleid gekoppeld aan de SAS. Als er geen opgeslagen toegangsbeleid is opgegeven, maakt de code een ad-hoc-SAS op de blob.

Als u een service-SAS voor een blob wilt maken, roept u de functie generateBlobSASQueryParameters aan die de vereiste parameters levert.

// Create a service SAS for a blob
function getBlobSasUri(containerClient, blobName, sharedKeyCredential, storedPolicyName) {
    const sasOptions = {
        containerName: containerClient.containerName,
        blobName: blobName
    };

    if (storedPolicyName == null) {
        sasOptions.startsOn = new Date();
        sasOptions.expiresOn = new Date(new Date().valueOf() + 3600 * 1000);
        sasOptions.permissions = BlobSASPermissions.parse("r");
    } else {
        sasOptions.identifier = storedPolicyName;
    }

    const sasToken = generateBlobSASQueryParameters(sasOptions, sharedKeyCredential).toString();
    console.log(`SAS token for blob is: ${sasToken}`);

    return `${containerClient.getBlockBlobClient(blobName).url}?${sasToken}`;
}

Resources voor ontwikkeling met JavaScript

De onderstaande koppelingen bieden nuttige resources voor ontwikkelaars die de Azure Storage-clientbibliotheek voor JavaScript gebruiken

Blob Storage-API's

JavaScript-hulpprogramma's

Volgende stappen