Tutorial: Usar o Azure Key Vault com uma máquina virtual em JavaScript

O Azure Key Vault ajuda-o a proteger chaves, segredos e certificados, como chaves API e strings de ligação à base de dados.

Neste tutorial, configura uma aplicação Node.js para ler informações de Azure Key Vault usando identidades geridas para Azure recursos. Você aprende a:

  • Criar um cofre de chaves
  • Guardar um segredo no Key Vault
  • Criar uma máquina virtual Azure Linux
  • Habilitar uma identidade gerenciada para a máquina virtual
  • Conceda as permissões necessárias para que a aplicação de consola leia dados do Key Vault
  • Recuperar um segredo da Key Vault

Antes de começares, lê Key Vault conceitos básicos.

Se não tiver uma subscrição Azure, crie uma conta free.

Prerequisites

Para Windows, Mac e Linux:

  • Git
  • Este tutorial exige que execute a CLI do Azure localmente. Deve ter uma versão recente da CLI do Azure instalada. Executar az --version para localizar a versão. Se precisares de instalar ou atualizar a CLI, vê Install CLI do Azure.

Iniciar sessão no Azure

Para iniciar sessão no Azure usando a CLI do Azure, digite:

az login

Criar um grupo de recursos e um cofre de chaves

Este quickstart utiliza um cofre de chaves Azure pré-criado. Você pode criar um cofre de chaves seguindo as etapas nestes guias rápidos:

Alternativamente, pode executar estes comandos do CLI do Azure.

Important

Cada cofre de chaves deve ter um nome exclusivo. Substitua <vault-name> pelo nome do seu cofre de chaves nos exemplos seguintes.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true

Preencha o cofre das chaves com um segredo

Vamos criar um segredo chamado mySecret, com um valor de Sucesso!. Um segredo pode ser uma palavra-passe, uma cadeia de ligação SQL ou qualquer outra informação que precise para manter segura e disponível para a sua aplicação.

Para adicionar um segredo ao cofre de chaves recém-criado, use o seguinte comando:

az keyvault secret set --vault-name "<vault-name>" --name "mySecret" --value "Success!"

Criar uma máquina virtual

Crie uma VM chamada myVM usando um dos seguintes métodos:

Linux Windows
CLI do Azure CLI do Azure
PowerShell PowerShell
Portal do Azure O portal Azure

Para criar uma VM Linux usando o CLI do Azure, use o comando az vm create. O exemplo a seguir adiciona uma conta de usuário chamada azureuser. O --generate-ssh-keys parâmetro é usado para gerar automaticamente uma chave SSH e colocá-la no local da chave padrão (~/.ssh).

az vm create \
  --resource-group <resource-group> \
  --name myVM \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --generate-ssh-keys

Observe o valor de publicIpAddress na saída.

Atribuir uma identidade à VM

Crie uma identidade atribuída pelo sistema para a máquina virtual usando o comando CLI do Azure az vm identity assign:

az vm identity assign --name "myVM" --resource-group "<resource-group>"

Observe a identidade atribuída ao sistema que é exibida no código a seguir. A saída do comando anterior seria:

{
  "systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "userAssignedIdentities": {}
}

Atribuir permissões à identidade da VM

Agora você pode atribuir as permissões de identidade criadas anteriormente ao seu cofre de chaves executando o seguinte comando:

az role assignment create --role "Key Vault Secrets User" --assignee "<system-assigned-identity>" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/<vault-name>

Faça login na VM

Para iniciar sessão na máquina virtual, siga as instruções em Connect e inicie sessão numa máquina virtual Azure a correr Linux ou Connect e inicie sessão numa máquina virtual Azure a correr Windows.

Para iniciar sessão numa VM Linux, pode usar o comando ssh com o <public-ip-address> que aparece no passo Criar uma máquina virtual :

ssh azureuser@<public-ip-address>

Instalar bibliotecas Node.js e npm na VM

Na máquina virtual, instale as duas bibliotecas npm que usaremos em nosso script JavaScript: @azure/keyvault-secrets e @azure/identity.

  1. No terminal SSH, instale o Node.js e o npm com os seguintes comandos:

    curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash - && \
        sudo apt-get install -y nodejs
    
  2. Crie um diretório de aplicativos e inicialize o pacote Node.js:

    mkdir app && cd app && npm init -y
    
  3. Instale os pacotes de serviço Azure usando npm:

    npm install @azure/keyvault-secrets @azure/identity
    

Criar e editar o arquivo JavaScript de exemplo

  1. Na máquina virtual no app diretório, crie um arquivo JavaScript chamado index.js.

    touch index.js
    
  2. Abra o arquivo com o editor de texto Nano :

    nano index.js
    
  3. Copie o seguinte código, substituindo <vault-name> pelo nome do seu cofre de chaves, e cole no editor Nano:

    // index.js
    
    const { SecretClient } = require("@azure/keyvault-secrets");
    const { DefaultAzureCredential } = require("@azure/identity");
    
    // Your Azure Key Vault name and secret name
    const keyVaultName = "<vault-name>";
    const keyVaultUri = `https://${keyVaultName}.vault.azure.net`;
    const secretName = "mySecret";
    
    // Authenticate to Azure
    const credential = new DefaultAzureCredential();
    const client = new SecretClient(keyVaultUri, credential);
    
    // Get Secret with Azure SDK for JS
    const getSecret = async (secretName) => {
    
        return (await client.getSecret(secretName)).value;
    }
    
    getSecret(secretName).then(secretValue => {
        console.log(`The value of secret '${secretName}' in '${keyVaultName}' is: '${secretValue}'`);
    }).catch(err => {
        console.log(err);
    })
    
  4. Salve o arquivo com Ctrl + x.

  5. Quando lhe for solicitado Save modified buffer?, digite y.

  6. Quando solicitado File Name to Write: index.js, digite Enter.

Executar o aplicativo de Node.js de exemplo

Por fim, execute index.js. Se tudo correu bem, deve devolver o valor do seu segredo:

node index.js

The value of secret 'mySecret' in '<vault-name>' is: 'Success!'

Limpeza de recursos

Quando não forem mais necessários, exclua a máquina virtual e o cofre de chaves. Você pode fazer isso rapidamente simplesmente excluindo o grupo de recursos ao qual eles pertencem:

az group delete -g "myResourceGroup"

Próximos passos

Azure Key Vault REST API