Schnellstart: Azure Key Vault Verwaltete HSM-Clientbibliothek für JavaScript

Erste Schritte mit der Azure Key Vault Managed HSM-Clientbibliothek für JavaScript. Verwaltetes HSM ist ein vollständig verwalteter, hochverwendiger, einzelinstanzenfähiger, standardkonformer Clouddienst, mit dem Sie kryptografische Schlüssel für Ihre Cloudanwendungen schützen können, wobei FIPS 140-3 Level 3 validierte HSMs verwendet werden. Weitere Informationen zu verwaltetem HSM erfahren Sie in der Übersicht.

In dieser Schnellstartanleitung erfahren Sie, wie Sie mithilfe der JavaScript-Clientbibliothek auf Kryptografievorgänge auf Schlüssel in einem verwalteten HSM zugreifen und diese ausführen.

Verwaltete HSM-Clientbibliotheksressourcen:

API-Referenzdokumentation | Bibliotheksquellcode | Package (npm)

Voraussetzungen

Einrichten Ihrer lokalen Umgebung

In dieser Schnellstartanleitung wird die Azure Identitätsbibliothek mit Azure CLI verwendet, um sich bei Azure Diensten zu authentifizieren. Entwickler können auch Visual Studio Code verwenden, um ihre Anrufe zu authentifizieren. Weitere Informationen finden Sie unter Authenticate the client with Azure Identity client library.

Anmelden bei Azure

Führen Sie den az login Befehl aus, um sich anzumelden:

az login

Erstellen eines Projektordners und Initialisieren

  1. Erstellen Sie einen Projektordner, und navigieren Sie zu diesem Ordner:

    mkdir mhsm-js-app && cd mhsm-js-app
    
  2. Initialisieren Sie das Projekt:

    npm init -y
    

Installieren der Pakete

Installieren Sie die Clientbibliotheken Azure Identity und Key Vault Keys:

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

Erstellen des Beispielcodes

Erstellen Sie eine Datei index.js mit dem folgenden Code. Ersetzen Sie <hsm-name> durch den Namen Ihres verwalteten HSM und <key-name> durch einen vorhandenen Schlüsselnamen.

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient, CryptographyClient } = require("@azure/keyvault-keys");

async function main() {
    // Use DefaultAzureCredential for automatic credential selection
    const credential = new DefaultAzureCredential();

    // Connect to Managed HSM - replace with your HSM URI
    const hsmUri = "https://<hsm-name>.managedhsm.azure.net";
    const keyClient = new KeyClient(hsmUri, credential);

    // Get a key reference
    const keyName = "<key-name>";
    console.log(`Retrieving key '${keyName}' from Managed HSM...`);
    const key = await keyClient.getKey(keyName);
    console.log(`Key retrieved. Key type: ${key.keyType}`);

    // Perform cryptographic operations
    const cryptoClient = new CryptographyClient(key, credential);

    // Encrypt data
    const plaintext = Buffer.from("Hello, Managed HSM!");
    console.log(`\nOriginal text: ${plaintext.toString()}`);

    const encryptResult = await cryptoClient.encrypt("RSA-OAEP-256", plaintext);
    console.log(`Encrypted (base64): ${encryptResult.result.toString("base64").substring(0, 64)}...`);

    // Decrypt data
    const decryptResult = await cryptoClient.decrypt("RSA-OAEP-256", encryptResult.result);
    console.log(`Decrypted text: ${decryptResult.result.toString()}`);

    console.log("\nDone!");
}

main().catch((error) => {
    console.error("An error occurred:", error);
    process.exit(1);
});

Ausführen der Anwendung

Führen Sie die Anwendung aus.

node index.js

Eine ähnliche Ausgabe wie die folgende sollte angezeigt werden:

Retrieving key 'myrsakey' from Managed HSM...
Key retrieved. Key type: RSA-HSM

Original text: Hello, Managed HSM!
Encrypted (base64): NWE4ZjNiMmMxZDRlNWY2YTdiOGM5ZDBlMWYyYTNiNGM...
Decrypted text: Hello, Managed HSM!

Done!

Grundlegendes zum Code

Authentifizierung mit DefaultAzureCredential

DefaultAzureCredential wählt automatisch die passenden Zugangsdaten basierend auf Ihrer Umgebung aus.

Umgebung Verwendete Anmeldeinformationen
Azure VMs, App-Dienst, Funktionen Vom System zugewiesene oder vom Benutzer zugewiesene verwaltete Identität
Azure Kubernetes Service Workload-Identität
Lokale Entwicklung Anmeldeinformationen für Azure CLI, Visual Studio oder VS Code
CI/CD-Pipelines Workload-Identitätsverbund oder Dienstprinzipal

Die Berechtigungsnachweise überprüfen diese Quellen in der folgenden Reihenfolge:

  1. Umgebungsvariablen
  2. Workload-Identität
  3. Verwaltete Identität
  4. Azure CLI
  5. Azure PowerShell
  6. Visual Studio/VS Code-Anmeldeinformationen

Für Produktionsworkloads in Azure werden verwaltete Identitäten dringend empfohlen, da sie die Verwaltung von Anmeldeinformationen vollständig beseitigen.

Wichtige Vorgänge

Die KeyClient Klasse bietet Methoden für:

  • Erstellen, Abrufen, Aktualisieren und Löschen von Schlüsseln
  • Liste Schlüssel und Schlüsselversionen
  • Sichern und Wiederherstellen von Schlüsseln

Die CryptographyClient Klasse stellt kryptografische Vorgänge bereit:

  • Verschlüsseln und Entschlüsseln von Daten
  • Signieren und Überprüfen von Signaturen
  • Schlüssel verpacken und auspacken

Zuweisen verwalteter HSM-Rollen

Damit Ihre Anwendung auf Zugriffsschlüssel zugreifen kann, weisen Sie Ihrer verwalteten Identität die entsprechende lokale RBAC-Rolle für Managed HSM zu. Ersetzen Sie <vm-name>, <resource-group> und <hsm-name> durch Ihre tatsächlichen Werte.

# Get the principal ID of your managed identity
principalId=$(az vm identity show --name <vm-name> --resource-group <resource-group> --query principalId -o tsv)

# Assign the Crypto User role for key operations
az keyvault role assignment create \
    --hsm-name <hsm-name> \
    --role "Managed HSM Crypto User" \
    --assignee $principalId \
    --scope /keys

Weitere Informationen zu Rollen und Berechtigungen finden Sie unter Managed HSM local RBAC built-in roles.

Bereinigen von Ressourcen

Wenn sie nicht mehr benötigt wird, löschen Sie die Ressourcengruppe und alle zugehörigen Ressourcen:

az group delete --name <resource-group>

Warnung

Durch das Löschen der Ressourcengruppe wird das verwaltete HSM in einen vorläufig gelöschten Zustand versetzt. Das verwaltete HSM wird weiterhin in Rechnung gestellt, bis es gelöscht wird. Siehe Vorläufiges Löschen und Löschschutz des verwalteten HSM

Nächste Schritte