Share via


Usar segredos do Azure Key Vault no Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

O Cofre de chaves do Azure permite que os desenvolvedores armazenem e gerenciem com segurança informações confidenciais, como chaves de API, credenciais ou certificados. O serviço do Cofre de chaves do Azure aceita dois tipos de contêiner: cofres e pools de HSM (módulo de segurança de hardware) gerenciado. Os cofres podem armazenar chaves, segredos e certificados com suporte de software e HSM, enquanto os pools HSM gerenciados oferecem suporte exclusivo a chaves apoiadas por HSM.

Neste tutorial, você aprenderá a:

  • Criar um Azure Key Vault usando a CLI do Azure
  • Adicionar um segredo e configurar o acesso ao cofre de chaves do Azure
  • Usar segredos em seu pipeline

Pré-requisitos

Criar um repositório

Se você já tiver seu próprio repositório, vá para a próxima etapa. Caso contrário, siga as instruções abaixo para inicializar o repositório. Usaremos o Repositório do Azure para configurar nosso pipeline.

  1. Entre na sua organização do Azure DevOps e navegue até seu projeto.

  2. Selecione Repositórios e, em seguida, selecione Inicializar para inicializar a ramificação principal com um LEIAME.

    Uma captura de tela mostrando como inicializar um repositório com um arquivo LEIAME.

Criar um Cofre de chaves do Azure

  1. Entre no Portal do Azure e pressione o botão Cloud Shell no canto superior direito.

  2. Se você tiver mais de uma assinatura do Azure associada à sua conta, use o comando abaixo para especificar uma assinatura padrão. Você pode usar az account list para gerar uma lista das suas assinaturas.

    az account set --subscription <YOUR_SUBSCRIPTION_NAME_OR_ID>
    
  3. Defina sua região do Azure padrão. Você pode usar az account list-locations para gerar uma lista de regiões disponíveis.

    az config set defaults.location=<YOUR_REGION>
    
  4. Crie um novo grupo de recursos.

    az group create --name <YOUR_RESOURCE_GROUP_NAME>
    
  5. Crie um novo Azure Key Vault.

    az keyvault create \
      --name <YOUR_KEY_VAULT_NAME> \
      --resource-group <YOUR_RESOURCE_GROUP_NAME>
    
  6. Crie um segredo no cofre de chaves do Azure.

    az keyvault secret set \
      --name <YOUR_SECRET_NAME> \
      --value <YOUR_ACTUAL_SECRET> \
      --vault-name <YOUR_KEY_VAULT_NAME>
    

Configurar políticas de acesso do cofre de chaves

Para acessar nosso Cofre de chaves do Azure, precisamos configurar uma entidade de serviço para conceder acesso aos Pipelines do Azure. Siga este guia para criar uma entidade de serviço com a CLI do Azure e continue com as próximas etapas descritas nesta seção.

  1. Navegue até o portal do Azure e use a barra de pesquisa para localizar o cofre de chaves criado anteriormente.

    Uma captura de tela mostrando como pesquisar pelo seu Azure Key Vault.

  2. Selecione Políticas de acesso e, em seguida, selecione Criar para criar uma política.

  3. Em Permissões de segredo e escolha Obter e Listar.

  4. Selecione Avançar e selecione a entidade de serviço criada anteriormente. Uma entidade de serviço é um objeto que representa um aplicativo ou serviço que está solicitando acesso aos recursos do Azure.

  5. Selecione Avançar e Avançar mais uma vez.

  6. Examine suas políticas e selecione Criar quando terminar.

Observação

Não há suporte para os Cofres de Chaves do Azure que usam o RBAC do Azure (controle de acesso baseado em função) do Azure.

Adicionar atribuição de função

Na próxima etapa, criaremos uma conexão de serviço ARM usando a entidade de serviço. Antes de verificarmos a conexão, precisamos conceder à entidade de serviço acesso de Leitura no nível de assinatura:

  1. Navegue até o portal do Azure.

  2. Selecione Assinaturas no painel de navegação esquerdo e, em seguida, localize e selecione sua assinatura.

  3. Selecione Controle de acesso e selecione Adicionar>Adicionar atribuição de função.

    Captura de tela mostrando como adicionar uma nova atribuição de função no nível da assinatura.

  4. Selecione Leitor na guia Função e selecione Avançar.

  5. Selecione Usuário, grupo ou entidade de serviço e Selecionar membros.

    Captura de tela mostrando como adicionar membros à atribuição de função no Azure.

  6. Use a barra de pesquisa para encontrar sua entidade de serviço e, em seguida, escolha o sinal de "+" para selecioná-la. Depois, clique no botão Selecionar.

  7. Selecione Revisar + atribuir, revise suas configurações e selecione Revisar + atribuir mais uma vez para confirmar suas escolhas e adicionar a atribuição de função.

