Creare una firma di accesso condiviso del servizio per un contenitore o un BLOB con JavaScript

Una firma di accesso condiviso consente di concedere l'accesso limitato a contenitori e BLOB nell'account di archiviazione. Quando si crea una firma di accesso condiviso, si specificano i vincoli, tra cui quali Archiviazione di Azure risorse a cui un client è autorizzato ad accedere, quali autorizzazioni hanno per tali risorse e per quanto tempo la firma di accesso condiviso è valida.

Ogni firma di accesso condiviso viene firmata con una chiave. È possibile firmare una firma di accesso condiviso in uno dei due modi seguenti:

  • Con una chiave creata usando le credenziali di Microsoft Entra. Una firma di accesso condiviso firmata con le credenziali di Microsoft Entra è una firma di accesso condiviso della delega utente. A un client che crea una firma di accesso condiviso della delega utente deve essere assegnato un ruolo controllo degli accessi in base al ruolo di Azure che include Microsoft.ArchiviazioneAzione /storageAccounts/blobServices/generateUserDelegationKey. Per altre informazioni, vedere Creare una firma di accesso condiviso di delega utente.
  • Con la chiave dell'account di archiviazione. Sia una firma di accesso condiviso del servizio che una firma di accesso condiviso dell'account di archiviazione sono firmate con la chiave dell'account di archiviazione. Il client che crea una firma di accesso condiviso del servizio deve avere accesso diretto alla chiave dell'account o deve essere assegnato a Microsoft.ArchiviazioneAutorizzazione /storageAccounts/listkeys/action. Per altre informazioni, vedere Creare una firma di accesso condiviso del servizio o Creare una firma di accesso condiviso dell'account.

Nota

Una firma di accesso condiviso della delega utente offre una sicurezza superiore a una firma di accesso condiviso firmata con la chiave dell'account di archiviazione. Quando possibile, Microsoft consiglia di usare una firma di accesso condiviso per la delega utente. Per altre informazioni, vedere Concedere l'accesso limitato ai dati con firme di accesso condiviso.

Questo articolo illustra come usare la chiave dell'account di archiviazione per creare una firma di accesso condiviso del servizio per un contenitore o UN BLOB con la libreria client Archiviazione BLOB per JavaScript.

Creare una firma di accesso condiviso del servizio per un contenitore BLOB

Nell'esempio di codice seguente viene creata una firma di accesso condiviso per un contenitore. Se viene specificato il nome di un criterio di accesso archiviato esistente, tale criterio è associato alla firma di accesso condiviso. Se non viene fornito alcun criterio di accesso archiviato, il codice crea una firma di accesso condiviso ad hoc nel contenitore.

Una firma di accesso condiviso del servizio viene firmata con la chiave di accesso dell'account. Usare la classe Archiviazione SharedKeyCredential per creare le credenziali usate per firmare la firma di accesso condiviso. Chiamare quindi la funzione generateBlobSASQueryParameters specificando i parametri necessari per ottenere la stringa del token di firma di accesso condiviso.

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

Creare una firma di accesso condiviso del servizio per un BLOB

Nell'esempio di codice seguente viene creata una firma di accesso condiviso in un BLOB. Se viene specificato il nome di un criterio di accesso archiviato esistente, tale criterio è associato alla firma di accesso condiviso. Se non vengono forniti criteri di accesso archiviati, il codice crea una firma di accesso condiviso ad hoc nel BLOB.

Per creare una firma di accesso condiviso del servizio per un BLOB, chiamare la funzione generateBlobSASQueryParameters che fornisce i parametri necessari.

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

Risorse per lo sviluppo con JavaScript

I collegamenti seguenti forniscono risorse utili per gli sviluppatori che usano la libreria client Archiviazione di Azure per JavaScript

Api di archiviazione BLOB

Strumenti JavaScript

Passaggi successivi