Oktatóanyag: A Azure Key Vault használata virtuális géppel JavaScriptben

Azure Key Vault segít megvédeni a kulcsokat, titkos kulcsokat és tanúsítványokat, például az API-kulcsokat és az adatbázis-kapcsolati sztringeket.

Ebben az oktatóanyagban beállít egy Node.js-alkalmazást, hogy az Azure-erőforrásokhoz készült felügyelt identitás használatával információkat olvasson ki az Azure Key Vaultból. Megtudhatja, hogyan:

  • Kulcstároló létrehozása
  • Egy titok tárolása a Key Vaultban
  • Azure Linux rendszerű virtuális gép létrehozása
  • Felügyelt identitás engedélyezése a virtuális géphez
  • Adja meg a szükséges engedélyeket a konzolalkalmazás számára, hogy adatokat olvashasson a Key Vaultból.
  • Titok lekérése a Key Vaultból

A kezdés előtt olvassa el Key Vault alapfogalmakat.

Ha nem rendelkezik Azure előfizetéssel, hozzon létre egy felszabadító fiókot.

Prerequisites

Windows, Mac és Linux esetén:

  • Git
  • A Azure CLI aktuális verziója. A telepített verzió ellenőrzéséhez futtassa a(z) az --version parancsot.

Bejelentkezés az Azure-ba

Jelentkezzen be az Azure-ba az Azure CLI segítségével:

az login

Erőforráscsoport és kulcstár létrehozása

Ez a gyorsútmutató egy előre létrehozott Azure kulcstárat használ. Kulcstárt az alábbi gyors útmutatók lépéseinek követésével hozhat létre:

Másik lehetőségként futtathatja ezeket a Azure CLI parancsokat.

Important

Minden kulcstartónak egyedi névvel kell rendelkeznie. Cserélje le <vault-name> a kulcstartó tároló nevét az alábbi példákban.

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

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

Kulcstár feltöltése titkos beállítással

Hozzunk létre egy mySecret nevű titkos kulcsot, amelynek értéke siker!. A titkos kód lehet jelszó, SQL-kapcsolati karakterlánc vagy bármilyen más információ, amelyet biztonságosan és az alkalmazás számára elérhetővé kell tenni.

Ha titkos kulcsot szeretne hozzáadni az újonnan létrehozott kulcstartóhoz, használja a következő parancsot:

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

Virtuális gép létrehozása

Hozzon létre egy myVM nevű virtuális gépet az alábbi módszerek egyikével:

Linux Windows
Azure parancssori felület Azure parancssori felület
PowerShell PowerShell
Azure portál Azure portál

Linux rendszerű virtuális gép Azure CLI használatával történő létrehozásához használja az az vm create parancsot. Az alábbi példa egy felhasználói fiókot azureuserad hozzá. A --generate-ssh-keys paraméter létrehoz egy SSH-kulcsot, és az alapértelmezett kulcshelyen (~/.ssh) tárolja.

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

Jegyezze fel a kimenet értékét publicIpAddress .

Identitás hozzárendelése a virtuális géphez

Hozzon létre egy rendszer által hozzárendelt felügyelt identitást a virtuális gép számára az az vm identity assign paranccsal:

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

Figyelje meg a rendszer által hozzárendelt identitást a kimenetben:

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

Engedélyek hozzárendelése a virtuálisgép-identitáshoz

Adja meg a virtuális gép felügyelt identitásának a key vault Key Vault Titkos kulcsok felhasználói szerepkörét:

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>

Bejelentkezés a virtuális gépre

A virtuális gépre való bejelentkezéshez kövesse a Connectben található utasításokat, és jelentkezzen be egy Linux vagy Connect rendszert futtató Azure virtuális gépre, és jelentkezzen be egy Azure Windows futó virtuális gépre.

Linux rendszerű virtuális gépre való bejelentkezéshez használja ssh a <public-ip-address>Virtuális gép létrehozása lépésben:

ssh azureuser@<public-ip-address>

Node.js- és npm-kódtárak telepítése a virtuális gépen

A virtuális gépen telepítse a mintaszkript által használt két npm-kódtárat: @azure/keyvault-secrets és @azure/identity.

  1. Az SSH-terminálon telepítse a Node.js és az npm elemet:

    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && \
        sudo apt-get install -y nodejs
    
  2. Hozzon létre egy alkalmazáskönyvtárat, és inicializálja a Node.js csomagot:

    mkdir app && cd app && npm init -y
    
  3. Telepítse a Azure csomagokat a következővelnpm:

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

A JavaScript-mintafájl létrehozása és szerkesztése

  1. A virtuális gépen, a app könyvtárban hozzon létre egy index.js nevű JavaScript-fájlt:

    touch index.js
    
  2. Nyissa meg a fájlt a Nano szövegszerkesztőjével:

    nano index.js
    
  3. Illessze be a következő kódot a szerkesztőbe, és a <vault-name> helyére írja be a kulcstartó nevét:

    // 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. Mentse a fájlt a CtrlX+.

  5. A(z) Save modified buffer? promptnál írja be a(z) y értéket.

  6. A parancssorban nyomja le az File Name to Write: index.jsEnter billentyűt.

Node.js mintaalkalmazás futtatása

Futtassa a index.js programot. Ha minden megfelelően van konfigurálva, az alkalmazás kinyomtatja a titkos értéket:

node index.js

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

Erőforrások tisztítása

Ha már nincs rájuk szüksége, törölje a virtuális gépet és a kulcstartót. A leggyorsabb módszer az erőforráscsoport törlése, amelyhez tartoznak:

az group delete -g "myResourceGroup"

Következő lépések

AZURE KEY VAULT REST API