Dela via


Skapa en tjänst-SAS för en container eller blob med JavaScript

Med en signatur för delad åtkomst (SAS) kan du bevilja begränsad åtkomst till containrar och blobar i ditt lagringskonto. När du skapar en SAS anger du dess begränsningar, inklusive vilka Azure Storage-resurser en klient har åtkomst till, vilka behörigheter de har för dessa resurser och hur länge SAS är giltigt.

Varje SAS signeras med en nyckel. Du kan signera en SAS på något av två sätt:

  • Med en nyckel som skapats med Microsoft Entra-autentiseringsuppgifter. En SAS som är signerad med Microsoft Entra-autentiseringsuppgifter är en SAS för användardelegering . En klient som skapar en SAS för användardelegering måste tilldelas en Azure RBAC-roll som innehåller åtgärden Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey . Mer information finns i Skapa en SAS för användardelegering.
  • Med lagringskontonyckeln. Både en tjänst-SAS och ett sas-konto signeras med lagringskontonyckeln. Klienten som skapar en tjänst-SAS måste antingen ha direkt åtkomst till kontonyckeln eller tilldelas behörigheten Microsoft.Storage/storageAccounts/listkeys/action . Mer information finns i Skapa en tjänst-SAS eller Skapa ett konto-SAS.

Kommentar

En SAS för användardelegering ger överlägsen säkerhet till en SAS som är signerad med lagringskontonyckeln. Microsoft rekommenderar att du använder en SAS för användardelegering när det är möjligt. Mer information finns i Bevilja begränsad åtkomst till data med signaturer för delad åtkomst (SAS).

Den här artikeln visar hur du använder lagringskontonyckeln för att skapa en tjänst-SAS för en container eller blob med Blob Storage-klientbiblioteket för JavaScript.

Skapa en tjänst-SAS för en blobcontainer

I följande kodexempel skapas en SAS för en container. Om namnet på en befintlig lagrad åtkomstprincip anges associeras den principen med SAS. Om ingen lagrad åtkomstprincip anges skapar koden en ad hoc-SAS på containern.

En tjänst-SAS signeras med kontoåtkomstnyckeln. Använd klassen StorageSharedKeyCredential för att skapa autentiseringsuppgifterna som används för att signera SAS. Anropa sedan funktionen generateBlobSASQueryParameters som tillhandahåller de parametrar som krävs för att hämta SAS-tokensträngen.

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

Skapa en tjänst-SAS för en blob

I följande kodexempel skapas en SAS på en blob. Om namnet på en befintlig lagrad åtkomstprincip anges associeras den principen med SAS. Om ingen lagrad åtkomstprincip tillhandahålls skapar koden en ad hoc-SAS på bloben.

Om du vill skapa en tjänst-SAS för en blob anropar du funktionen generateBlobSASQueryParameters som tillhandahåller de obligatoriska parametrarna.

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

Resurser för utveckling med JavaScript

Länkarna nedan innehåller användbara resurser för utvecklare som använder Azure Storage-klientbiblioteket för JavaScript

API:er för Blob Storage

JavaScript-verktyg

Nästa steg