Fiók SAS-jogkivonatok létrehozása és használata az Azure Blob Storage és a JavaScript használatával
Ez a cikk bemutatja, hogyan hozhat létre és használhat fiók SAS-jogkivonatokat az Azure Blob Storage v12 for JavaScript ügyfélkódtár használatához. A csatlakozás után a kód a Blob Storage szolgáltatás tárolóira, blobokra és funkcióira is képes.
A mintakódrészletek futtatható Node.js-fájlokként érhetők el a GitHubon.
Package (npm) | Samples | API reference | Library source code | Give Feedback
Fiók SAS-jogkivonatai
A fiók SAS-jogkivonata az Azure Storage által biztosított hozzáférés-delegálás egyik típusa. A fiók SAS-jogkivonata hozzáférést biztosít az Azure Storage-hoz. A jogkivonat csak annyira korlátozó, mint a létrehozáskor. Mivel bárki, aki rendelkezik a jogkivonattal, hozzáférhet a Storage-fiókjához, meg kell határoznia a jogkivonatot a legkorlátozóbb engedélyekkel, amelyek továbbra is lehetővé teszik a jogkivonat számára a szükséges feladatok elvégzését.
A jogkivonatok létrehozásának ajánlott eljárásai közé tartozik az engedélyek korlátozása:
- Szolgáltatások: blob, fájl, üzenetsor, tábla
- Erőforrástípusok: szolgáltatás, tároló vagy objektum
- Engedélyek, például létrehozás, olvasás, írás, frissítés és törlés
Szükséges függőségek hozzáadása az alkalmazáshoz
Adja meg a fiók SAS-jogkivonat létrehozásához szükséges függőségeket.
const {
BlobServiceClient,
generateAccountSASQueryParameters,
AccountSASPermissions,
AccountSASServices,
AccountSASResourceTypes,
StorageSharedKeyCredential,
SASProtocol
} = require('@azure/storage-blob');
require('dotenv').config()
Környezeti változók lekérése megosztott kulcs hitelesítő adatainak létrehozásához
StorageSharedKeyCredential létrehozásához használja a Blob Storage-fiók nevét és kulcsát. Ez a kulcs szükséges az SAS-jogkivonat létrehozásához és az SAS-jogkivonat használatához.
Hozzon létre egy StorageSharedKeyCredential azonosítót a tárfiók nevével és a fiókkulcsával. Ezután a StorageSharedKeyCredential használatával inicializáljon egy BlobServiceClientet.
const constants = {
accountName: process.env.AZURE_STORAGE_ACCOUNT_NAME,
accountKey: process.env.AZURE_STORAGE_ACCOUNT_KEY
};
const sharedKeyCredential = new StorageSharedKeyCredential(
constants.accountName,
constants.accountKey
);
Aszinkron műveletű kazánlemez
A fennmaradó mintakódrészletek a Node.js következő aszinkron sablonkódját feltételezik.
async function main() {
const sasToken = await createAccountSas();
await useSasToken(sasToken);
}
main()
.then(() => {
console.log(`done`);
}).catch((ex) => {
console.log(`Error: ${ex.message}`)
});
SAS-jogkivonat létrehozása
Mivel ez a jogkivonat blobokkal, üzenetsorokkal, táblákkal és fájlokkal használható, a beállítások némelyike szélesebb körű, mint a blobbeállítások.
Hozza létre a beállításobjektumot.
Az SAS-jogkivonat képességeinek hatókörét az AccountSASSignatureValues határozza meg.
Az SDK által biztosított alábbi segédfüggvényekkel hozza létre a megfelelő értéktípusokat az értékekhez:
- AccountSASServices.parse("btqf").toString():
- b: blob
- t: tábla
- q: lekérdezés
- f: fájl
- resourceTypes: AccountSASResourceTypes.parse("sco").toString()
- s: szolgáltatás
- c: tároló – például blobtároló, tábla vagy üzenetsor
- o: objektum – blob, sor, üzenet
- engedélyek: AccountSASPermissions.parse("rwdlacupi")
- r: olvasás
- w: írás
- d: törlés
- l: lista
- f: szűrő
- a: hozzáadás
- c: létrehozás
- u: frissítés
- t: címkehozzáférés
- p: folyamat – például folyamatüzenetek egy üzenetsorban
- i: nem módosíthatósági szabályzat beállítása
- AccountSASServices.parse("btqf").toString():
Adja át az objektumot a generateAccountSASQueryParameters függvénynek, valamint a SharedKeyCredential függvénynek az SAS-jogkivonat létrehozásához.
Az SAS-jogkivonat visszaadása előtt a lekérdezési sztring elválasztójelét előre fel kell függesztetnie.
?
async function createAccountSas() { const sasOptions = { services: AccountSASServices.parse("btqf").toString(), // blobs, tables, queues, files resourceTypes: AccountSASResourceTypes.parse("sco").toString(), // service, container, object permissions: AccountSASPermissions.parse("rwdlacupi"), // permissions protocol: SASProtocol.Https, startsOn: new Date(), expiresOn: new Date(new Date().valueOf() + (10 * 60 * 1000)), // 10 minutes }; const sasToken = generateAccountSASQueryParameters( sasOptions, sharedKeyCredential ).toString(); console.log(`sasToken = '${sasToken}'\n`); // prepend sasToken with `?` return (sasToken[0] === '?') ? sasToken : `?${sasToken}`; }
Biztonságossá teheti az SAS-jogkivonatot a használatukig.
Blob szolgáltatás használata fiók SAS-jogkivonattal
A fiók SAS-jogkivonatának használatához össze kell kapcsolnia a fiók nevével az URI létrehozásához. Adja át az URI-t a blobServiceClient létrehozásához. Miután megkapta a BlobServiceClient szolgáltatást, az ügyfél használatával hozzáférhet a Blob szolgáltatáshoz.
// connect-with-sas-token.js
const { BlobServiceClient } = require('@azure/storage-blob');
require('dotenv').config()
const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
const sasToken = process.env.AZURE_STORAGE_SAS_TOKEN;
if (!accountName) throw Error('Azure Storage accountName not found');
if (!sasToken) throw Error('Azure Storage accountKey not found');
const blobServiceUri = `https://${accountName}.blob.core.windows.net`;
// https://YOUR-RESOURCE-NAME.blob.core.windows.net?YOUR-SAS-TOKEN
const blobServiceClient = new BlobServiceClient(
`${blobServiceUri}?${sasToken}`,
null
);
async function main(){
const containerName = 'REPLACE-WITH-EXISTING-CONTAINER-NAME';
const blobName = 'REPLACE-WITH-EXISTING-BLOB-NAME';
const timestamp = Date.now();
const fileName = `my-new-file-${timestamp}.txt`;
// create container client
const containerClient = await blobServiceClient.getContainerClient(containerName);
// create blob client
const blobClient = await containerClient.getBlockBlobClient(blobName);
// download file
await blobClient.downloadToFile(fileName);
console.log(`${fileName} downloaded`);
}
main()
.then(() => console.log(`done`))
.catch((ex) => console.log(`error: ${ex.message}`));
A dotenv
csomag segítségével beolvassa a tárfiók nevét egy .env
fájlból. Ezt a fájlt nem szabad beadni a forrásvezérlőbe.