Azure Key Vault Secret-Clientbibliothek für JavaScript – Version 4.8.0
Azure Key Vault ist ein Dienst, mit dem Sie Authentifizierungsschlüssel, Speicherkontoschlüssel, Datenverschlüsselungsschlüssel, PFX-Dateien und Kennwörter mithilfe geschützter Schlüssel verschlüsseln können. Wenn Sie mehr über Azure Key Vault erfahren möchten, sollten Sie folgendes lesen: Was ist Azure Key Vault?
Mit azure Key Vault Secrets Management können Sie den Zugriff auf Token, Kennwörter, Zertifikate, API-Schlüssel und andere Geheimnisse sicher speichern und kontrollieren.
Verwenden Sie die Clientbibliothek für Azure Key Vault Secrets in Ihrer Node.js-Anwendung für Folgendes:
- Abrufen, Festlegen und Löschen von Geheimnissen.
- Aktualisieren Sie ein Geheimnis und seine Attribute.
- Sichern und Wiederherstellen eines Geheimnisses
- Abrufen, Bereinigen oder Wiederherstellen eines gelöschten Geheimnisses.
- Rufen Sie alle Versionen eines Geheimnisses ab.
- Alle Geheimnisse abrufen.
- Rufen Sie alle gelöschten Geheimnisse ab.
Hinweis: Dieses Paket kann aufgrund von Azure Key Vault-Dienstbeschränkungen nicht im Browser verwendet werden. Weitere Informationen finden Sie in diesem Dokument.
Wichtige Links:
Erste Schritte
Die derzeitig unterstützten Umgebungen
Voraussetzungen
- Ein Azure-Abonnement
- Eine Key Vault Ressource
- Eine vorhandene Azure Key Vault. Wenn Sie einen Schlüsseltresor erstellen müssen, können Sie dies im Azure-Portal tun, indem Sie die Schritte in diesem Dokument ausführen. Alternativ können Sie die Azure CLI verwenden, indem Sie die Schritte in diesem Dokument ausführen.
Installieren des Pakets
Installieren Sie die Azure Key Vault Secret-Clientbibliothek mithilfe von npm:
npm install @azure/keyvault-secrets
Installieren der Identitätsbibliothek
Key Vault Clients authentifizieren sich mithilfe der Azure Identity Library. Installieren Sie es auch mithilfe von npm
npm install @azure/identity
Konfigurieren von TypeScript
TypeScript-Benutzer müssen Knotentypdefinitionen installiert haben:
npm install @types/node
Sie müssen auch in Ihrem tsconfig.json aktivieren compilerOptions.allowSyntheticDefaultImports
. Beachten Sie, dass , allowSyntheticDefaultImports
wenn Sie aktiviert compilerOptions.esModuleInterop
haben, standardmäßig aktiviert ist. Weitere Informationen finden Sie im Handbuch für Compileroptionen von TypeScript .
Wichtige Begriffe
- Der Geheimclient ist die primäre Schnittstelle für die Interaktion mit den API-Methoden im Zusammenhang mit Geheimnissen in der Azure Key Vault-API aus einer JavaScript-Anwendung. Nach der Initialisierung stellt es einen grundlegenden Satz von Methoden bereit, die zum Erstellen, Lesen, Aktualisieren und Löschen von Geheimnissen verwendet werden können.
- Eine Geheimnisversion ist eine Version eines Geheimnisses im Key Vault. Jedes Mal, wenn ein Benutzer einem eindeutigen Geheimnisnamen einen Wert zuweist, wird eine neue Version dieses Geheimnisses erstellt. Beim Abrufen eines Geheimnisses durch einen Namen wird immer der zuletzt zugewiesene Wert zurückgegeben, es sei denn, die Abfrage wird mit einer bestimmten Version versehen.
- Vorläufiges Löschen ermöglicht es Key Vaults, das Löschen und Löschen in zwei separaten Schritten zu unterstützen, sodass gelöschte Geheimnisse nicht sofort verloren gehen. Dies geschieht nur, wenn für die Key Vault vorläufiges Löschen aktiviert ist.
- Eine geheime Sicherung kann aus jedem erstellten Geheimnis generiert werden. Diese Sicherungen werden als Binärdaten verwendet und können nur verwendet werden, um ein zuvor gelöschtes Geheimnis neu zu generieren.
Authentifizieren mit Azure Active Directory
Der Key Vault-Dienst verwendet Azure Active Directory, um Anforderungen an seine APIs zu authentifizieren. Das @azure/identity
Paket bietet eine Vielzahl von Anmeldeinformationstypen, die Ihre Anwendung dazu verwenden kann. Die INFOdatei für @azure/identity
enthält weitere Details und Beispiele für die ersten Schritte.
Um mit dem Azure Key Vault-Dienst zu interagieren, müssen Sie eine instance der SecretClient
Klasse, eine Tresor-URL und ein Anmeldeinformationsobjekt erstellen. Die in diesem Dokument gezeigten Beispiele verwenden ein Anmeldeinformationsobjekt namens DefaultAzureCredential
, das für die meisten Szenarien geeignet ist, einschließlich lokaler Entwicklungs- und Produktionsumgebungen. Darüber hinaus wird die Verwendung einer verwalteten Identität für die Authentifizierung in Produktionsumgebungen empfohlen.
Weitere Informationen zu verschiedenen Authentifizierungsmethoden und den entsprechenden Anmeldeinformationstypen finden Sie in der Dokumentation zu Azure Identity.
Hier sehen Sie ein kurzes Beispiel. Importieren DefaultAzureCredential
Sie zunächst und SecretClient
:
const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@azure/keyvault-secrets");
Sobald diese importiert wurden, können wir als nächstes eine Verbindung mit dem Key Vault-Dienst herstellen:
const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@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 secrets client and connect to the service
const client = new SecretClient(url, credential);
Angeben der Azure Key Vault-Dienst-API-Version
Standardmäßig verwendet dieses Paket die neueste Azure Key Vault-Dienstversion, nämlich 7.1
. Die einzige andere Version, die unterstützt wird, ist 7.0
. Sie können die verwendete Dienstversion ändern, indem Sie die Option serviceVersion
im Clientkonstruktor wie unten gezeigt festlegen:
const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@azure/keyvault-secrets");
const credential = new DefaultAzureCredential();
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",
});
Beispiele
Die folgenden Abschnitte enthalten Codeausschnitte, die einige der häufigen Aufgaben mit Azure Key Vault Secrets behandeln. Die hier behandelten Szenarien bestehen aus:
- Erstellen und Festlegen eines Geheimnisses
- Abrufen eines Geheimnisses.
- Erstellen und Aktualisieren von Geheimnissen mit Attributen.
- Löschen eines Geheimnisses.
- Iterieren von Listen mit Geheimnissen.
Erstellen und Festlegen eines Geheimnisses
setSecret
weist dem angegebenen Geheimnisnamen einen angegebenen Wert zu. Wenn bereits ein Geheimnis mit demselben Namen vorhanden ist, wird eine neue Version des Geheimnisses erstellt.
const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@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";
async function main() {
const result = await client.setSecret(secretName, "MySecretValue");
console.log("result: ", result);
}
main();
Abrufen eines Geheimnisses
Die einfachste Möglichkeit zum Zurücklesen von Geheimnissen aus dem Tresor besteht darin, ein Geheimnis anhand des Namens abzurufen. Dadurch wird die neueste Version des Geheimnisses abgerufen. Sie können optional eine andere Version des Schlüssels abrufen, wenn Sie ihn als Teil der optionalen Parameter angeben.
const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@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";
async function main() {
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);
}
main();
Erstellen und Aktualisieren von Geheimnissen mit Attributen
Ein Geheimnis kann mehr Informationen als sein Name und seinen Wert enthalten. Sie können auch die folgenden Attribute enthalten:
tags
: Beliebiger Satz von Schlüsselwerten, die zum Suchen und Filtern von Geheimnissen verwendet werden können.contentType
: Jede Zeichenfolge, die verwendet werden kann, um dem Empfänger des Geheimnisses zu helfen, zu verstehen, wie der Geheimniswert verwendet wird.enabled
: Ein boolescher Wert, der bestimmt, ob der Geheimwert gelesen werden kann oder nicht.notBefore
: Ein bestimmtes Datum, nach dem der Geheimwert abgerufen werden kann.expiresOn
: Ein bestimmtes Datum, nach dem der Geheimwert nicht abgerufen werden kann.
Ein Objekt mit diesen Attributen kann wie folgt als dritter Parameter von setSecret
gesendet werden, direkt nach dem Namen und Wert des Geheimnisses:
const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@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";
async function main() {
const result = await client.setSecret(secretName, "MySecretValue", {
enabled: false,
});
}
main();
Dadurch wird eine neue Version desselben Geheimnisses erstellt, die über die zuletzt bereitgestellten Attribute verfügt.
Attribute können auch wie folgt auf eine vorhandene geheime Version mit updateSecretProperties
aktualisiert werden:
const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@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";
async function main() {
const result = await client.getSecret(secretName);
await client.updateSecretProperties(secretName, result.properties.version, { enabled: false });
}
main();
Löschen eines Geheimnisses
Die beginDeleteSecret
-Methode beginnt mit dem Löschen eines Geheimnisses.
Dieser Prozess erfolgt im Hintergrund, sobald die erforderlichen Ressourcen verfügbar sind.
const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@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";
async function main() {
await client.beginDeleteSecret(secretName);
}
main();
Wenn vorläufiges Löschen für die Key Vault aktiviert ist, wird das Geheimnis durch diesen Vorgang nur als gelöschtes Geheimnis bezeichnet. Ein gelöschtes Geheimnis kann nicht aktualisiert werden. Sie können nur gelesen, wiederhergestellt oder gelöscht werden.
const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@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";
async function main() {
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);
}
main();
Da Geheimnisse einige Zeit in Anspruch nehmen, bis sie vollständig gelöscht werden, beginDeleteSecret
gibt ein Poller-Objekt zurück, das den zugrunde liegenden Langlaufvorgang gemäß unseren Richtlinien nachverfolgt: https://azure.github.io/azure-sdk/typescript_design.html#ts-lro
Mit dem empfangenen Abfrageprogramm können Sie das gelöschte Geheimnis abrufen, indem Sie aufrufen poller.getResult()
.
Sie können auch warten, bis der Löschvorgang abgeschlossen ist, entweder indem Sie einzelne Dienstaufrufe ausführen, bis das Geheimnis gelöscht wird, oder indem Sie warten, bis der Vorgang abgeschlossen ist:
const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@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";
async function main() {
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);
}
main();
Eine weitere Möglichkeit, zu warten, bis das Geheimnis vollständig gelöscht ist, besteht darin, einzelne Aufrufe wie folgt auszuführen:
const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@azure/keyvault-secrets");
const { delay } = require("@azure/core-util");
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";
async function main() {
const poller = await client.beginDeleteSecret(secretName);
while (!poller.isDone()) {
await poller.poll();
await delay(5000);
}
console.log(`The secret ${secretName} is fully deleted`);
}
main();
Durchlaufen von Geheimnislisten
Mithilfe des SecretClient können Sie alle Geheimnisse in einem Key Vault sowie alle gelöschten Geheimnisse und die Versionen eines bestimmten Geheimnisses abrufen und durchlaufen. Die folgenden API-Methoden sind verfügbar:
listPropertiesOfSecrets
listet alle ihre nicht gelöschten Geheimnisse nur in den neuesten Versionen nach ihren Namen auf.listDeletedSecrets
listet alle gelöschten Geheimnisse nur in den neuesten Versionen mit ihren Namen auf.listPropertiesOfSecretVersions
listet alle Versionen eines Geheimnisses basierend auf einem Geheimnisnamen auf.
Diese kann wie folgt verwendet werden:
const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@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";
async function main() {
for await (let secretProperties of client.listPropertiesOfSecrets()) {
console.log("Secret properties: ", secretProperties);
}
for await (let deletedSecret of client.listDeletedSecrets()) {
console.log("Deleted secret: ", deletedSecret);
}
for await (let versionProperties of client.listPropertiesOfSecretVersions(secretName)) {
console.log("Version properties: ", versionProperties);
}
}
main();
Alle diese Methoden geben alle verfügbaren Ergebnisse auf einmal zurück. Um sie nach Seiten abzurufen, fügen Sie .byPage()
direkt nach dem Aufrufen der API-Methode, die Sie verwenden möchten, wie folgt hinzu:
const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@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";
async function main() {
for await (let page of client.listPropertiesOfSecrets().byPage()) {
for (let secretProperties of page) {
console.log("Secret properties: ", secretProperties);
}
}
for await (let page of client.listDeletedSecrets().byPage()) {
for (let deletedSecret of page) {
console.log("Deleted secret: ", deletedSecret);
}
}
for await (let page of client.listPropertiesOfSecretVersions(secretName).byPage()) {
for (let versionProperties of page) {
console.log("Version properties: ", versionProperties);
}
}
}
main();
Problembehandlung
Weitere Informationen zur Diagnose verschiedener Fehlerszenarien finden Sie in unserem Leitfaden zur Problembehandlung .
Die Aktivierung der Protokollierung kann hilfreiche Informationen über Fehler aufdecken. Um ein Protokoll von HTTP-Anforderungen und -Antworten anzuzeigen, legen Sie die Umgebungsvariable AZURE_LOG_LEVEL
auf info
fest. Alternativ kann die Protokollierung zur Laufzeit aktiviert werden, indem Sie setLogLevel
in @azure/logger
aufrufen:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Nächste Schritte
Weitere Codebeispiele finden Sie unter den folgenden Links:
- Key Vault Secrets Samples (JavaScript)
- Key Vault Geheimnisbeispiele (TypeScript)
- Testfälle für Key Vault Geheimnisse
Mitwirken
Wenn Sie an dieser Bibliothek mitwirken möchten, lesen Sie die Anleitung für Mitwirkende, um mehr darüber zu erfahren, wie Sie den Code erstellen und testen können.
Azure SDK for JavaScript