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

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

Pacote de referência | da API (npm) | Exemplos de | código-fonte | da biblioteca Dar feedback

Pré-requisitos

Configure 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 package.json arquivo em seu diretório, inicialize o projeto para criar o arquivo:

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

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

    npm install @azure/identity
    

Autorize o acesso e conecte-se ao Cofre da Chave

O Microsoft Entra ID fornece a conexão mais segura gerenciando a identidade da 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 autenticar programaticamente no Azure para usar chaves do Cofre da Chave do Azure, certifique-se de configurar seu ambiente.

Diagram of Azure SDK for JavaScript credential flow.

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 código DefaultAzureCredential.

az login

Compilar a aplicação

À medida que você cria seu aplicativo, seu código interage com dois tipos de recursos:

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

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

Modelo de objeto

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

  • KeyClient: O objeto KeyClient é o objeto superior no SDK. Esse cliente permite que você execute tarefas de gerenciamento de chaves, como criar, girar, excluir e listar as chaves.
  • CryptographyClient permite-lhe encriptar, desencriptar, assinar, verificar, encapsular e desembrulhar chaves.

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

Criar um objeto KeyClient

Depois que o ambiente local e a autorização do Cofre da Chave estiverem configurados, crie um arquivo JavaScript, que inclua os pacotes @azure/identity e @azure /keyvault-keys . Crie uma credencial, como DefaultAzureCredential, para implementar conexões sem senha ao 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 desempacotar.

Use sua 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);
}

Consulte também

Próximos passos