Megosztás a következőn keresztül:


Azure Key Vault titkos ügyféloldali kódtár JavaScripthez – 4.10.0-s verzió

Az Azure Key Vault egy szolgáltatás, amellyel biztonságos kulcsokkal titkosíthatja a hitelesítési kulcsokat, a tárfiókkulcsokat, az adattitkosítási kulcsokat, a .pfx fájlokat és a jelszavakat. Ha többet szeretne megtudni az Azure Key Vaultról, érdemes lehet áttekinteni: Mi az Az Azure Key Vault?

Az Azure Key Vault titkos kulcsainak kezelése lehetővé teszi a jogkivonatok, jelszavak, tanúsítványok, API-kulcsok és egyéb titkos kódok biztonságos tárolását és szigorú szabályozását.

Használja az Azure Key Vault titkos kulcsait tároló ügyfélkódtárat az Node.js alkalmazásban a következő célokra:

  • Titkos kulcsok lekérése, beállítása és törlése.
  • Frissítsen egy titkos kulcsot és attribútumokat.
  • Titkos kulcs biztonsági mentése és visszaállítása.
  • Törölt titkos kód lekérése, törlése vagy helyreállítása.
  • A titkos kódok összes verziójának lekérése.
  • Szerezze meg az összes titkos elemet.
  • Szerezze be az összes törölt titkos kódot.

Megjegyzés: Ez a csomag az Azure Key Vault szolgáltatás korlátozásai miatt nem használható a böngészőben, útmutatásért tekintse meg a dokumentum .

Főbb hivatkozások:

Kezdő lépések

Jelenleg támogatott környezetek

Előfeltételek

A csomag telepítése

Telepítse az Azure Key Vault titkos ügyfélkódtárát az npm használatával:

npm install @azure/keyvault-secrets

Az identitástár telepítése

A Key Vault-ügyfelek az Azure Identity Library használatával hitelesítik magukat. Telepítse az npm használatával is

npm install @azure/identity

TypeScript konfigurálása

A TypeScript-felhasználóknak telepítve kell lenniük a csomóponttípus-definícióknak:

npm install @types/node

A tsconfig.jsoncompilerOptions.allowSyntheticDefaultImports is engedélyeznie kell. Vegye figyelembe, hogy ha engedélyezte a compilerOptions.esModuleInterop, a allowSyntheticDefaultImports alapértelmezés szerint engedélyezve van. További információért tekintse meg TypeScript fordítóbeállítási kézikönyvét.

Főbb fogalmak

  • A Titkos ügyfél az elsődleges felület, amely egy JavaScript-alkalmazásból származó Azure Key Vault API titkos kulcsaival kapcsolatos API-metódusokkal kommunikál. Az inicializálás után a titkos kulcsok létrehozására, olvasására, frissítésére és törlésére használható alapvető módszereket biztosít.
  • A titkos a Key Vault titkos kódjának egy verziója. Minden alkalommal, amikor egy felhasználó egy értéket rendel egy egyedi titkos kódnévhez, létrejön a titkos kód új verziója,. A titkos kód névvel való lekérése mindig a legújabb hozzárendelt értéket adja vissza, kivéve, ha a lekérdezés egy adott verziót ad meg.
  • helyreállítható törlési lehetővé teszi, hogy a Key Vaultok két külön lépésként támogassák a törlést és a törlést, így a törölt titkos kulcsok nem vesznek el azonnal. Ez csak akkor fordul elő, ha a Key Vault helyreállítható törlési engedélyezve van.
  • A titkos biztonsági mentési bármely létrehozott titkos kódból létrehozható. Ezek a biztonsági másolatok bináris adatokként jönnek létre, és csak egy korábban törölt titkos kód újragenerálásához használhatók.

Hitelesítés az Azure Active Directoryval

A Key Vault szolgáltatás az Azure Active Directoryra támaszkodik az API-khoz érkező kérések hitelesítéséhez. A @azure/identity csomag számos hitelesítő adattípust biztosít, amelyeket az alkalmazás használhat erre. A README további részleteket és mintákat tartalmaz az első lépésekhez.

Az Azure Key Vault szolgáltatás használatához létre kell hoznia egy példányt a SecretClient osztályból, egy tároló URL-címét és egy hitelesítő objektumot. A dokumentumban bemutatott példák egy DefaultAzureCredentialnevű hitelesítő objektumot használnak, amely a legtöbb forgatókönyvhez, beleértve a helyi fejlesztési és éles környezeteket is. Emellett azt is javasoljuk, hogy felügyelt identitás használjon éles környezetekben történő hitelesítéshez.

A hitelesítés különböző módjairól és a hozzájuk tartozó hitelesítő adatok típusairól az Azure Identity dokumentációjánaktalál további információt.

Íme egy gyors példa. Először importálja DefaultAzureCredential és SecretClient. Ezek importálása után a következő lépésben csatlakozhatunk a Key Vault szolgáltatáshoz:

import { DefaultAzureCredential } from "@azure/identity";
import { SecretClient } from "@azure/keyvault-secrets";

const credential = new DefaultAzureCredential();

