Creare una firma di accesso condiviso del servizio per un contenitore o un BLOB con JavaScript
Una firma di accesso condiviso (SAS) permette all'utente di concedere l'accesso limitato a contenitori e BLOB nell'account di archiviazione. Quando si crea una firma di accesso condiviso, si specificano i relativi vincoli, incluse le risorse di Archiviazione di Azure alle quali un client è autorizzato ad accedere, le autorizzazioni di cui dispone per tali risorse e la durata della validità della firma di accesso condiviso.
Ogni firma di accesso condiviso viene firmata con una chiave. Questa operazione può essere eseguita in due modi:
- Con una chiave creata utilizzando le credenziali di Microsoft Entra. Una firma di accesso condiviso firmata con le credenziali di Microsoft Entra è una firma di accesso condiviso di delega utente. A un client che crea una firma di accesso condiviso di delega utente deve essere assegnato un ruolo di Controllo degli accessi in base al ruolo di Azure che include l'azione Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Per altre informazioni, vedere Creare una firma di accesso condiviso di delega utente.
- Con la chiave dell'account di archiviazione. Una firma di accesso condiviso del servizio e una firma di accesso condiviso dell'account, vengono entrambe 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 disporre dell'autorizzazione Microsoft.Storage/storageAccounts/listkeys/action. Per altre informazioni, vedere Creare una firma di accesso condiviso del servizio oppure Creare una firma di accesso condiviso dell'account.
Nota
Una firma di accesso condiviso di delega utente offre una protezione maggiore rispetto 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 di delega utente. Per altre informazioni, vedere Concedere 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 di 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.
Un servizio SAS viene firmato con la chiave di accesso dell'account. Usare la classe StorageSharedKeyCredential 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
- Archiviazione di Azure libreria client BLOB per JavaScript
- Codice sorgente della libreria
- Pacchetto (npm)
- Documentazione di riferimento delle API