Začínáme s klíči Azure Key Vault v JavaScriptu

V tomto článku se dozvíte, jak se připojit k Azure Key Vault pomocí klientské knihovny klíčů Azure Key Vault pro JavaScript. Po připojení může kód pracovat s klíči v trezoru.

referenční informace k API | Balíček (npm) | Knihovní zdrojový kód | Ukázky | Poskytněte zpětnou vazbu

Požadavky

Nastavení projektu

  1. Otevřete příkazový řádek a přejděte do složky projektu. Změňte <your-directory> název složky:

    cd <your-directory>
    
  2. Pokud nemáte soubor package.json ve svém adresáři, inicializujte projekt a vytvořte soubor.

    npm init -y
    
  3. Nainstalujte klientskou knihovnu Azure Key Vault klíčů pro JavaScript:

    npm install @azure/keyvault-keys
    
  4. Pokud chcete používat připojení bez hesla pomocí Microsoft Entra ID, nainstalujte klientskou knihovnu Azure Identity pro JavaScript:

    npm install @azure/identity
    

Autorizace přístupu a připojení k Key Vault

Microsoft Entra ID poskytuje nejbezpečnější připojení tím, že spravuje identitu připojení (managed identity). Tato funkce bez hesla umožňuje vyvíjet aplikaci, která nevyžaduje žádné klíče uložené v kódu.

Před programovým ověřováním v Azure pro použití klíčů Azure Key Vault se ujistěte, že jste nastavili prostředí.

Diagram Azure SDK pro tok přihlašovacích údajů JavaScriptu.

Vývojář by měl nainstalovat Azure CLI a přihlásit se interaktivně pomocí příkazu az login a přihlásit se k Azure před použitím defaultAzureCredential v kódu.

az login

Sestavení aplikace

Při vytváření aplikace kód komunikuje se dvěma typy prostředků:

  • KeyVaultKey, který zahrnuje:
    • ID, název a hodnota
    • Povolené operace.
    • Typ jako EC, EC-HSM, RSA, RSA-HSM, oct, oct-HSM.
    • Vlastnosti jako KeyProperties
  • KeyProperties, které zahrnují metadata klíčů, jako je název, verze, značky, data vypršení platnosti a jestli jsou povolená.

Pokud potřebujete hodnotu KeyVaultKey, použijte metody, které vrací klíč KeyVaultKey:

Objektový model

Klientská knihovna klíčů Azure Key Vault pro JavaScript zahrnuje následující klienty:

  • KeyClient: Objekt KeyClient je hlavním objektem v sadě SDK. Tento klient umožňuje provádět úlohy správy klíčů, jako jsou vytváření, obměna, odstraňování a výpis klíčů.
  • CryptographyClient umožňuje šifrovat, dešifrovat, podepsat, ověřit, zabalit a rozbalit klíče.

Koncepční diagram znázorňující vztah v klientské knihovně mezi KeyClient a CryptographyClient

Vytvoření objektu KeyClient

Po nastavení místního prostředí a autorizace Key Vault vytvořte soubor JavaScriptu, který zahrnuje balíčky @azure/identity a @azure/keyvault-keys. Vytvořte přihlašovací údaje, například DefaultAzureCredential, pro implementaci připojení bez hesla k vašemu trezoru. Pomocí tohoto pověření se ověřte pomocí objektu KeyClient .

// Include required dependencies
import { DefaultAzureCredential } from '@azure/identity';  
import { KeyClient } from '@azure/keyvault-keys';  

// Authenticate to Azure
// Create KeyClient
const credential = new DefaultAzureCredential(); 
const client = new KeyClient(
    `https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
    credential
  );

// Get key
const key = await client.getKey("MyKeyName");

Vytvoření objektu CryptographyClient

Objekt CryptographyClient je provozním objektem v sadě SDK pomocí klíče k provádění akcí, jako je šifrování, dešifrování, podepsání a ověření, zabalení a rozbalení.

Pomocí přihlašovacích údajů identity z KeyClient spolu s názvem klíče vytvořte kryptografický klient k provádění operací.

// Include required dependencies
import { DefaultAzureCredential } from '@azure/identity';  
import {
  CryptographyClient,
  KeyClient,
  KnownEncryptionAlgorithms,
  RsaEncryptParameters
} from '@azure/keyvault-keys'; 

// Authenticate to Azure
// Create KeyClient
const credential = new DefaultAzureCredential(); 
const client = new KeyClient(
    `https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
    credential
  ); 

// Get key
const key = await client.getKey("MyKeyName");

if (key?.name) {

    // get encryption client
    const encryptClient = new CryptographyClient(key, credential);

    // encrypt data
    const encryptParams = { 
        algorithm: KnownEncryptionAlgorithms.RSAOaep256,
        plaintext: Buffer.from("Hello world!")
    }
    const encryptResult = await encryptClient.encrypt(encryptParams);
}

Viz také

Další kroky