Criar uma SAS de serviço para um contêiner ou blob com JavaScript
Uma assinatura de acesso compartilhado (SAS) permite que você conceda acesso limitado a contêineres e blobs em sua conta de armazenamento. Ao criar uma SAS, você especifica suas restrições, incluindo quais recursos do Armazenamento do Azure um cliente tem permissão para acessar, quais permissões eles têm nesses recursos e por quanto tempo a SAS é válida.
Cada SAS é assinado com uma chave. Você pode assinar uma SAS de duas maneiras:
- Com uma chave criada usando credenciais do Microsoft Entra. Uma SAS assinada com credenciais do Microsoft Entra é uma SAS de delegação de usuário. Um cliente que cria uma SAS de delegação de usuário deve receber uma função RBAC do Azure que inclua a ação Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Para saber mais, consulte Criar uma SAS de delegação de usuário.
- Com a chave da conta de armazenamento. Tanto uma SAS de serviço quanto uma SAS de conta são assinadas com a chave da conta de armazenamento. O cliente que cria uma SAS de serviço deve ter acesso direto à chave da conta ou receber a permissão Microsoft.Storage/storageAccounts/listkeys/action . Para saber mais, consulte Criar uma SAS de serviço ou Criar uma SAS de conta.
Nota
Uma SAS de delegação de usuário oferece segurança superior a uma SAS assinada com a chave da conta de armazenamento. A Microsoft recomenda o uso de uma SAS de delegação de usuário quando possível. Para obter mais informações, consulte Conceder acesso limitado a dados com assinaturas de acesso compartilhado (SAS).
Este artigo mostra como usar a chave de conta de armazenamento para criar uma SAS de serviço para um contêiner ou blob com a biblioteca de cliente de Armazenamento de Blob para JavaScript.
Criar uma SAS de serviço para um contêiner de blob
O exemplo de código a seguir cria uma SAS para um contêiner. Se o nome de uma política de acesso armazenado existente for fornecido, essa política será associada à SAS. Se nenhuma política de acesso armazenado for fornecida, o código criará uma SAS ad hoc no contêiner.
Uma SAS de serviço é assinada com a chave de acesso da conta. Use a classe StorageSharedKeyCredential para criar a credencial usada para assinar a SAS. Em seguida, chame a função generateBlobSASQueryParameters fornecendo os parâmetros necessários para obter a cadeia de caracteres do token SAS.
// 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}`;
}
Criar uma SAS de serviço para um blob
O exemplo de código a seguir cria uma SAS em um blob. Se o nome de uma política de acesso armazenado existente for fornecido, essa política será associada à SAS. Se nenhuma política de acesso armazenado for fornecida, o código criará uma SAS ad hoc no blob.
Para criar uma SAS de serviço para um blob, chame a função generateBlobSASQueryParameters fornecendo os parâmetros necessários.
// 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}`;
}
Recursos para desenvolvimento com JavaScript
Os links abaixo fornecem recursos úteis para desenvolvedores que usam a biblioteca de cliente do Armazenamento do Azure para JavaScript
APIs de armazenamento de Blob
- Biblioteca de cliente de Blob de Armazenamento do Azure para JavaScript
- Código fonte da biblioteca
- Pacote (npm)
- Documentação de referência da API