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
- Azure Storage Blob-klientbibliotek för JavaScript
- Källkod för bibliotek
- Paket (npm)
- API-referensdokumentation
JavaScript-verktyg
Nästa steg
- Grant limited access to Azure Storage resources using shared access signatures (SAS) (Bevilja begränsad åtkomst till Azure Storage-resurser med hjälp av signaturer för delad åtkomst (SAS))
- Skapa en tjänst-SAS