Tutoriel : Utiliser Azure Key Vault avec une machine virtuelle en JavaScript

Azure Key Vault vous aide à protéger les clés, les secrets et les certificats, tels que les clés API et les chaînes de connexion de base de données.

Dans ce tutoriel, vous allez configurer une application Node.js pour lire des informations de Azure Key Vault à l’aide d’une identité managée pour Azure ressources. Vous apprenez à :

  • Créer un coffre de clés
  • Stocker un secret dans Key Vault
  • Créer une machine virtuelle Linux Azure
  • Activer une identité managée pour la machine virtuelle
  • Accordez les autorisations requises pour l’application console pour lire des données à partir de Key Vault
  • Récupérer un secret à partir de Key Vault

Avant de commencer, lisez Key Vault concepts de base.

Si vous n'avez pas d'abonnement Azure, créez un compte free.

Prerequisites

Pour Windows, Mac et Linux :

  • Git
  • Version actuelle du Azure CLI. Exécutez az --version pour vérifier la version installée.

Connectez-vous à Azure

Connectez-vous à Azure avec le Azure CLI :

az login

Créer un groupe de ressources et un coffre de clés

Ce guide de prise en main rapide s’appuie sur un Key Vault Azure déjà configuré. Vous pouvez créer un coffre de clés en suivant les étapes décrites dans ces démarrage rapides :

Vous pouvez également exécuter ces commandes Azure CLI.

Important

Chaque coffre de clés doit avoir un nom unique. Remplacez <vault-name> par le nom de votre coffre de clés dans les exemples suivants.

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

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

Remplir votre coffre de clés avec un secret

Créons un secret appelé mySecret avec la valeur Success! . Un secret peut être un mot de passe, un chaîne de connexion SQL ou toute autre information dont vous avez besoin pour assurer la sécurité et la disponibilité de votre application.

Pour ajouter un secret au coffre de clés que vous venez de créer, utilisez la commande suivante :

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

Créer une machine virtuelle

Créez une machine virtuelle nommée myVM à l’aide de l’une des méthodes suivantes :

Linux Windows
Service de contrôle d’accès Azure (CLI) Service de contrôle d’accès Azure (CLI)
PowerShell PowerShell
portail Azure portail Azure

Pour créer une machine virtuelle Linux à l’aide du Azure CLI, utilisez la commande az vm create. L’exemple suivant ajoute un compte d’utilisateur nommé azureuser. Le --generate-ssh-keys paramètre génère une clé SSH et le stocke à l’emplacement de la clé par défaut (~/.ssh).

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

Notez la valeur de publicIpAddress dans la sortie.

Affecter une identité à la machine virtuelle

Créez une identité managée affectée par le système pour la machine virtuelle à l’aide de la commande az vm identity assign :

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

Notez l’identité attribuée par le système dans la sortie :

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

Attribuer des autorisations à l’identité de machine virtuelle

Accordez à l'identité managée de la machine virtuelle le rôle Key Vault Secrets User sur le coffre de clés :

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>

Se connecter à la machine virtuelle

Pour vous connecter à la machine virtuelle, suivez les instructions de Connexion et connectez-vous à une machine virtuelle Azure exécutant Linux ou Connect et connectez-vous à une machine virtuelle Azure exécutant Windows.

Pour vous connecter à une machine virtuelle Linux, utilisez ssh avec le <public-ip-address> de l’étape Créer une machine virtuelle :

ssh azureuser@<public-ip-address>

Installer des bibliothèques Node.js et npm sur la machine virtuelle

Sur la machine virtuelle, installez les deux bibliothèques npm que l’exemple de script utilise : @azure/keyvault-secrets et @azure/identity.

  1. Dans le terminal SSH, installez Node.js et npm :

    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && \
        sudo apt-get install -y nodejs
    
  2. Créez un répertoire d’applications et initialisez le package Node.js :

    mkdir app && cd app && npm init -y
    
  3. Installez les packages Azure avec npm:

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

Créez et modifiez le fichier JavaScript échantillon

  1. Sur la machine virtuelle du app répertoire, créez un fichier JavaScript nommé index.js:

    touch index.js
    
  2. Ouvrez le fichier avec un éditeur de texte Nano :

    nano index.js
    
  3. Collez le code suivant dans l’éditeur, en remplaçant <vault-name> par le nom de votre coffre de clés :

    // 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. Enregistrez le fichier avec Ctrl+X.

  5. À l’invite Save modified buffer?, entrez y.

  6. À l’invite File Name to Write: index.js, appuyez sur Entrée.

Exécuter l’application d’échantillon Node.js

Exécutez index.js. Si tout est configuré correctement, l’application imprime la valeur secrète :

node index.js

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

Nettoyer les ressources

Lorsque vous n’en avez plus besoin, supprimez la machine virtuelle et le coffre de clés. La méthode la plus rapide consiste à supprimer le groupe de ressources auquel ils appartiennent :

az group delete -g "myResourceGroup"

Étapes suivantes

Azure Key Vault API REST