Introducción a las claves de Azure Key Vault en JavaScript

En este artículo se muestra cómo conectarse a Azure Key Vault mediante la biblioteca cliente de claves de Azure Key Vault para JavaScript. Una vez conectado, su código puede operar con las claves del almacén.

Referencia de API | Paquete (npm) | Código fuente de la biblioteca | Muestras | Enviar comentarios

Prerrequisitos

Configuración del proyecto

  1. Abra un símbolo del sistema y cambie a la carpeta del proyecto. Cambie YOUR-DIRECTORY al nombre de la carpeta:

    cd YOUR-DIRECTORY
    
  2. Si aún no tiene un archivo package.json en el directorio, inicialice el proyecto para crearlo:

    npm init -y
    
  3. Instale la biblioteca cliente de claves de Azure Key Vault para JavaScript:

    npm install @azure/keyvault-keys
    
  4. Si quiere usar conexiones sin contraseña mediante Microsoft Entra ID, instale la biblioteca cliente de Azure Identity para JavaScript:

    npm install @azure/identity
    

Autorización de acceso y conexión a Key Vault

Microsoft Entra ID proporciona la conexión más segura mediante la administración de la identidad de conexión (identidad administrada). Esta funcionalidad sin contraseña permite desarrollar una aplicación que no requiere tener claves almacenadas en el código.

Antes de autenticarse mediante programación en Azure para usar claves de Azure Key Vault, asegúrese de configurar el entorno.

Diagram of Azure SDK for JavaScript credential flow.

Un desarrollador debe instalar la CLI de Azure e iniciar sesión de forma interactiva con el comando az login para iniciar sesión en Azure antes de usar DefaultAzureCredential en el código.

az login

Compilación de la aplicación

A medida que compile la aplicación, el código interactuará con dos tipos de recursos:

  • KeyVaultKey, que incluye:
    • Identificador, nombre y valor.
    • Operaciones permitidas.
    • Tipo como EC, EC-HSM, RSA, RSA-HSM, oct, oct-HSM.
    • Propiedades como KeyProperties
  • KeyProperties, que incluye los metadatos de la clave, como su nombre, versión, etiquetas, datos de expiración y si está habilitado.

Si necesita el valor de KeyVaultKey, use métodos que devuelvan KeyVaultKey:

Modelo de objetos

La biblioteca cliente de claves de Azure Key Vault para JavaScript incluye los siguientes clientes:

  • KeyClient: el objeto KeyClient es el objeto principal del SDK. Este cliente permite realizar tareas de administración de claves, como crear, rotar, eliminar y enumerar las claves.
  • CryptographyClient permite cifrar, descifrar, firmar, comprobar, encapsular y desencapsular claves.

Conceptual diagram showing the relationship within the client library between the KeyClient and CryptographyClient.

Creación de un objeto KeyClient

Una vez que se han configurado la autorización de Key Vault y el entorno local, cree un archivo JavaScript que incluya los paquetes @azure/identity y @azure/keyvault-keys. Cree una credencial, como DefaultAzureCredential, para implementar conexiones sin contraseña en el almacén. Use esa credencial para autenticarse con un objeto 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");

Creación de un objeto CryptographyClient

El objeto CryptographyClient es el objeto operativo en el SDK, con la clave para realizar acciones como cifrar, descifrar, firmar y comprobar, encapsular y desencapsular.

Use la credencial de identidad de KeyClient, junto con el nombre de clave, para crear un CryptographyClient para realizar operaciones.

// 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);
}

Consulte también

Pasos siguientes