Szybki start: Azure Key Vault tajnej biblioteki klienta dla języka JavaScript (wersja 4)

Wprowadzenie do biblioteki klienta Azure Key Vault tajnego dla języka JavaScript. Azure Key Vault to usługa w chmurze, która zapewnia bezpieczny magazyn wpisów tajnych. Możesz bezpiecznie przechowywać klucze, hasła, certyfikaty oraz inne wpisy tajne. Magazyny kluczy platformy Azure można tworzyć oraz nimi zarządzać za pośrednictwem witryny Azure Portal. Z tego przewodnika Szybki start dowiesz się, jak tworzyć, pobierać i usuwać wpisy tajne z usługi Azure Key Vault przy użyciu biblioteki klienta języka JavaScript

Key Vault zasobów biblioteki klienta:

Dokumentacja referencyjna interfejsu API | Kod źródłowy biblioteki | Pakiet (npm)

Aby uzyskać więcej informacji na Key Vault i wpisów tajnych, zobacz:

Wymagania wstępne

W tym przewodniku Szybki start założono, że używasz interfejsu wiersza polecenia platformy Azure.

Logowanie do platformy Azure

  1. Uruchom polecenie login.

    az login
    

    Jeśli interfejs wiersza polecenia może otworzyć domyślną przeglądarkę, zrobi to i załaduje stronę logowania platformy Azure.

    W przeciwnym razie otwórz stronę przeglądarki pod https://aka.ms/devicelogin adresem i wprowadź kod autoryzacji wyświetlany w terminalu.

  2. Zaloguj się w przeglądarce przy użyciu poświadczeń swojego konta.

Tworzenie nowej Node.js aplikacji

Następnie utwórz aplikację Node.js, która może zostać wdrożona w chmurze.

  1. W powłoki poleceń utwórz folder o nazwie key-vault-node-app :
mkdir key-vault-node-app
  1. Zmień katalog na nowo utworzony katalog key-vault-node-app i uruchom polecenie "init", aby zainicjować projekt węzła:
cd key-vault-node-app
npm init -y

Instalowanie Key Vault pakietów

W oknie konsoli zainstaluj bibliotekę Azure Key Vault wpisów tajnych dla Node.js.

npm install @azure/keyvault-secrets

Instalowanie pakietu azure.identity w celu uwierzytelnienia w Key Vault

npm install @azure/identity

Ustawianie zmiennych środowiskowych

Ta aplikacja używa nazwy magazynu kluczy jako zmiennej środowiskowej o nazwie KEY_VAULT_NAME .

Windows

set KEY_VAULT_NAME=<your-key-vault-name>

Windows PowerShell

$Env:KEY_VAULT_NAME="<your-key-vault-name>"

macOS lub Linux

export KEY_VAULT_NAME=<your-key-vault-name>

Udzielanie dostępu do magazynu kluczy

Tworzenie zasad dostępu dla magazynu kluczy, które przyznaje uprawnienia do kluczy tajnych do konta użytkownika

az keyvault set-policy --name <YourKeyVaultName> --upn user@domain.com --secret-permissions delete get list set purge

Przykłady kodu

Poniższe przykłady kodu pokazują, jak utworzyć klienta, ustawić klucz tajny, pobrać klucz tajny i usunąć klucz tajny.

Konfigurowanie struktury aplikacji

  1. Utwórz nowy plik tekstowy i zapisz go jako "index.js"

  2. Dodawanie wywołań wymagania w celu załadowania platformy Azure Node.js modułów

  3. Tworzenie struktury programu, w tym podstawowej obsługi wyjątków

const readline = require('readline');

function askQuestion(query) {
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout,
    });

    return new Promise(resolve => rl.question(query, ans => {
        rl.close();
        resolve(ans);
    }))
}

async function main() {
    
}

main().then(() => console.log('Done')).catch((ex) => console.log(ex.message));

Dodawanie dyrektyw

Dodaj następujące dyrektywy na początku kodu:

const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@azure/keyvault-secrets");

Uwierzytelnianie i tworzenie klienta

W tym przewodniku Szybki start zalogowany użytkownik jest używany do uwierzytelniania w magazynie kluczy, co jest preferowaną metodą tworzenia aplikacji lokalnych. W przypadku aplikacji wdrożonych na platformie Azure tożsamość zarządzana powinna być przypisana do usługi App Service lub maszyny wirtualnej. Aby uzyskać więcej informacji, zobacz Omówienie tożsamości zarządzanej.

