Início Rápido: Biblioteca de clientes de segredo do Azure Key Vault para Java

Introdução à biblioteca de clientes do segredo do Azure Key Vault para JavaScript. O Azure Key Vault é um serviço de nuvem que funciona como um repositório seguro de segredos. Você pode armazenar chaves, senhas, certificados e outros segredos com segurança. Os cofres de chaves do Azure podem ser criados e gerenciados por meio do portal do Azure. Neste início rápido, você aprende a criar, recuperar e excluir segredos de um cofre de chaves do Azure usando a biblioteca de clientes do JavaScript

Recursos da biblioteca de clientes do Key Vault:

Documentação de referência da API | Código-fonte da biblioteca | Pacote (npm)

Para obter mais informações sobre o Key Vault e os segredos, confira:

Pré-requisitos

Este início rápido pressupõe que você esteja executando a CLI do Azure.

Entrar no Azure

  1. Execute o comando login.

    az login
    

    Se a CLI puder abrir o navegador padrão, ela o fará e carregará uma página de entrada do Azure.

    Caso contrário, abra uma página de navegador em https://aka.ms/devicelogin e insira o código de autorização exibido no terminal.

  2. Entre com suas credenciais de conta no navegador.

Criar um aplicativo Node.js

Crie um aplicativo Node.js que usa seu cofre de chaves.

  1. Em um terminal, crie uma pasta nomeada key-vault-node-app e altere para essa pasta:

    mkdir key-vault-node-app && cd key-vault-node-app
    
  2. Inicializar o projeto Node.js:

    npm init -y
    

Instalar pacotes do Key Vault

  1. Usando o terminal, instale a biblioteca de clientes de segredos do Azure Key Vault, @azure/keyvault-keys para Node.js.

    npm install @azure/keyvault-secrets
    
  2. Instale a biblioteca de clientes da Identidade do Azure, pacote @azure/identity para autenticar em um cofre de chaves.

    npm install @azure/identity
    

Permitir acesso ao cofre de chaves

Para conceder permissões de aplicativo ao cofre de chaves por meio do Controle de Acesso Baseado em Função (RBAC), atribua uma função usando o comando az role assignment create da CLI do Azure.

az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Substitua <id-do-aplicativo>, <id-da-assinatura>, <nome-do-grupo-de-recursos> e <seu-nome-do-cofre-exclusivo> pelos valores reais. <id-do-aplicativo> é a ID do aplicativo (cliente) do aplicativo registrado no Azure AD.

Definir variáveis de ambiente

Este aplicativo usa o nome do cofre de chaves como uma variável de ambiente chamada KEY_VAULT_NAME.

set KEY_VAULT_NAME=<your-key-vault-name>

Autenticar e criar um cliente

As solicitações do aplicativo para a maioria dos serviços do Azure precisam ser autorizadas. O uso do método DefaultAzureCredential fornecido pela biblioteca de clientes da Identidade do Azure é a abordagem recomendada para implementar conexões sem senha com os serviços do Azure no código. DefaultAzureCredential dá suporte a vários métodos de autenticação e determina quais métodos devem ser usados no runtime. Essa abordagem permite que seu aplicativo use diferentes métodos de autenticação em ambientes diferentes (local versus produção) sem implementar código específico do ambiente.

Neste guia de início rápido, DefaultAzureCredential se autenticará no cofre de chaves usando as credenciais do usuário de desenvolvimento local conectado à CLI do Azure. Quando o aplicativo é implantado no Azure, o mesmo código DefaultAzureCredential pode descobrir e usar automaticamente uma identidade gerenciada atribuída a um Serviço de Aplicativo, máquina virtual ou outros serviços. Para obter mais informações, confira Visão geral da Identidade Gerenciada.

Neste código, o nome do cofre de chaves é usado para criar para a URI do cofre de chaves, no formato https://<your-key-vault-name>.vault.azure.net. Para obter mais informações sobre como se autenticar no cofre de chaves, confira Guia do Desenvolvedor.

Exemplo de código

Os exemplos de código abaixo mostrarão como criar um cliente, definir, recuperar e excluir um segredo.

