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
- Uma assinatura do Azure - crie uma gratuitamente.
- Instância do Azure Key Vault . Analise as políticas de acesso no Cofre da Chave para incluir as permissões necessárias para as tarefas específicas executadas no código.
- Node.js versão LTS
Configure o seu projeto
Abra um prompt de comando e mude para a pasta do projeto. Altere
YOUR-DIRECTORY
para o nome da pasta:cd YOUR-DIRECTORY
Se você ainda não tiver um
package.json
arquivo no diretório, inicialize o projeto para criar o arquivo:npm init -y
Instale a biblioteca de cliente de chaves do Azure Key Vault para JavaScript:
npm install @azure/keyvault-keys
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.
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
,EC-HSM
, ,RSA
,RSA-HSM
,oct
oct-HSM
, . - 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.
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);
}