W poniższym przykładzie nazwa magazynu kluczy jest rozszerzana do wartości URI magazynu kluczy w formacie "https:// <your-key-vault-name> .vault.azure.net". W tym przykładzie używamy klasy "DefaultAzureCredential()" z biblioteki tożsamości platformy Azure,która umożliwia używanie tego samego kodu w różnych środowiskach z różnymi opcjami w celu zapewnienia tożsamości. Aby uzyskać więcej informacji na temat uwierzytelniania w Key Vault, zobacz Developer's Guide(Przewodnik dewelopera).

Dodaj następujący kod do funkcji "main()"

const keyVaultName = process.env["KEY_VAULT_NAME"];
const KVUri = "https://" + keyVaultName + ".vault.azure.net";

const credential = new DefaultAzureCredential();
const client = new SecretClient(KVUri, credential);

Zapisywanie tajnego

Teraz, gdy aplikacja jest uwierzytelniona, możesz umieścić klucz tajny w kluczu przy użyciu metody setSecret. Wymaga to nazwy klucza tajnego — w tym przykładzie używamy nazwy "mySecret".

await client.setSecret(secretName, secretValue);

Pobieranie tajnego

Możesz teraz pobrać wcześniej ustawioną wartość za pomocą metody getSecret.

const retrievedSecret = await client.getSecret(secretName);

Twój klucz tajny jest teraz zapisany jako retrievedSecret.value .

Usuń klucz tajny

Na koniec usuńmy i przeczyścimy klucz tajny z magazynu kluczy za pomocą metod beginDeleteSecret i purgeDeletedSecret.

const deletePoller = await client.beginDeleteSecret(secretName);
await deletePoller.pollUntilDone();
await client.purgeDeletedSecret(secretName);

Przykładowy kod

const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@azure/keyvault-secrets");

const readline = require('readline');

function askQuestion(query) {
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout,
    });

    return new Promise(resolve => rl.question(query, ans => {
        rl.close();
        resolve(ans);
    }))
}

async function main() {

  const keyVaultName = process.env["KEY_VAULT_NAME"];
  const KVUri = "https://" + keyVaultName + ".vault.azure.net";

  const credential = new DefaultAzureCredential();
  const client = new SecretClient(KVUri, credential);

  const secretName = "mySecret";
  var secretValue = await askQuestion("Input the value of your secret > ");

  console.log("Creating a secret in " + keyVaultName + " called '" + secretName + "' with the value '" + secretValue + "` ...");
  await client.setSecret(secretName, secretValue);

  console.log("Done.");

  console.log("Forgetting your secret.");
  secretValue = "";
  console.log("Your secret is '" + secretValue + "'.");

  console.log("Retrieving your secret from " + keyVaultName + ".");

  const retrievedSecret = await client.getSecret(secretName);

  console.log("Your secret is '" + retrievedSecret.value + "'.");

  console.log("Deleting your secret from " + keyVaultName + " ...");
  const deletePoller = await client.beginDeleteSecret(secretName);
  await deletePoller.pollUntilDone();
  console.log("Done.");
  
  console.log("Purging your secret from {keyVaultName} ...");
  await client.purgeDeletedSecret(secretName);
  
}

main().then(() => console.log('Done')).catch((ex) => console.log(ex.message));

Testowanie i weryfikowanie

  1. Wykonaj następujące polecenia, aby uruchomić aplikację.

    npm install
    node index.js
    
  2. Po wyświetleniu monitu wprowadź wartość wpisów tajnych. Na przykład mySecretPassword.

    Zostanie wyświetlona odmiana następujących danych wyjściowych:

    Input the value of your secret > mySecretPassword
    Creating a secret in <your-unique-keyvault-name> called 'mySecret' with the value 'mySecretPassword' ... done.
    Forgetting your secret.
    Your secret is ''.
    Retrieving your secret from <your-unique-keyvault-name>.
    Your secret is 'mySecretPassword'.
    Deleting your secret from <your-unique-keyvault-name> ... done.  
    Purging your secret from <your-unique-keyvault-name> ... done.   
    

Następne kroki

W tym przewodniku Szybki start utworzono magazyn kluczy, przechowywano klucz tajny i pobrano ten klucz tajny. Aby dowiedzieć się więcej Key Vault o tym, jak zintegrować ją z aplikacjami, przejdź do poniższych artykułów.