Share via


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.

  1. 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:

  2. 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}`;
    }
    
  3. 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.

Kapcsolódó információk