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
Uma organização do Azure DevOps e um projeto. Crie uma organização ou um projeto , caso ainda não tenha feito isso.
Uma assinatura do Azure. Crie uma conta do Azure gratuitamente se você ainda não tiver uma.
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.
Entre na sua organização do Azure DevOps e navegue até seu projeto.
Selecione Repositórios e, em seguida, selecione Inicializar para inicializar a ramificação principal com um LEIAME.
Criar um Cofre de chaves do Azure
Entre no Portal do Azure e pressione o botão Cloud Shell no canto superior direito.
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>
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>
Crie um novo grupo de recursos.
az group create --name <YOUR_RESOURCE_GROUP_NAME>
Crie um novo Azure Key Vault.
az keyvault create \ --name <YOUR_KEY_VAULT_NAME> \ --resource-group <YOUR_RESOURCE_GROUP_NAME>
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.
Navegue até o portal do Azure e use a barra de pesquisa para localizar o cofre de chaves criado anteriormente.
Selecione Políticas de acesso e, em seguida, selecione Criar para criar uma política.
Em Permissões de segredo e escolha Obter e Listar.
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.
Selecione Avançar e Avançar mais uma vez.
Examine suas políticas e selecione Criar quando terminar.
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:
Navegue até o portal do Azure.
Selecione Assinaturas no painel de navegação esquerdo e, em seguida, localize e selecione sua assinatura.
Selecione Controle de acesso e selecione Adicionar>Adicionar atribuição de função.
Selecione Leitor na guia Função e selecione Avançar.
Selecione Usuário, grupo ou entidade de serviço e Selecionar membros.
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.
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
Entre na sua organização do Azure DevOps e navegue até seu projeto.
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.
Selecione Azure Resource Manager e, em seguida, Avançar.
Selecione Entidade de serviço (manual) e, em seguida, selecione Avançar.
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.
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.
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.
Selecione Verificar e salvar quando terminar.
Entre na sua coleção do Azure DevOps e navegue até seu projeto.
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.
Dê um nome à conexão de serviço e selecione Nuvem do Azure para Ambiente e Assinatura para o Nível de escopo.
Insira o ID de assinatura e o Nome da assinatura.
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.
Marque a caixa de seleção Permitir que todos os pipelines usem esta conexão e selecione Ok quando terminar.
Criar um novo pipeline
Entre na sua organização do Azure DevOps e navegue até seu projeto.
Selecione Pipelines e escolha Novo Pipeline.
Selecione Usar o editor clássico para criar um pipeline clássico.
Selecione Azure Repos Git, selecione o repositório e a ramificação padrão e selecione Continuar.
Selecione o modelo de pipeline do .Net Desktop.
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.
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
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
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)
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
Selecione Salvar e colocar em fila e selecione Executar para executar o pipeline.
Quando a execução do pipeline estiver concluída, retorne ao resumo do pipeline e selecione o artefato publicado.
Selecione soltar>secret.txt para baixar o artefato publicado.
Abra o arquivo de texto que você acabou de baixar; o arquivo de texto deve conter o segredo do Cofre de chaves do Azure.
Entre na sua coleção do Azure DevOps e navegue até seu projeto.
Selecione Pipelines e escolha Builds.
Selecione Novo>Novo pipeline de build.
Selecione Usar o editor clássico para criar um pipeline de build clássico.
Selecione Azure Repos Git, selecione seu repositório e a ramificação padrão e selecione Continuar.
Selecione o modelo de pipeline . Net Desktop e, em seguida, selecione Aplicar.
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.
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
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
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)
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
Selecione Salvar e colocar em fila e selecione Salvar e colocar em fila para executar o pipeline de build.
Quando a execução do pipeline estiver concluída, selecione Artefatos e, em seguida, selecione soltar.
Na janela recém-aberta, selecione soltar>secret.txt, selecione o ícone de reticências (...) e baixar para salvar o arquivo de texto.
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:
Se você criou uma organização para hospedar o projeto, veja como excluir a organização ou excluir o projeto.
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;