Udostępnij przez


Samouczek: używanie usługi Azure Key Vault z maszyną wirtualną w języku JavaScript

Usługa Azure Key Vault ułatwia ochronę kluczy, wpisów tajnych i certyfikatów, takich jak klucze interfejsu API i parametry połączenia bazy danych.

W tym samouczku skonfigurujesz aplikację Node.js do odczytywania informacji z usługi Azure Key Vault przy użyciu tożsamości zarządzanych dla zasobów platformy Azure. Uczysz się, jak:

  • Stwórz magazyn kluczy
  • Przechowywanie tajemnicy w usłudze Key Vault
  • Tworzenie maszyny wirtualnej z systemem Linux platformy Azure
  • Włączanie tożsamości zarządzanej dla maszyny wirtualnej
  • Udzielanie wymaganych uprawnień aplikacji konsolowej do odczytywania danych z usługi Key Vault
  • Pobieranie tajemnicy z Key Vault

Przed rozpoczęciem zapoznaj się z podstawowymi pojęciami dotyczącymi usługi Key Vault.

Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto.

Prerequisites

W przypadku systemów Windows, Mac i Linux:

  • Git
  • Ten samouczek wymaga uruchomienia interfejsu wiersza polecenia platformy Azure lokalnie. Musisz mieć zainstalowany interfejs wiersza polecenia platformy Azure w wersji 2.0.4 lub nowszej. Uruchom az --version, aby znaleźć wersję. Jeśli konieczna będzie instalacja interfejsu wiersza polecenia lub jego uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure 2.0.

Logowanie się do platformy Azure

Aby zalogować się do platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure, wpisz:

az login

Utwórz grupę zasobów i magazyn kluczy

Ten szybki start używa wcześniej utworzonego magazynu kluczy Azure. Można utworzyć magazyn kluczy, wykonując kroki opisane w tych szybkich przewodnikach startowych:

Alternatywnie możesz uruchomić te polecenia Azure CLI.

Important

Każdy magazyn kluczy musi mieć unikatową nazwę. Zamień <your-unique-keyvault-name> na nazwę Twojego magazynu kluczy w poniższych przykładach.

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

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

Wypełnij swój magazyn kluczy tajemnicą

Utwórzmy wpis tajny o nazwie mySecret z wartością Success!. Tajna informacja może być hasłem, parametrami połączenia SQL lub innymi danymi, które musisz zarówno zabezpieczyć, jak i zapewnić ich dostępność dla aplikacji.

Aby dodać sekret do nowo utworzonego magazynu kluczy, użyj następującego polecenia:

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

Tworzenie maszyny wirtualnej

Utwórz maszynę wirtualną o nazwie myVM przy użyciu jednej z następujących metod:

Linux Windows
"Azure CLI" "Azure CLI"
PowerShell PowerShell
Portal Azure Portal Azure

Aby utworzyć maszynę wirtualną z systemem Linux przy użyciu interfejsu wiersza polecenia platformy Azure, użyj polecenia az vm create . W poniższym przykładzie dodano konto użytkownika o nazwie azureuser. Parametr --generate-ssh-keys jest używany, aby automatycznie wygenerować klucz SSH i umieścić go w domyślnej lokalizacji klucza (~/.ssh).

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

Zanotuj wartość publicIpAddress w danych wyjściowych.

Przypisywanie tożsamości do maszyny wirtualnej

Utwórz tożsamość przypisaną przez system dla maszyny wirtualnej przy użyciu polecenia interfejsu wiersza polecenia platformy Azure az vm identity assign.

az vm identity assign --name "myVM" --resource-group "myResourceGroup"

Zanotuj tożsamość przypisaną przez system, która jest wyświetlana w poniższym kodzie. Dane wyjściowe poprzedniego polecenia to:

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

Przypisywanie uprawnień do tożsamości maszyny wirtualnej

Teraz możesz przypisać wcześniej utworzone uprawnienia tożsamości do magazynu kluczy, uruchamiając następujące polecenie:

az role assignment create --role "Key Vault Secrets User" --assignee "<systemAssignedIdentity>" --scope /subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>

Logowanie się do maszyny wirtualnej

Aby zalogować się do maszyny wirtualnej, postępuj zgodnie z instrukcjami w Connect and sign in to an Azure virtual machine running Linux lub Connect and sign in to an Azure virtual machine running Windows.

Aby zalogować się do maszyny wirtualnej z systemem Linux, możesz użyć polecenia ssh z wartością <publicIpAddress> podaną w kroku Tworzenie maszyny wirtualnej:

ssh azureuser@<PublicIpAddress>

Instalowanie bibliotek Node.js i npm na maszynie wirtualnej

Na maszynie wirtualnej zainstaluj dwie biblioteki npm, których będziemy używać w skrypcie języka JavaScript: @azure/keyvault-secrets i @azure/identity.

  1. W terminalu SSH zainstaluj Node.js i narzędzie npm przy użyciu następujących poleceń:

    curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - && \
        sudo apt-get install -y nodejs
    
  2. Utwórz katalog aplikacji i zainicjuj pakiet Node.js:

    mkdir app && cd app && npm init -y
    
  3. Zainstaluj pakiety usług platformy Azure przy użyciu polecenia npm:

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

Tworzenie i edytowanie przykładowego pliku JavaScript

  1. Na maszynie app wirtualnej w katalogu utwórz plik JavaScript o nazwie index.js.

    touch index.js
    
  2. Otwórz plik za pomocą edytora tekstów Nano :

    nano index.js
    
  3. Skopiuj następujący kod, zastępując <ciąg your-unique-keyvault-name> nazwą magazynu kluczy i wklej go w edytorze Nano:

    // index.js
    
    const { SecretClient } = require("@azure/keyvault-secrets");
    const { DefaultAzureCredential } = require("@azure/identity");
    
    // Your Azure Key Vault name and secret name
    const keyVaultName = "<your-unique-keyvault-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. Zapisz plik za pomocą Ctrl + x.

  5. Po zapytaniu Save modified buffer?wprowadź y.

  6. Po wyświetleniu monitu File Name to Write: index.jswprowadź enter.

Uruchamianie przykładowej aplikacji Node.js

Na koniec uruchom index.js. Jeśli wszystko poszło dobrze, powinien zwrócić wartość Twojej tajemnicy.

node index.js

The value of secret 'mySecret' in '<your-unique-keyvault-name>' is: 'Success!'

Uprzątnij zasoby

Gdy maszyna wirtualna i magazyn kluczy nie będą już potrzebne, usuń je. Możesz to zrobić szybko, usuwając grupę zasobów, do której należą:

az group delete -g myResourceGroup

Dalsze kroki

Interfejsy API REST usługi Azure Key Vault