Lernprogramm: Verwenden von Azure Key Vault mit einem virtuellen Computer in JavaScript

Azure Key Vault hilft Ihnen beim Schützen von Schlüsseln, geheimen Schlüsseln und Zertifikaten, z. B. API-Schlüssel und Datenbankverbindungszeichenfolgen.

In diesem Lernprogramm richten Sie eine Node.js Anwendung ein, um Informationen aus Azure Key Vault mithilfe einer verwalteten Identität für Azure Ressourcen zu lesen. Hier erfahren Sie, wie Sie:

  • Erstellen eines Schlüsseltresors
  • Speichern eines geheimen Schlüssels in Key Vault
  • Erstellen eines Azure virtuellen Linux-Computers
  • Aktivieren einer verwalteten Identität für den virtuellen Computer
  • Erteilen der erforderlichen Berechtigungen für die Konsolenanwendung zum Lesen von Daten aus Key Vault
  • Abrufen eines geheimen Schlüssels aus Key Vault

Lesen Sie vor Beginn Key Vault grundlegende Konzepte.

Wenn Sie nicht über ein Azure-Abonnement verfügen, erstellen Sie ein free-Konto.

Prerequisites

Für Windows, Mac und Linux:

  • Git
  • Eine aktuelle Version des Azure CLI. Führen Sie die Ausführung az --version aus, um die installierte Version zu überprüfen.

Anmelden bei Azure

Melden Sie sich mit dem Azure CLI bei Azure an:

az login

Erstellen einer Ressourcengruppe und eines Schlüsseltresors

In dieser Schnellstartanleitung wird ein vorkonfigurierter Azure Key Vault verwendet. Sie können einen Schlüsseltresor erstellen, indem Sie die Schritte in den folgenden Schnellstarts ausführen:

Alternativ können Sie diese Azure CLI Befehle ausführen.

Important

Jeder Schlüsseltresor muss einen eindeutigen Namen haben. Ersetzen Sie in den folgenden Beispielen <vault-name> durch den Namen Ihres Schlüsseltresors.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true

Einfügen eines Geheimnisses in Ihren Schlüsseltresor

Erstellen Sie ein Geheimnis mit dem Namen mySecret und dem Wert Success! . Ein Geheimer Schlüssel kann ein Kennwort, ein SQL-Verbindungszeichenfolge oder andere Informationen sein, die Sie benötigen, um sowohl sicher als auch für Ihre Anwendung verfügbar zu sein.

Fügen Sie Ihrem neu erstellten Schlüsseltresor mit dem folgenden Befehl ein Geheimnis hinzu:

az keyvault secret set --vault-name "<vault-name>" --name "mySecret" --value "Success!"

Erstellen eines virtuellen Computers

Erstellen Sie einen virtuellen Computer mit dem Namen "myVM ", indem Sie eine der folgenden Methoden verwenden:

Linux Windows
Azure CLI Azure CLI
PowerShell PowerShell
Azure Portal Azure Portal

Verwenden Sie zum Erstellen einer Linux-VM mithilfe des Azure CLI den Befehl "az vm create". Im folgenden Beispiel wird ein Benutzerkonto mit dem Namen azureuserhinzugefügt. Der --generate-ssh-keys Parameter generiert einen SSH-Schlüssel und speichert ihn am Standardschlüsselspeicherort (~/.ssh).

az vm create \
  --resource-group <resource-group> \
  --name myVM \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --generate-ssh-keys

Beachten Sie den Wert von publicIpAddress in der Ausgabe.

Zuweisen einer Identität zum virtuellen Computer

Erstellen Sie eine vom System zugewiesene verwaltete Identität für den virtuellen Computer mithilfe des Befehls "az vm identity assign ":

az vm identity assign --name "myVM" --resource-group "<resource-group>"

Beachten Sie die vom System zugewiesene Identität in der Ausgabe:

{
  "systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "userAssignedIdentities": {}
}

Zuweisen von Berechtigungen für die VM-Identität

Weisen Sie der verwalteten Identität der VM für den Schlüsseltresor die Rolle Key Vault-Geheimnisbenutzer zu:

az role assignment create --role "Key Vault Secrets User" --assignee "<system-assigned-identity>" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/<vault-name>

Melden Sie sich bei der VM an

Um sich bei der VM anzumelden, folgen Sie den Anweisungen in Connect und melden Sie sich bei einem virtuellen Azure Computer mit Linux oder Connect an und melden Sie sich bei einem Azure virtuellen Computer an, auf dem Windows ausgeführt wird.

Verwenden Sie zum Anmelden bei einer Linux-VM ssh zusammen mit <public-ip-address> aus dem Schritt Erstellen eines virtuellen Computers:

ssh azureuser@<public-ip-address>

Installieren von Node.js und npm-Bibliotheken auf der VM

Installieren Sie auf dem virtuellen Computer die beiden npm-Bibliotheken, die das Beispielskript verwendet: @azure/keyvault-secrets und @azure/Identity.

  1. Installieren Sie im SSH-Terminal Node.js und npm:

    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && \
        sudo apt-get install -y nodejs
    
  2. Erstellen Sie ein App-Verzeichnis, und initialisieren Sie das Node.js-Paket:

    mkdir app && cd app && npm init -y
    
  3. Installieren Sie die Azure Pakete mitnpm:

    npm install @azure/keyvault-secrets @azure/identity
    

Erstellen und Bearbeiten der JavaScript-Beispieldatei

  1. Erstellen Sie auf dem virtuellen Computer im app Verzeichnis eine JavaScript-Datei mit dem Namen index.js:

    touch index.js
    
  2. Öffnen Sie die Datei mit dem Nano-Text-Editor:

    nano index.js
    
  3. Fügen Sie den folgenden Code in den Editor ein und ersetzen Sie <vault-name> durch den Namen Ihres Schlüsseltresors:

    // index.js
    
    const { SecretClient } = require("@azure/keyvault-secrets");
    const { DefaultAzureCredential } = require("@azure/identity");
    
    // Your Azure Key Vault name and secret name
    const keyVaultName = "<vault-name>";
    const keyVaultUri = `https://${keyVaultName}.vault.azure.net`;
    const secretName = "mySecret";
    
    // Authenticate to Azure
    const credential = new DefaultAzureCredential();
    const client = new SecretClient(keyVaultUri, credential);
    
    // Get Secret with Azure SDK for JS
    const getSecret = async (secretName) => {
    
        return (await client.getSecret(secretName)).value;
    }
    
    getSecret(secretName).then(secretValue => {
        console.log(`The value of secret '${secretName}' in '${keyVaultName}' is: '${secretValue}'`);
    }).catch(err => {
        console.log(err);
    })
    
  4. Speichern Sie die Datei mit STRG+X.

  5. Geben Sie an der Save modified buffer? Eingabeaufforderung "y" ein.

  6. Drücken Sie bei der Aufforderung File Name to Write: index.js die Eingabe.

Ausführen der Node.js-Beispiel-App

Führen Sie index.js aus. Wenn alles richtig konfiguriert ist, druckt die App den geheimen Wert:

node index.js

The value of secret 'mySecret' in '<vault-name>' is: 'Success!'

Bereinigen von Ressourcen

Wenn Sie sie nicht mehr benötigen, löschen Sie die VM und den Schlüsseltresor. Die schnellste Möglichkeit besteht darin, die Ressourcengruppe zu löschen, zu der sie gehören:

az group delete -g "myResourceGroup"

Nächste Schritte

Azure Key Vault REST-API