Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
- Azure-előfizetés
- Egy Key Vault-erőforrás
- Meglévő Azure Key Vault. Ha kulcstartót kell létrehoznia, ezt az Azure Portalon teheti meg a dokumentum lépéseit követve. Másik lehetőségként használhatja az Azure CLI-t a dokumentum lépéseit követve.
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
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ának
Í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:
- Titkoslétrehozása és beállítása.
- Titkoslekérése.
- Titkos kódok létrehozása és frissítése attribútumokkal.
- Titkostörlése.
- Titkos kódok listájánakiterálása.
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:
-
listPropertiesOfSecretslistázni fogja az összes nem törölt titkos kulcsát a nevük alapján, csak a legújabb verziókban. -
listDeletedSecretsaz összes törölt titkos kulcsát a nevük alapján listázhatja, csak a legújabb verziókban. -
listPropertiesOfSecretVersionsegy 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:
- Key Vault titkos kulcsminták (JavaScript)
- Key Vault titkos kulcsminták (TypeScript)
- Key Vault titkos kulcstesztelési eseteinek
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.
Azure SDK for JavaScript