Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hier finden Sie Informationen zu den ersten Schritten mit der Azure Key Vault-Geheimnisclientbibliothek für JavaScript. Azure Key Vault ist ein Clouddienst, der als sicherer Geheimnisspeicher fungiert. Dadurch können Schlüssel, Kennwörter, Zertifikate und andere Geheimnisse sicher gespeichert werden. Azure Key Vault-Instanzen können über das Azure-Portal erstellt und verwaltet werden. In dieser Schnellstartanleitung erfahren Sie, wie Sie mithilfe der JavaScript-Clientbibliothek Geheimnisse in einem Azure-Schlüsseltresor erstellen, daraus abrufen und löschen.
Ressourcen der Key Vault-Clientbibliothek:
API-Referenzdokumentation | Quellcode der Bibliothek | Paket (npm)
Weitere Informationen zu Key Vault und Geheimnissen finden Sie unter folgenden Links:
Voraussetzungen
- Azure-Abonnement (kostenloses Abonnement erstellen)
- Aktuell Node.js LTS.
- Azure-Befehlszeilenschnittstelle
Voraussetzungen
- Azure-Abonnement (kostenloses Abonnement erstellen)
- Aktuell Node.js LTS.
- TypeScript 5+
- Azure-Befehlszeilenschnittstelle.
In dieser Schnellstartanleitung wird davon ausgegangen, dass Sie die Azure CLI verwenden.
Anmelden bei Azure
Führen Sie den Befehl
loginaus.az loginDie CLI öffnet Ihren Standardbrowser, sofern sie dazu in der Lage ist, und lädt eine Azure-Anmeldeseite.
Öffnen Sie andernfalls die Browserseite https://aka.ms/devicelogin, und geben Sie den in Ihrem Terminal angezeigten Autorisierungscode ein.
Melden Sie sich im Browser mit Ihren Anmeldeinformationen an.
Erstellen einer Ressourcengruppe und eines Schlüsseltresors
Verwenden Sie den Befehl
az group create, um eine Ressourcengruppe zu erstellen:az group create --name myResourceGroup --location eastusFalls gewünscht, können Sie „eastus“ in eine Region ändern, die näher an Ihrem Standort liegt.
Verwenden Sie
az keyvault create, um den Schlüsseltresor zu erstellen:az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroupErsetzen Sie
<your-unique-keyvault-name>durch einen Namen, der innerhalb von Azure eindeutig ist. In der Regel verwenden Sie Ihren persönlichen oder Firmennamen zusammen mit Ziffern und anderen Bezeichnern.
Gewähren des Zugriffs auf Ihren Schlüsseltresor
Um über die rollenbasierte Zugriffskontrolle (Role-Based Access Control, RBAC) Berechtigungen für Ihren Schlüsseltresor zu erhalten, weisen Sie Ihrem Benutzerprinzipalname (User Principal Name, UPN) mit dem Azure CLI-Befehl az role assignment create eine Rolle zu.
az role assignment create --role "Key Vault Secrets Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Ersetzen Sie <upn>, <subscription-id>, <resource-group-name> und <your-unique-keyvault-name> durch Ihre tatsächlichen Werte. Ihr Benutzerprinzipalname (UPN) hat in der Regel das Format einer E-Mail-Adresse (z. B. username@domain.com).
Erstellen einer neuen Node.js-Anwendung
Erstellen Sie eine Node.js-Anwendung, die Ihren Schlüsseltresor verwendet.
Erstellen Sie in einem Terminal einen Ordner namens
key-vault-node-appund wechseln Sie in diesen Ordner:mkdir key-vault-node-app && cd key-vault-node-appInitialisieren Sie das Node.js-Projekt:
npm init -y
Installieren von Key Vault-Paketen
Installieren Sie über das Terminal die Azure Key Vault-Geheimnisclientbibliothek @azure/keyvault-secrets für Node.js.
npm install @azure/keyvault-secretsInstallieren Sie das Paket für die Azure-Identitätsclientbibliothek, @azure/identity, um sich bei einem Key Vault zu authentifizieren.
npm install @azure/identity
Gewähren des Zugriffs auf Ihren Schlüsseltresor
Um über die rollenbasierte Zugriffskontrolle (Role-Based Access Control, RBAC) Berechtigungen für Ihren Schlüsseltresor zu erhalten, weisen Sie Ihrem Benutzerprinzipalname (User Principal Name, UPN) mit dem Azure CLI-Befehl az role assignment create eine Rolle zu.
az role assignment create --role "Key Vault Secrets Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Ersetzen Sie <upn>, <subscription-id>, <resource-group-name> und <your-unique-keyvault-name> durch Ihre tatsächlichen Werte. Ihr Benutzerprinzipalname (UPN) hat in der Regel das Format einer E-Mail-Adresse (z. B. username@domain.com).
Festlegen von Umgebungsvariablen
Diese Anwendung verwendet den Namen des Schlüsseltresors als Umgebungsvariable namens KEY_VAULT_URL.
set KEY_VAULT_URL=<your-key-vault-endpoint>
Authentifizieren und Erstellen eines Clients
Anwendungsanforderungen an die meisten Azure-Dienste müssen autorisiert werden. Die Verwendung der von der Azure-Identitätsclientbibliothek bereitgestellten Methode DefaultAzureCredential ist der empfohlene Ansatz zum Implementieren von kennwortlosen Verbindungen mit Azure-Diensten in Ihrem Code.
DefaultAzureCredential unterstützt mehrere Authentifizierungsmethoden und bestimmt, welche Methode zur Laufzeit verwendet werden soll. Bei diesem Ansatz kann Ihre App unterschiedliche Authentifizierungsmethoden in verschiedenen Umgebungen (lokal gegenüber Produktion) verwenden, ohne umgebungsspezifischen Code zu implementieren.
In diesem Schnellstart authentifiziert sich DefaultAzureCredential mit den Anmeldeinformationen des lokalen Entwicklungsbenutzers, der bei der Azure-Befehlszeilenschnittstelle angemeldet ist, beim Schlüsseltresor. Wenn die Anwendung in Azure bereitgestellt wird, kann derselbe DefaultAzureCredential-Code automatisch eine verwaltete Identität ermitteln und verwenden, die App Service, einem virtuellen Computer oder anderen Diensten zugewiesen ist. Weitere Informationen finden Sie in der Übersicht zu verwalteten Identitäten.
In diesem Code wird der Endpunkt Ihres Schlüsseltresors verwendet, um den Schlüsseltresorclient zu erstellen. Das Endpunktformat sieht wie https://<your-key-vault-name>.vault.azure.net aus, kann sich jedoch für souveräne Clouds ändern. Weitere Informationen zur Authentifizierung beim Schlüsseltresor finden Sie im Entwicklerhandbuch.
Codebeispiel
In den folgenden Codebeispielen wird gezeigt, wie Sie einen Client erstellen und ein Geheimnis festlegen, abrufen und löschen.
Dieser Code verwendet die folgenden Key Vault-Geheimnisklassen und -methoden:
Einrichten des App-Frameworks
Erstellen Sie eine neue Textdatei und fügen Sie den folgenden Code in die Datei index.js ein.
const { SecretClient } = require("@azure/keyvault-secrets"); const { DefaultAzureCredential } = require("@azure/identity"); async function main() { // If you're using MSI, DefaultAzureCredential should "just work". // Otherwise, DefaultAzureCredential expects the following three environment variables: // - AZURE_TENANT_ID: The tenant ID in Azure Active Directory // - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant // - AZURE_CLIENT_SECRET: The client secret for the registered application const credential = new DefaultAzureCredential(); const keyVaultUrl = process.env["KEY_VAULT_URL"]; if(!keyVaultUrl) throw new Error("KEY_VAULT_URL is empty"); const client = new SecretClient(keyVaultUrl, credential); // Create a secret // The secret can be a string of any kind. For example, // a multiline text block such as an RSA private key with newline characters, // or a stringified JSON object, like `JSON.stringify({ mySecret: 'MySecretValue'})`. const uniqueString = new Date().getTime(); const secretName = `secret${uniqueString}`; const result = await client.setSecret(secretName, "MySecretValue"); console.log("result: ", result); // Read the secret we created const secret = await client.getSecret(secretName); console.log("secret: ", secret); // Update the secret with different attributes const updatedSecret = await client.updateSecretProperties(secretName, result.properties.version, { enabled: false }); console.log("updated secret: ", updatedSecret); // Delete the secret immediately without ability to restore or purge. await client.beginDeleteSecret(secretName); } main().catch((error) => { console.error("An error occurred:", error); process.exit(1); });
Ausführen der Beispielanwendung
Führen Sie die App aus:
node index.jsDie Methoden create und get geben ein vollständiges JSON-Objekt für das Zertifikat zurück:
{ "value": "MySecretValue", "name": "secret1637692472606", "properties": { "createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https: //YOUR-KEYVAULT-ENDPOINT.vault.azure.net/secrets/secret1637692472606/YOUR-VERSION", "vaultUrl": "https: //YOUR-KEYVAULT-ENDPOINT.vault.azure.net", "version": "YOUR-VERSION", "name": "secret1637692472606" } }Die Update-Methode gibt die Eigenschaften-Name/Wert-Paare zurück:
"createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https: //YOUR-KEYVAULT-ENDPOINT/secrets/secret1637692472606/YOUR-VERSION", "vaultUrl": "https: //YOUR-KEYVAULT-ENDPOINT", "version": "YOUR-VERSION", "name": "secret1637692472606"
Erstellen Sie eine neue Textdatei, und fügen Sie den folgenden Code in die Datei index.js ein.
import { SecretClient, KeyVaultSecret, SecretProperties, } from "@azure/keyvault-secrets"; import { DefaultAzureCredential } from "@azure/identity"; import "dotenv/config"; // Passwordless credential const credential = new DefaultAzureCredential(); // Get Key Vault name from environment variables // such as `https://${keyVaultName}.vault.azure.net` const keyVaultUrl = process.env.KEY_VAULT_URL; if (!keyVaultUrl) throw new Error("KEY_VAULT_URL is empty"); function printSecret(secret: KeyVaultSecret): void { const { name, value, properties } = secret; const { enabled, expiresOn, createdOn } = properties; console.log("Secret: ", { name, value, enabled, expiresOn, createdOn }); } function printSecretProperties(secret: SecretProperties): void { const { name, enabled, expiresOn, createdOn } = secret; console.log("Secret: ", { name, enabled, expiresOn, createdOn }); } async function main(): Promise<void> { // Create a new SecretClient const client = new SecretClient(keyVaultUrl, credential); // Create a unique secret name const uniqueString = new Date().getTime().toString(); const secretName = `secret${uniqueString}`; // Create a secret const createSecretResult = await client.setSecret( secretName, "MySecretValue" ); printSecret(createSecretResult); // Get the secret by name const getSecretResult = await client.getSecret(secretName); printSecret(getSecretResult); // Update properties const updatedSecret = await client.updateSecretProperties( secretName, getSecretResult.properties.version, { enabled: false, } ); printSecretProperties(updatedSecret); // Delete secret (without immediate purge) const deletePoller = await client.beginDeleteSecret(secretName); await deletePoller.pollUntilDone(); } main().catch((error) => { console.error("An error occurred:", error); process.exit(1); });
Ausführen der Beispielanwendung
Erstellen Sie die TypeScript-App:
tscFühren Sie die App aus:
node index.jsDie Methoden create und get geben ein vollständiges JSON-Objekt für das Zertifikat zurück:
{ "value": "MySecretValue", "name": "secret1637692472606", "properties": { "createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https: //YOUR-KEYVAULT-ENDPOINT.vault.azure.net/secrets/secret1637692472606/YOUR-VERSION", "vaultUrl": "https: //YOUR-KEYVAULT-ENDPOINT.vault.azure.net", "version": "YOUR-VERSION", "name": "secret1637692472606" } }Die Update-Methode gibt die Eigenschaften-Name/Wert-Paare zurück:
"createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https: //YOUR-KEYVAULT-ENDPOINT/secrets/secret1637692472606/YOUR-VERSION", "vaultUrl": "https: //YOUR-KEYVAULT-ENDPOINT", "version": "YOUR-VERSION", "name": "secret1637692472606"
Integration mit App-Konfiguration
Das Azure SDK bietet eine Hilfsmethode, parseKeyVaultSecretIdentifier, um die angegebene Key Vault-Geheim-ID zu analysieren. Dies ist erforderlich, wenn Sie App-Konfigurationsreferenzen auf Key Vault verwenden. App-Konfiguration speichert die geheime Key Vault-ID. Sie benötigen die Methode parseKeyVaultSecretIdentifier, um diese ID zu analysieren und den geheimen Namen abzurufen. Sobald Sie den geheimen Namen haben, können Sie den aktuellen geheimen Wert mit Code aus dieser Schnellstartanleitung erhalten.
Nächste Schritte
In dieser Schnellstartanleitung haben Sie einen Schlüsseltresor erstellt, ein Geheimnis gespeichert und dieses Geheimnis abgerufen. Weitere Informationen zu Key Vault und zur Integration in Ihre Anwendungen finden Sie in den folgenden Artikeln: