Kom igång med Azure Key Vault-nycklar i JavaScript
Den här artikeln visar hur du ansluter till Azure Key Vault med hjälp av Klientbiblioteket för Azure Key Vault-nycklar för JavaScript. När koden är ansluten kan den köras på nycklar i valvet.
API-referenspaket (npm) | Exempel på källkod | | för bibliotek Ge feedback |
Förutsättningar
- En Azure-prenumeration – skapa en kostnadsfritt.
- Azure Key Vault-instans . Granska åtkomstprinciperna i ditt Key Vault för att ta med de behörigheter som krävs för de specifika uppgifter som utförs i kod.
- Node.js version LTS
Konfigurera projektet
Öppna en kommandotolk och ändra till projektmappen. Ändra
YOUR-DIRECTORY
till mappnamnet:cd YOUR-DIRECTORY
Om du inte redan har en
package.json
fil i katalogen initierar du projektet för att skapa filen:npm init -y
Installera Klientbiblioteket för Azure Key Vault-nycklar för JavaScript:
npm install @azure/keyvault-keys
Om du vill använda lösenordslösa anslutningar med hjälp av Microsoft Entra-ID installerar du Azure Identity-klientbiblioteket för JavaScript:
npm install @azure/identity
Auktorisera åtkomst och ansluta till Key Vault
Microsoft Entra-ID:t ger den säkraste anslutningen genom att hantera anslutningsidentiteten (hanterad identitet). Med den här lösenordslösa funktionen kan du utveckla ett program som inte kräver några nycklar som lagras i koden.
Innan du autentiserar programmatiskt till Azure för att använda Azure Key Vault-nycklar måste du konfigurera din miljö.
En utvecklare bör installera Azure CLI och logga in interaktivt med kommandot az login för att logga in på Azure innan du använder StandardAzureCredential i koden.
az login
Skapa ditt program
När du skapar ditt program interagerar koden med två typer av resurser:
- KeyVaultKey, som innehåller:
- ID, namn och värde.
- Tillåtna åtgärder.
- Typ som
EC
,EC-HSM
,RSA
,RSA-HSM
, ,oct
.oct-HSM
- Egenskaper som KeyProperties
- KeyProperties, som innehåller nycklarnas metadata, till exempel dess namn, version, taggar, förfallodata och om de är aktiverade.
Om du behöver värdet för KeyVaultKey använder du metoder som returnerar KeyVaultKey:
Objektmodell
Klientbiblioteket för Azure Key Vault-nycklar för JavaScript innehåller följande klienter:
- KeyClient: KeyClient-objektet är det översta objektet i SDK:et. Med den här klienten kan du utföra viktiga hanteringsuppgifter som att skapa, rotera, ta bort och lista nycklarna.
- Med CryptographyClient kan du kryptera, dekryptera, signera, verifiera, omsluta och packa upp nycklar.
Skapa ett KeyClient-objekt
När din lokala miljö och Key Vault-auktorisering har konfigurerats skapar du en JavaScript-fil som innehåller paketen @azure/identity och @azure/keyvault-keys. Skapa en autentiseringsuppgift, till exempel DefaultAzureCredential, för att implementera lösenordslösa anslutningar till valvet. Använd den autentiseringsuppgiften för att autentisera med ett KeyClient-objekt .
// 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");
Skapa ett CryptographyClient-objekt
CryptographyClient-objektet är det operativa objektet i SDK:t och använder din nyckel för att utföra åtgärder som att kryptera, dekryptera, signera och verifiera, omsluta och packa upp.
Använd dina identitetsautentiseringsuppgifter från Din KeyClient, tillsammans med nyckelnamnet, för att skapa en CryptographyClient för att utföra åtgärder.
// 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);
}