Zelfstudie: Azure Key Vault gebruiken met een virtuele machine in JavaScript

Azure Key Vault helpt u bij het beveiligen van sleutels, geheimen en certificaten, zoals API-sleutels en databaseverbindingsreeksen.

In deze zelfstudie stelt u een Node.js toepassing in om informatie uit Azure Key Vault te lezen met behulp van een beheerde identiteit voor Azure resources. U leert het volgende:

  • Maak een Key Vault.
  • Een geheim opslaan in Key Vault
  • Een Azure virtuele Linux-machine maken
  • Een Beheerde identiteit inschakelen voor de virtuele machine
  • Verdeel de vereiste machtigingen voor de consoletoepassing om gegevens uit Key Vault te lezen
  • Een geheim ophalen uit Key Vault

Lees Key Vault basisconcepten voordat u begint.

Als u geen Azure abonnement hebt, maakt u een free-account.

Prerequisites

Voor Windows, Mac en Linux:

  • Git
  • Een huidige versie van de Azure CLI. Voer deze opdracht uit az --version om de geïnstalleerde versie te controleren.

Aanmelden bij Azure

Meld u aan bij Azure met de Azure CLI:

az login

Maak een resourcegroep en een sleutelkluis aan

In deze quickstart wordt een vooraf aangemaakte Azure-sleutelkluis gebruikt. U kunt een sleutelkluis maken door de stappen in deze quickstarts te volgen:

U kunt deze Azure CLI opdrachten ook uitvoeren.

Important

Elke sleutelkluis moet een unieke naam hebben. Vervang <vault-name> door de naam van uw sleutelkluis in de volgende voorbeelden.

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

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

Vul uw sleutelkluis met een geheim

We gaan een geheim maken met de naam mySecret en de waarde Success!. Een geheim kan een wachtwoord, een SQL-verbindingsreeks of andere informatie zijn die u nodig hebt om zowel veilig als beschikbaar te blijven voor uw toepassing.

Gebruik de volgende opdracht om een geheim toe te voegen aan uw zojuist gemaakte sleutelkluis:

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

Een virtuele machine maken

Maak een virtuele machine met de naam myVM met behulp van een van de volgende methoden:

Linux Windows
Azure CLI Azure CLI
PowerShell PowerShell
Azure-portal Azure-portal

Als u een Virtuele Linux-machine wilt maken met behulp van de Azure CLI, gebruikt u de opdracht az vm create. In het volgende voorbeeld wordt een gebruikersaccount met de naam azureusertoegevoegd. De --generate-ssh-keys parameter genereert een SSH-sleutel en slaat deze op in de standaardsleutellocatie (~/.ssh).

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

Noteer de waarde van publicIpAddress in de uitvoer.

Een identiteit toewijzen aan de virtuele machine

Maak een door het systeem toegewezen beheerde identiteit voor de virtuele machine met behulp van de opdracht az vm identity assign :

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

Noteer de door het systeem toegewezen identiteit in de uitvoer:

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

Machtigingen toewijzen aan de VM-identiteit

Wijs de beheerde identiteit van de VM de rol Key Vault-geheimengebruiker toe voor de sleutelkluis:

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>

Aanmelden bij de VM

Als u zich wilt aanmelden bij de virtuele machine, volgt u de instructies in Verbinding maken en meldt u zich aan bij een Azure virtuele machine met Linux of Verbinding maken en meldt u zich aan bij een Azure virtuele machine waarop Windows wordt uitgevoerd.

Als u zich wilt aanmelden bij een Linux-VM, gebruikt u ssh met de <public-ip-address> uit de stap Een virtuele machine maken:

ssh azureuser@<public-ip-address>

Node.js- en NPM-bibliotheken installeren op de VIRTUELE machine

Installeer op de VIRTUELE machine de twee npm-bibliotheken die door het voorbeeldscript worden gebruikt: @azure/keyvault-secrets en @azure/identity.

  1. Installeer Node.js en npm in de SSH-terminal:

    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && \
        sudo apt-get install -y nodejs
    
  2. Maak een app-folder en installeer het Node.js-pakket.

    mkdir app && cd app && npm init -y
    
  3. Installeer de Azure-pakketten metnpm:

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

Het JavaScript-voorbeeldbestand maken en bewerken

  1. Maak op de VM in de map app een JavaScript-bestand met de naam index.js:

    touch index.js
    
  2. Open het bestand met de Nano-teksteditor :

    nano index.js
    
  3. Plak de volgende code in de editor en vervang deze <vault-name> door de naam van uw sleutelkluis:

    // 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. Sla het bestand op met Ctrl+X.

  5. Voer bij de Save modified buffer? prompt y in.

  6. Druk op File Name to Write: index.js bij de prompt.

De voorbeeld-Node.js-app uitvoeren

Voer index.jsuit. Als alles correct is geconfigureerd, drukt de app de geheime waarde af:

node index.js

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

De hulpbronnen opschonen

Wanneer u ze niet meer nodig hebt, verwijdert u de VIRTUELE machine en de sleutelkluis. De snelste manier is om de resourcegroep te verwijderen waartoe ze behoren:

az group delete -g "myResourceGroup"

Volgende stappen

REST-API van Azure Key Vault