Introdução às chaves do Azure Key Vault no JavaScript

Este artigo mostra como se conectar ao Azure Key Vault usando a biblioteca cliente de chaves do Azure Key Vault para JavaScript. Uma vez conectado, seu código pode operar nas chaves do cofre.

Referência de API | Pacote (npm) | Código-fonte da biblioteca | Amostras | Enviar comentários

Pré-requisitos

Configurar o seu projeto

  1. Abra um prompt de comando e mude para a pasta do projeto. Altere YOUR-DIRECTORY para o nome da pasta:

    cd YOUR-DIRECTORY
    
  2. Se você ainda não tiver um arquivo package.json no diretório, inicialize o projeto para criar o arquivo:

    npm init -y
    
  3. Instale a biblioteca de clientes de chaves do Azure Key Vault para JavaScript:

    npm install @azure/keyvault-keys
    
  4. Se você quiser usar conexões sem senha usando o Microsoft Entra ID, instale a biblioteca de clientes da Identidade do Azure para JavaScript:

    npm install @azure/identity
    

Autorizar o acesso e se conectar ao Key Vault

O Microsoft Entra ID fornece a conexão mais segura gerenciando a identidade de conexão (identidade gerenciada). Essa funcionalidade sem senha permite que você desenvolva um aplicativo que não requer nenhuma chave armazenada no código.

Antes de se autenticar programaticamente no Azure para usar as chaves do Azure Key Vault, configure seu ambiente.

Diagrama do Azure SDK para fluxo de credenciais do JavaScript.

Um desenvolvedor deve instalar a CLI do Azure e entrar interativamente com o comando az login para fazer logon no Azure antes de usar o DefaultAzureCredential no código.

az login

Crie seu aplicativo

Conforme você compila seu aplicativo, seu código interage com dois tipos de recursos:

  • KeyVaultKey, que inclui:
    • ID, nome e valor.
    • Operações permitidas.
    • Tipo como EC, EC-HSM, RSA, RSA-HSM, oct, oct-HSM.
    • Propriedades como KeyProperties
  • KeyProperties, que incluem os metadados das chaves, como seu nome, versão, marcas, dados de expiração e se está habilitado.

Se você precisar do valor de KeyVaultKey, use métodos que retornam o KeyVaultKey:

Modelo de objeto

A biblioteca de clientes de chaves do Azure Key Vault para JavaScript inclui os seguintes clientes:

  • KeyClient: o objeto KeyClient é o objeto principal no SDK. Esse cliente permite que você execute tarefas de gerenciamento de chaves, como criar, girar, excluir e listar as chaves.
  • O CryptographyClient permite criptografar, descriptografar, assinar, verificar, encapsular e desencapsular chaves.

Diagrama conceitual mostrando o relacionamento dentro da biblioteca cliente entre o KeyClient e o CryptographyClient.

Criar um objeto KeyClient

Depois que o ambiente local e a autorização do Key Vault estiverem configurados, crie um arquivo JavaScript, que inclui os pacotes @azure/identity e @azure/keyvault-keys. Crie uma credencial, como DefaultAzureCredential, para implementar conexões sem senha com o seu cofre. Use essa credencial para autenticar com um 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");

Criar um objeto CryptographyClient

O objeto CryptographyClient é o objeto operacional no SDK, usando sua chave para executar ações como criptografar, descriptografar, assinar e verificar, encapsular e desencapsular.

Use a credencial de identidade de seu KeyClient, juntamente com o nome da chave, para criar um CryptographyClient para executar operações.

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

Confira também

Próximas etapas