Criar uma conexão de serviço

  1. Entre na sua organização do Azure DevOps e navegue até seu projeto.

  2. Selecione Configurações do projeto>Conexões de serviço e selecione Nova conexão de serviço para criar uma conexão de serviço.

  3. Selecione Azure Resource Manager e, em seguida, Avançar.

  4. Selecione Entidade de serviço (manual) e, em seguida, selecione Avançar.

  5. Selecione Nuvem do Azure para Ambiente e Assinatura para o Nível de escopo. Em seguida, insira o ID de assinatura e o Nome de assinatura.

  6. Preencha os seguintes campos com as informações obtidas ao criar a entidade de serviço e selecione Verificar quando terminar:

    • ID da entidade de serviço: sua appId da entidade de serviço.
    • Chave da Entidade de Serviço: sua senha da entidade de serviço.
    • ID do locatário: seu locatário da entidade de serviço.
  7. Depois que a verificação for bem-sucedida, forneça um nome e uma descrição (opcional) para sua conexão de serviço e marque a caixa de seleção Conceder permissão de acesso a todos os pipelines.

  8. Selecione Verificar e salvar quando terminar.

    Captura de tela mostrando como adicionar uma Conexão de serviço do Azure Resource Manager usando entidade de serviço.

  1. Entre na sua coleção do Azure DevOps e navegue até seu projeto.

  2. Selecione Configurações do projeto>Conexões de serviço>Nova conexão de serviço e selecione Azure Resource Manager para criar uma conexão de serviço do ARM.

  3. Dê um nome à conexão de serviço e selecione Nuvem do Azure para Ambiente e Assinatura para o Nível de escopo.

  4. Insira o ID de assinatura e o Nome da assinatura.

  5. Preencha os seguintes campos com as informações obtidas ao criar a entidade de serviço e selecione Verificar conexão quando terminar:

    • ID de cliente da entidade de serviço: o appId da entidade de serviço.
    • Chave da Entidade de Serviço: sua senha da entidade de serviço.
    • ID do locatário: seu locatário da entidade de serviço.
  6. Marque a caixa de seleção Permitir que todos os pipelines usem esta conexão e selecione Ok quando terminar.

    Captura de tela mostrando como criar uma conexão de serviço ARM usando a entidade de serviço no Azure DevOps Server 2019.