// Build the URL to reach your key vault
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

// Lastly, create our keys client and connect to the service
const client = new SecretClient(url, credential);

Az Azure Key Vault szolgáltatás API-verziójának megadása

Ez a csomag alapértelmezés szerint a legújabb Azure Key Vault szolgáltatásverziót használja, amely 7.1. Az egyetlen támogatott verzió a 7.0. A használt szolgáltatásverziót az ügyfélkonstruktor serviceVersion beállításával módosíthatja az alábbiak szerint:

import { DefaultAzureCredential } from "@azure/identity";
import { SecretClient } from "@azure/keyvault-secrets";

const credential = new DefaultAzureCredential();

// Build the URL to reach your key vault
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

// Change the Azure Key Vault service API version being used via the `serviceVersion` option
const client = new SecretClient(url, credential, {
  serviceVersion: "7.0", // Or 7.1
});

Példák

Az alábbi szakaszok olyan kódrészleteket nyújtanak, amelyek az Azure Key Vault titkos kulcsait használó gyakori feladatok némelyikét fedik le. Az itt tárgyalt forgatókönyvek a következőkből állnak:

Titkos kód létrehozása és beállítása

setSecret hozzárendel egy megadott értéket a megadott titkos kódnévhez. Ha már létezik ilyen nevű titkos kód, akkor létrejön a titkos kód új verziója.

import { DefaultAzureCredential } from "@azure/identity";
import { SecretClient } from "@azure/keyvault-secrets";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new SecretClient(url, credential);

const secretName = "MySecretName";

const result = await client.setSecret(secretName, "MySecretValue");
console.log("result: ", result);

Titkos kód lekérése

A titkos kulcsok visszaolvasásának legegyszerűbb módja a titkos kulcsok név szerinti lekérése. Ez lekéri a titkos kód legújabb verzióját. Ha az opcionális paraméterek részeként adja meg, a kulcs másik verzióját is lekérheti.

import { DefaultAzureCredential } from "@azure/identity";
import { SecretClient } from "@azure/keyvault-secrets";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new SecretClient(url, credential);

const secretName = "MySecretName";

const latestSecret = await client.getSecret(secretName);
console.log(`Latest version of the secret ${secretName}: `, latestSecret);

const specificSecret = await client.getSecret(secretName, {
  version: latestSecret.properties.version!,
});
console.log(
  `The secret ${secretName} at the version ${latestSecret.properties.version!}: `,
  specificSecret,
);

Titkos kódok létrehozása és frissítése attribútumokkal

A titkos kódoknak több információjuk lehet, mint a neve és értéke. A következő attribútumokat is tartalmazhatják:

  • tags: A titkos kulcsok keresésére és szűrésére használható kulcsértékek összes készlete.
  • contentType: Minden olyan sztring, amely segíthet a titkos kód fogadójának megérteni a titkos érték használatát.
  • enabled: Logikai érték, amely meghatározza, hogy a titkos kulcs olvasható-e vagy sem.
  • notBefore: Egy adott dátum, amely után a titkos kód értéke lekérhető.
  • expiresOn: Egy adott dátum, amely után a titkos kulcs értéke nem kérhető le.

Az ilyen attribútumokkal rendelkező objektumok a setSecretharmadik paramétereként küldhetők el közvetlenül a titkos kód neve és értéke után, az alábbiak szerint:

import { DefaultAzureCredential } from "@azure/identity";
import { SecretClient } from "@azure/keyvault-secrets";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new SecretClient(url, credential);

const secretName = "MySecretName";

const result = await client.setSecret(secretName, "MySecretValue", {
  enabled: false,
});

Ezzel létrehoz egy új verziót ugyanannak a titkos kódnak, amely a legújabban megadott attribútumokkal rendelkezik.

Az attribútumok egy meglévő titkos verzióra is frissíthetők updateSecretPropertiesaz alábbiak szerint:

import { DefaultAzureCredential } from "@azure/identity";
import { SecretClient } from "@azure/keyvault-secrets";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new SecretClient(url, credential);

const secretName = "MySecretName";

const result = await client.getSecret(secretName);
await client.updateSecretProperties(secretName, result.properties.version, { enabled: false });

Titkos kód törlése

A beginDeleteSecret metódus elindítja egy titkos kód törlését. Ez a folyamat a háttérben fog történni, amint a szükséges erőforrások rendelkezésre állnak.

import { DefaultAzureCredential } from "@azure/identity";
import { SecretClient } from "@azure/keyvault-secrets";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new SecretClient(url, credential);

const secretName = "MySecretName";

await client.beginDeleteSecret(secretName);

Ha helyreállítható törlési engedélyezve van a Key Vaulthoz, ez a művelet csak törölt titkos kódként fogja megjelölni. A törölt titkos kódok nem frissíthetők. Csak olvashatók, helyreállíthatók vagy törölhetők.

import { DefaultAzureCredential } from "@azure/identity";
import { SecretClient } from "@azure/keyvault-secrets";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new SecretClient(url, credential);

const secretName = "MySecretName";

const poller = await client.beginDeleteSecret(secretName);

// You can use the deleted secret immediately:
const deletedSecret = poller.getResult();

// The secret is being deleted. Only wait for it if you want to restore it or purge it.
await poller.pollUntilDone();

// You can also get the deleted secret this way:
await client.getDeletedSecret(secretName);

// Deleted secrets can also be recovered or purged.

// recoverDeletedSecret returns a poller, just like beginDeleteSecret.
const recoverPoller = await client.beginRecoverDeletedSecret(secretName);
await recoverPoller.pollUntilDone();

// And then, to purge the deleted secret:
await client.purgeDeletedSecret(secretName);

Mivel a titkos kódok teljes törlése eltarthat egy ideig, beginDeleteSecret egy Poller-objektumot ad vissza, amely nyomon követi a mögöttes hosszú futású műveletet az irányelveink szerint: https://azure.github.io/azure-sdk/typescript_design.html#ts-lro

A kapott lekérdezés lehetővé teszi a törölt titkos kód lekérését a poller.getResult()hívásával. A törlés befejezését is megvárhatja, ha egyéni szolgáltatáshívásokat futtat a titkos kód törléséig, vagy megvárja, amíg a folyamat befejeződik:

import { DefaultAzureCredential } from "@azure/identity";
import { SecretClient } from "@azure/keyvault-secrets";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new SecretClient(url, credential);

const secretName = "MySecretName";

const poller = await client.beginDeleteSecret(secretName);

// You can use the deleted secret immediately:
let deletedSecret = poller.getResult();

// Or you can wait until the secret finishes being deleted:
deletedSecret = await poller.pollUntilDone();
console.log(deletedSecret);

A titkos kód teljes törlésének egy másik módja, ha egyéni hívásokat hajt végre, az alábbiak szerint:

import { DefaultAzureCredential } from "@azure/identity";
import { SecretClient } from "@azure/keyvault-secrets";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new SecretClient(url, credential);

const secretName = "MySecretName";

const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

const poller = await client.beginDeleteSecret(secretName);
while (!poller.isDone()) {
  await poller.poll();
  await delay(5000);
}

console.log(`The secret ${secretName} is fully deleted`);

Titkos kódok listájának iterálása

A SecretClient használatával lekérheti és iterálhatja a Key Vault összes titkos kulcsát, valamint a törölt titkos kulcsokat és egy adott titkos kód verzióit. A következő API-metódusok érhetők el:

  • listPropertiesOfSecrets listázni fogja az összes nem törölt titkos kulcsát a nevük alapján, csak a legújabb verziókban.
  • listDeletedSecrets az összes törölt titkos kulcsát a nevük alapján listázhatja, csak a legújabb verziókban.
  • listPropertiesOfSecretVersions egy titkos kód összes verzióját egy titkos név alapján listázni fogja.

A következő módon használható:

import { DefaultAzureCredential } from "@azure/identity";
import { SecretClient } from "@azure/keyvault-secrets";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new SecretClient(url, credential);

const secretName = "MySecretName";

for await (const secretProperties of client.listPropertiesOfSecrets()) {
  console.log("Secret properties: ", secretProperties);
}

for await (const deletedSecret of client.listDeletedSecrets()) {
  console.log("Deleted secret: ", deletedSecret);
}

for await (const versionProperties of client.listPropertiesOfSecretVersions(secretName)) {
  console.log("Version properties: ", versionProperties);
}

Ezek a módszerek egyszerre az összes elérhető eredményt. Ha oldalak szerint szeretné lekérni őket, adja hozzá .byPage() közvetlenül a használni kívánt API-metódus meghívása után, az alábbiak szerint:

import { DefaultAzureCredential } from "@azure/identity";
import { SecretClient } from "@azure/keyvault-secrets";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new SecretClient(url, credential);

const secretName = "MySecretName";

for await (const page of client.listPropertiesOfSecrets().byPage()) {
  for (const secretProperties of page) {
    console.log("Secret properties: ", secretProperties);
  }
}
for await (const page of client.listDeletedSecrets().byPage()) {
  for (const deletedSecret of page) {
    console.log("Deleted secret: ", deletedSecret);
  }
}
for await (const page of client.listPropertiesOfSecretVersions(secretName).byPage()) {
  for (const versionProperties of page) {
    console.log("Version properties: ", versionProperties);
  }
}

Hibaelhárítás

A különböző hibaforgatókönyvek diagnosztizálásával kapcsolatos részletekért tekintse meg hibaelhárítási útmutatónkat.

A naplózás engedélyezése segíthet a hibákról szóló hasznos információk feltárásában. A HTTP-kérések és válaszok naplójának megtekintéséhez állítsa a környezeti változót a AZURE_LOG_LEVEL következőre info: . Alternatívaként a naplózás futásidőben is engedélyezhető a setLogLevel hívásával a @azure/logger.

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Következő lépések

További kódmintákat az alábbi hivatkozásokon talál:

Közreműködés

Ha hozzá szeretne járulni ehhez a kódtárhoz, olvassa el a közreműködői útmutatót, amelyből többet is megtudhat a kód összeállításáról és teszteléséről.