Esse código usa os seguintes métodos e classes de Segredo do Key Vault:

Configurar o framework de aplicativos

  1. Crie um novo arquivo de texto e cole o código a seguir no arquivo index.js.

    const { SecretClient } = require("@azure/keyvault-secrets");
    const { DefaultAzureCredential } = require("@azure/identity");
    
    async function main() {
      // If you're using MSI, DefaultAzureCredential should "just work".
      // Otherwise, DefaultAzureCredential expects the following three environment variables:
      // - AZURE_TENANT_ID: The tenant ID in Azure Active Directory
      // - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant
      // - AZURE_CLIENT_SECRET: The client secret for the registered application
      const credential = new DefaultAzureCredential();
    
      const keyVaultName = process.env["KEY_VAULT_NAME"];
      if(!keyVaultName) throw new Error("KEY_VAULT_NAME is empty");
      const url = "https://" + keyVaultName + ".vault.azure.net";
    
      const client = new SecretClient(url, credential);
    
      // Create a secret
      // The secret can be a string of any kind. For example,
      // a multiline text block such as an RSA private key with newline characters,
      // or a stringified JSON object, like `JSON.stringify({ mySecret: 'MySecretValue'})`.
      const uniqueString = new Date().getTime();
      const secretName = `secret${uniqueString}`;
      const result = await client.setSecret(secretName, "MySecretValue");
      console.log("result: ", result);
    
      // Read the secret we created
      const secret = await client.getSecret(secretName);
      console.log("secret: ", secret);
    
      // Update the secret with different attributes
      const updatedSecret = await client.updateSecretProperties(secretName, result.properties.version, {
        enabled: false
      });
      console.log("updated secret: ", updatedSecret);
    
      // Delete the secret immediately without ability to restore or purge.
      await client.beginDeleteSecret(secretName);
    }
    
    main().catch((error) => {
      console.error("An error occurred:", error);
      process.exit(1);
    });
    

Executar o aplicativo de exemplo

  1. Executar o aplicativo:

    node index.js
    
  2. Os métodos create e get retornam um objeto JSON completo para o segredo:

    {
        "value": "MySecretValue",
        "name": "secret1637692472606",
        "properties": {
            "createdOn": "2021-11-23T18:34:33.000Z",
            "updatedOn": "2021-11-23T18:34:33.000Z",
            "enabled": true,
            "recoverableDays": 90,
            "recoveryLevel": "Recoverable+Purgeable",
            "id": "https: //YOUR-KEYVAULT-NAME.vault.azure.net/secrets/secret1637692472606/YOUR-VERSION",
            "vaultUrl": "https: //YOUR-KEYVAULT-NAME.vault.azure.net",
            "version": "YOUR-VERSION",
            "name": "secret1637692472606"
        }
    }
    

    O método update retorna os pares nome/valores das propriedades:

    "createdOn": "2021-11-23T18:34:33.000Z",
    "updatedOn": "2021-11-23T18:34:33.000Z",
    "enabled": true,
    "recoverableDays": 90,
    "recoveryLevel": "Recoverable+Purgeable",
    "id": "https: //YOUR-KEYVAULT-NAME.vault.azure.net/secrets/secret1637692472606/YOUR-VERSION",
    "vaultUrl": "https: //YOUR-KEYVAULT-NAME.vault.azure.net",
    "version": "YOUR-VERSION",
    "name": "secret1637692472606"
    

Integrando-se à Configuração de Aplicativo do Azure

O SDK do Azure fornece um método auxiliar, parseKeyVaultSecretIdentifier,para analisar a ID do Segredo do Key Vault. Isso será necessário se você usar referências de Configuração de Aplicativos do Key Vault. A Configuração de Aplicativo armazena a ID do Segredo do Key Vault. Você precisa do método parseKeyVaultSecretIdentifier para analisar essa ID para o nome do segredo. Depois de ter o nome do segredo, é possível obtero valor do segredo atual usando o código deste início rápido.

Próximas etapas

Neste guia de início rápido, você criou um cofre de chaves, armazenou um segredo e o recuperou. Para saber mais sobre o Key Vault e como integrá-lo a seus aplicativos, confira os artigos abaixo.