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 cadeias de ligação a bases de dados.

Neste tutorial, configura uma aplicação Node.js para ler informações de Azure Key Vault usando uma identidade gerida 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
  • Uma versão atual da CLI do Azure. Executa az --version para verificar a versão instalada.

Iniciar sessão no Azure

Inicie sessão no Azure com a CLI do Azure:

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 Portal do Azure

Para criar uma VM Linux usando a CLI do Azure, use o comando create da az-vm. O exemplo seguinte adiciona uma conta de utilizador chamada azureuser. O --generate-ssh-keys parâmetro gera uma chave SSH e armazena-a na localização padrão da chave (~/.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 gerida atribuída pelo sistema para a VM usando o comando az vm identity assign :

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

Note a identidade atribuída pelo sistema na saída:

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

Atribuir permissões à identidade da VM

Atribua à identidade gerida da VM a função Key Vault Secrets User no cofre de chaves:

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>

Iniciar sessão na VM

Para iniciar sessão na VM, 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 com Windows.

Para iniciar sessão numa VM Linux, use ssh com o <public-ip-address> do passo Criar uma máquina virtual:

ssh azureuser@<public-ip-address>

Instalar bibliotecas Node.js e npm na VM

Na VM, instala as duas bibliotecas npm que o script de exemplo usa: @azure/keyvault-secrets e @azure/identity.

  1. No terminal SSH, instale Node.js e npm:

    curl -fsSL 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 do Azure comnpm:

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

Criar e editar o arquivo JavaScript de exemplo

  1. Na VM do app diretório, crie um ficheiro JavaScript chamado index.js:

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

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

    // 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. Guarda o ficheiro com Ctrl+X.

  5. Quando surgir a linha de comandos Save modified buffer?, introduza y.

  6. Na File Name to Write: index.js linha de comandos, prima Enter.

Executar o aplicativo de Node.js de exemplo

Execute index.js. Se tudo estiver configurado corretamente, a aplicação imprime o valor secreto:

node index.js

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

Limpeza de recursos

Quando já não precisares deles, apaga a VM e o cofre de chaves. A forma mais rápida é eliminar o grupo de recursos a que pertencem:

az group delete -g "myResourceGroup"

Próximos passos

Azure Key Vault REST API