Criar um novo pipeline

  1. Entre na sua organização do Azure DevOps e navegue até seu projeto.

  2. Selecione Pipelines e escolha Novo Pipeline.

  3. Selecione Usar o editor clássico para criar um pipeline clássico.

  4. Selecione Azure Repos Git, selecione o repositório e a ramificação padrão e selecione Continuar.

  5. Selecione o modelo de pipeline do .Net Desktop.

  6. Para este exemplo, precisaremos apenas das duas últimas tarefas. Pressione CTRL e selecione as cinco primeiras tarefas, clique com o botão direito do mouse e escolha Remover tarefas selecionadas para excluí-las.

    Captura de tela mostrando como excluir várias tarefas de pipeline.

  7. Selecione + para adicionar uma nova tarefa. Pesquise e selecione a tarefa Linha de comando e selecione Adicionar para adicioná-la ao pipeline. Após adicionar, configure-a da seguinte maneira:

    • Nome para exibição: Criar arquivo
    • Script: echo $(YOUR_SECRET_NAME) > secret.txt

    Uma captura de tela mostrando como configurar a tarefa de linha de comando.

  8. Selecione + para adicionar uma nova tarefa. Pesquise e selecione a tarefa Cofre de chaves do Azure e selecione Adicionar* para adicioná-la ao pipeline. Após adicionar, configure-a da seguinte maneira:

    • Nome para exibição: Cofre de chaves do Azure
    • Assinatura do Azure: selecione a conexão de serviço principal que você criou anteriormente
    • Cofre de chaves: selecione o cofre de chaves
    • Filtro secreto: uma lista separada por vírgulas de nomes secretos ou mantenha * para baixar todos os segredos do cofre de chaves selecionado

    Captura de tela mostrando como configurar a tarefa do Cofre de chaves do Azure em pipelines clássicos.

  9. Selecione a tarefa Copiar arquivos e preencha os campos obrigatórios da seguinte maneira:

    • Nome para exibição: Copiar arquivo
    • Conteúdo: secret.txt
    • Pasta de destino: $(build.artifactstagingdirectory)

    Captura de tela mostrando como configurar a tarefa Copiar arquivos em pipelines clássicos.

  10. Selecione a tarefa Publicar artefatos e preencha os campos obrigatórios da seguinte maneira:

    • Nome para exibição: Publicar artefato
    • Caminho a ser publicado: $(build.artifactstagingdirectory)
    • Nome do artefato: soltar
    • Local de publicação do artefato: Azure Pipelines

    Captura de tela mostrando como configurar a tarefa Publicar artefatos em pipelines clássicos.

  11. Selecione Salvar e colocar em fila e selecione Executar para executar o pipeline.

  12. Quando a execução do pipeline estiver concluída, retorne ao resumo do pipeline e selecione o artefato publicado.

  13. Selecione soltar>secret.txt para baixar o artefato publicado.

    Captura de tela mostrando como baixar a o artefato publicado.

  14. Abra o arquivo de texto que você acabou de baixar; o arquivo de texto deve conter o segredo do Cofre de chaves do Azure.

  1. Entre na sua coleção do Azure DevOps e navegue até seu projeto.

  2. Selecione Pipelines e escolha Builds.

  3. Selecione Novo>Novo pipeline de build.

  4. Selecione Usar o editor clássico para criar um pipeline de build clássico.

  5. Selecione Azure Repos Git, selecione seu repositório e a ramificação padrão e selecione Continuar.

  6. Selecione o modelo de pipeline . Net Desktop e, em seguida, selecione Aplicar.

  7. Para este exemplo, precisaremos apenas das duas últimas tarefas. Pressione CTRL e selecione as cinco primeiras tarefas, clique com o botão direito do mouse e escolha Remover tarefas selecionadas para excluí-las.

    Captura de tela mostrando como excluir várias tarefas de pipeline em pipelines clássicos no Azure DevOps Server 2019.

  8. Selecione + para adicionar uma nova tarefa. Pesquise e selecione a tarefa Linha de comando e selecione Adicionar para adicioná-la ao pipeline. Após adicionar, configure-a da seguinte maneira:

    • Nome para exibição: Criar arquivo
    • Script: echo $(YOUR_SECRET_NAME) > secret.txt

    Captura de tela mostrando como configurar a tarefa de linha de comando em pipelines clássicos no Azure DevOps Server 2019.

  9. Selecione + para adicionar uma nova tarefa. Pesquise e selecione a tarefa Cofre de chaves do Azure e selecione Adicionar* para adicioná-la ao pipeline. Após adicionar, configure-a da seguinte maneira:

    • Nome para exibição: Cofre de chaves do Azure
    • Assinatura do Azure: selecione a conexão de serviço principal que você criou anteriormente
    • Cofre de chaves: selecione o cofre de chaves
    • Filtro secreto: uma lista separada por vírgulas de nomes secretos ou mantenha * para baixar todos os segredos do cofre de chaves selecionado

    Captura de tela mostrando como configurar a tarefa de Cofre de chaves do Azure em um pipeline clássico no Azure DevOps Server 2019.

  10. Selecione a tarefa Copiar arquivos e preencha os campos obrigatórios da seguinte maneira:

    • Nome para exibição: Copiar arquivo
    • Conteúdo: secret.txt
    • Pasta de destino: $(build.artifactstagingdirectory)

    Captura de tela mostrando como configurar a tarefa Copiar arquivos em pipelines clássicos no Azure DevOps Server 2019.

  11. Selecione a tarefa Publicar artefatos e preencha os campos obrigatórios da seguinte maneira:

    • Nome para exibição: Publicar artefato
    • Caminho a ser publicado: $(build.artifactstagingdirectory)
    • Nome do artefato: soltar
    • Local de publicação do artefato: Azure Pipelines

    Captura de tela mostrando como configurar a tarefa Publicar artefatos em pipelines clássicos no Azure DevOps Server 2019.

  12. Selecione Salvar & colocar em fila e selecione Salvar & colocar em fila para executar o pipeline de build.

  13. Quando a execução do pipeline estiver concluída, selecione Artefatos e, em seguida, selecione soltar.

  14. Na janela recém-aberta, selecione soltar>secret.txt, selecione o ícone de reticências (...) e baixar para salvar o arquivo de texto.

  15. Abra o arquivo de texto que você acabou de baixar, o qual deve conter o segredo do cofre de chaves do Azure.

Aviso

Este tutorial é somente para fins educacionais. Para obter as melhores práticas de segurança e como trabalhar em segurança com segredos, confira Gerenciar segredos em seus aplicativos de servidor com o Azure Key Vault.

Limpar os recursos

Siga as etapas abaixo para excluir os recursos que você criou:

  1. Se você criou uma organização para hospedar o projeto, veja como excluir a organização ou excluir o projeto.

  2. Todos os recursos do Azure criados durante o tutorial são hospedados em um único grupo de recursos. Execute o seguinte comando para excluir o grupo de recursos e todos os recursos pertinentes.

    az group delete --name <YOUR_RESOURCE_GROUP_NAME>
    

Perguntas frequentes

P: Estou recebendo o seguinte erro: "O usuário ou grupo não tem permissão de lista de segredos". O que devo fazer?

R: Se você encontrar um erro indicando que o usuário ou grupo não tem a permissão de lista de segredos no cofre de chaves, execute os seguintes comandos para autorizar seu aplicativo a acessar a chave ou o segredo no Azure Key Vault:

$ErrorActionPreference="Stop";
$Credential = Get-Credential;
Connect-AzAccount -SubscriptionId <YOUR_SUBSCRIPTION_ID> -Credential $Credential;
$spn=(Get-AzureRmADServicePrincipal -SPN <YOUR_SERVICE_PRINCIPAL_ID>);
$spnObjectId=$spn.Id;
Set-AzureRmKeyVaultAccessPolicy -VaultName key-vault-tutorial -ObjectId $spnObjectId -PermissionsToSecrets get,list;