Delen via


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

Met Azure Key Vault kunt u sleutels, geheimen en certificaten beveiligen, 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 beheerde identiteiten voor Azure-resources. U leert het volgende:

  • Maak een Key Vault.
  • Een geheim opslaan in Key Vault
  • Een virtuele Linux-machine maken
  • Een Beheerde identiteit inschakelen voor de virtuele machine
  • De vereiste machtigingen verlenen aan de consoletoepassing om gegevens te lezen uit Key Vault
  • Haal een geheim op uit de Key Vault

Voordat u begint, lees Basisconcepten van Key Vault.

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

Prerequisites

Voor Windows, Mac en Linux:

  • Git
  • Voor deze zelfstudie moet u de Azure CLI lokaal uitvoeren. Azure CLI versie 2.0.4 of hoger moet geïnstalleerd zijn. Voer az --version uit om de versie te vinden. Als u de CLI moet installeren of upgraden, zie Azure CLI 2.0 installeren.

Meld u aan bij Azure

Als u zich bij Azure wilt aanmelden met de Azure CLI, voert u het volgende in:

az login

Maak een resourcegroep en een sleutelkluis aan

Deze quickstart gebruikt een vooraf aangemaakte Azure-sleutelkluis. 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 zijn, een SQL-verbindingsreeks of andere gegevens die u zowel veilig als beschikbaar wilt houden voor de 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

Gebruik een van de volgende methoden om een VM met de naam myVM te maken:

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

Als u een Linux-VM 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 azureuser toegevoegd. De parameter --generate-ssh-keys wordt gebruikt om automatisch een SSH-sleutel te genereren en deze te plaatsen 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 identiteit voor de virtuele machine met de opdracht az vm identity assign van de Azure CLI:

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

Bekijk de door het systeem toegewezen identiteit die wordt weergegeven in de volgende code. De uitvoer van de vorige opdracht ziet er als volgt uit:

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

Machtigingen toewijzen aan de VM-identiteit

U kunt nu de eerder gemaakte identiteitsmachtigingen toewijzen aan uw sleutelkluis door de volgende opdracht uit te voeren:

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 nieuwe virtuele machine

Als u zich wilt aanmelden bij de virtuele machine, volgt u de instructies in Verbinding maken met en aanmelden bij een virtuele Azure-machine met Linux of Verbinding maken en aanmelden bij een virtuele Azure-machine met Windows.

Als u zich wilt aanmelden bij een Virtuele Linux-machine, kunt u de ssh-opdracht gebruiken met de <public-ip-address> opgegeven in 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 we gaan gebruiken in ons JavaScript-script: @azure/keyvault-secrets en @azure/identity.

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

    curl -sL https://deb.nodesource.com/setup_14.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-servicepakketten met behulp van npm:

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

Het JavaScript-voorbeeldbestand maken en bewerken

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

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

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

    // 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. Wanneer u hier om wordt gevraagdSave modified buffer?, voert u y in.

  6. Wanneer hier om wordt gevraagdFile Name to Write: index.js, typt u Enter.

De voorbeeld-Node.js-app uitvoeren

Voer ten slotte index.js uit. Als alles goed is gegaan, moet de waarde van uw geheim worden teruggegeven.

node index.js

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

De hulpbronnen opschonen

Als ze niet meer nodig zijn, verwijdert u de virtuele machine en de sleutelkluis. U kunt dit snel doen door simpelweg de resource groep te verwijderen waarvan ze deel uitmaken:

az group delete -g <resource-group>

Volgende stappen

REST-API van Azure Key Vault