Självstudie: Använda Azure Key Vault med en virtuell dator i JavaScript

Azure Key Vault hjälper dig att skydda nycklar, hemligheter och certifikat, till exempel API-nycklar och databasanslutningssträngar.

I den här självstudien konfigurerar du ett Node.js program för att läsa information från Azure Key Vault med hjälp av hanterade identiteter för Azure resurser. Du lär dig att:

  • Skapa ett nyckelvalv
  • Lagra en hemlighet i Key Vault
  • Skapa en Azure virtuell Linux-dator
  • Aktivera en hanterad identitet för den virtuella datorn
  • Bevilja de behörigheter som krävs för konsolprogrammet för att läsa data från Key Vault
  • Hämta en hemlighet från Key Vault

Innan du börjar läser du Key Vault grundläggande begrepp.

Om du inte har en Azure prenumeration skapar du ett free-konto.

Prerequisites

För Windows, Mac och Linux:

  • Git
  • Den här självstudien kräver att du kör Azure CLI lokalt. Du måste ha en ny version av Azure CLI installerad. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera CLI kan du läsa Installera Azure CLI.

Logga in på Azure

Om du vill logga in på Azure med hjälp av Azure CLI anger du:

az login

Skapa en resursgrupp och ett nyckelvalv

Den här snabbstarten använder ett förskapat Azure nyckelvalv. Du kan skapa ett nyckelvalv genom att följa stegen i dessa snabbguider:

Du kan också köra dessa Azure CLI kommandon.

Important

Varje nyckelvalv måste ha ett unikt namn. Ersätt <vault-name> med namnet på ditt nyckelvalv i följande exempel.

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

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

Fyll i ditt nyckelvalv med en hemlighet

Nu ska vi skapa en hemlighet med namnet mySecret med värdet Success!. En hemlighet kan vara ett lösenord, en SQL-reťazec pripojenia eller annan information som du behöver för att hålla både säker och tillgänglig för ditt program.

Om du vill lägga till en hemlighet i ditt nyligen skapade nyckelvalv använder du följande kommando:

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

Skapa en virtuell dator

Skapa en virtuell dator med namnet myVM med någon av följande metoder:

Linux Windows
Azure CLI Azure CLI
PowerShell PowerShell
Azure portal Portalen Azure

Om du vill skapa en virtuell Linux-dator med hjälp av Azure CLI använder du kommandot az vm create. I följande exempel läggs ett användarkonto med namnet azureuser till. Parametern --generate-ssh-keys används för att automatiskt generera en SSH-nyckel och placera den på standardnyckelplatsen (~/.ssh).

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

Observera värdet publicIpAddress i resultatet.

Tilldela en identitet till den virtuella datorn

Skapa en systemtilldelad identitet för den virtuella datorn med hjälp av kommandot Azure CLI az vm identity assign:

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

Observera den systemtilldelade identitet som visas i följande kod. Utdata från föregående kommando skulle vara:

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

Tilldela behörigheter till den virtuella datorns identitet

Nu kan du tilldela de tidigare skapade identitetsbehörigheterna till ditt nyckelvalv genom att köra följande kommando:

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>

Logga in på den virtuella datorn

Om du vill logga in på den virtuella datorn följer du anvisningarna i Anslut och loggar in på en Azure virtuell dator som kör Linux eller Anslut och logga in på en Azure virtuell dator som kör Windows.

Om du vill logga in på en virtuell Linux-dator kan du använda ssh-kommandot med angivet <public-ip-address> i steget Skapa en virtuell dator :

ssh azureuser@<public-ip-address>

Installera Node.js- och npm-bibliotek på den virtuella datorn

På den virtuella datorn installerar du de två npm-biblioteken som vi ska använda i vårt JavaScript-skript: @azure/keyvault-secrets och @azure/identitet.

  1. Installera Node.js och npm i SSH-terminalen med följande kommandon:

    curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash - && \
        sudo apt-get install -y nodejs
    
  2. Skapa en appkatalog och initiera Node.js-paketet:

    mkdir app && cd app && npm init -y
    
  3. Installera Azure-tjänstpaketen med hjälp av npm:

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

Skapa och redigera JavaScript-exempelfilen

  1. På den virtuella datorn i app katalogen skapar du en JavaScript-fil med namnet index.js.

    touch index.js
    
  2. Öppna filen med Nano-textredigeraren :

    nano index.js
    
  3. Kopiera följande kod och ersätt <vault-name> med namnet på ditt nyckelvalv och klistra in i Nano-redigeraren:

    // 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. Spara filen med Ctrl + x.

  5. När du tillfrågas Save modified buffer?ska du ange y.

  6. När du tillfrågas File Name to Write: index.jstrycker du på Retur.

Kör exempelappen Node.js

Slutligen kör du index.js. Om allt har gått bra bör det returnera värdet för din hemlighet:

node index.js

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

Rensa resurser

När de inte längre behövs tar du bort den virtuella datorn och ditt nyckelvalv. Du kan göra detta snabbt genom att helt enkelt ta bort den resursgrupp som de tillhör:

az group delete -g "myResourceGroup"

Nästa steg

Azure Key Vault REST API