Utilizar os segredos do Azure Key Vault nos Pipelines do Azure
Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019
O Azure Key Vault permite que os desenvolvedores armazenem e gerenciem com segurança informações confidenciais, como chaves de API, credenciais ou certificados. O serviço Azure Key Vault dá suporte a dois tipos de contêineres: cofres e pools HSM (Módulo de Segurança de Hardware) gerenciados. Os Vaults podem armazenar software, segredos e certificados apoiados por HSM, enquanto os pools de HSM gerenciados suportam exclusivamente chaves apoiadas por HSM.
Neste tutorial, vai aprender a:
- Criar um Cofre da Chave do Azure usando a CLI do Azure
- Adicionar um segredo e configurar o acesso ao cofre de chaves do Azure
- Use segredos em seu pipeline
Pré-requisitos
Uma organização e um projeto do Azure DevOps. Crie uma organização ou um projeto , caso ainda não o tenha feito.
Uma subscrição do Azure. Crie uma conta do Azure gratuitamente se ainda não tiver uma.
Criar um repositório
Se você já tiver seu próprio repositório, prossiga para a próxima etapa. Caso contrário, siga as instruções abaixo para inicializar o repositório. Usaremos este repositório do Azure para configurar nosso pipeline.
Entre em 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 LEIA-ME.
Criar um Azure Key Vault
Entre no Portal do Azure e selecione 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. Pode utilizar
az account list
para gerar uma lista das suas subscrições.az account set --subscription <YOUR_SUBSCRIPTION_NAME_OR_ID>
Defina sua região padrão do Azure. Você pode usar
az account list-locations
para gerar uma lista de regiões disponíveis.az config set defaults.location=<YOUR_REGION>
Criar um novo grupo de recursos.
az group create --name <YOUR_RESOURCE_GROUP_NAME>
Crie um novo Cofre da Chave do Azure.
az keyvault create \ --name <YOUR_KEY_VAULT_NAME> \ --resource-group <YOUR_RESOURCE_GROUP_NAME>
Crie um novo segredo no seu 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 ao cofre de chaves
Para acessar nosso Cofre da Chave do Azure, precisamos configurar uma entidade de serviço para conceder acesso ao Azure Pipelines. Siga este guia para criar uma entidade de serviço com a CLI do Azure e continue com as próximas etapas 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 nova política.
Em Permissões secretas, selecione Obter e Listar.
Selecione Avançar e, em seguida, 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, em seguida , Avançar mais uma vez.
Reveja as suas políticas e, em seguida, 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 podermos verificar a conexão, precisamos conceder à entidade de serviço acesso de leitura no nível da assinatura:
Navegue até o portal do Azure
Selecione Subscrições no painel de navegação esquerdo e, em seguida, localize e selecione a sua subscrição.
Selecione Controle de acesso e, em seguida, selecione Adicionar>atribuição de função.
Selecione Leitor no separador Função e, em seguida, selecione Seguinte.
Selecione Utilizador, grupo ou entidade de serviço e, em seguida, selecione Selecionar membros.
Use a barra de pesquisa para encontrar sua entidade de serviço e, em seguida, selecione o sinal "+" para selecioná-lo e, em seguida, clique no botão Selecionar .
Selecione Rever + atribuir, reveja as suas definições e, em seguida, selecione Rever + atribuir mais uma vez para confirmar as suas escolhas e adicionar a atribuição de função.
Criar uma conexão de serviço
Entre em sua organização do Azure DevOps e navegue até seu projeto.
Selecione Configurações do>projeto Conexões de serviço e, em seguida, selecione Nova conexão de serviço para criar uma nova conexão de serviço.
Selecione Azure Resource Manager e, em seguida, selecione Next.
Selecione Entidade de serviço (manual) e, em seguida, selecione Seguinte.
Selecione Azure Cloud for Environment e Subscrição para o Nível de Âmbito e, em seguida, introduza o seu ID de Subscrição e o seu Nome de Subscrição.
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: seu 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 principal de serviço.
Quando 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 em sua coleção de DevOps do Azure e navegue até seu projeto.
Selecione Configurações do>projeto Conexões>de serviço Nova conexão de serviço e, em seguida, selecione Azure Resource Manager para criar uma nova conexão de serviço ARM.
Dê um nome à sua conexão de serviço e selecione Nuvem do Azure para Ambiente e Assinatura para o Nível de Escopo.
Introduza o seu ID de Subscrição e o seu Nome de Subscrição.
Preencha os seguintes campos com as informações obtidas ao criar a entidade de serviço e selecione Verificar conexão quando terminar:
- ID do cliente da entidade de serviço: seu 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 principal 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 em sua organização do Azure DevOps e navegue até seu projeto.
Selecione Pipelines e, em seguida, selecione New Pipeline.
Selecione Usar o editor clássico para criar um pipeline clássico.
Selecione Azure Repos Git, selecione seu repositório e ramificação padrão e selecione Continuar.
Selecione o modelo de pipeline .Net Desktop .
Para este exemplo, só precisaremos das duas últimas tarefas. Pressione CTRL e, em seguida, selecione as cinco primeiras tarefas, clique com o botão direito do mouse e escolha Remover tarefas(ões) selecionada(s) para excluí-las.
Selecione + para adicionar uma nova tarefa. Procure a tarefa Linha de comando , selecione-a e, em seguida, selecione Adicionar para adicioná-la ao seu pipeline. Uma vez adicionado, configure-o da seguinte forma:
- Nome para exibição: Criar arquivo
- Roteiro:
echo $(YOUR_SECRET_NAME) > secret.txt
Selecione + para adicionar uma nova tarefa. Procure a tarefa Cofre da Chave do Azure, selecione-a e selecione Adicionar* para adicioná-la ao seu pipeline. Uma vez adicionado, configure-o da seguinte forma:
- Nome para exibição: Azure Key Vault
- Assinatura do Azure: selecione sua conexão de serviço principal de serviço que você criou anteriormente
- Cofre de chaves: selecione o cofre de chaves
- Filtro secreto: Uma lista separada por vírgulas de nomes secretos ou deixe * 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
- Índice: 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 para publicação: $(build.artifactstagingdirectory)
- Nome do artefato: drop
- Local de publicação do artefato: Azure Pipelines
Selecione Salvar e enfileirar e, em seguida, 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 seu cofre de chaves do Azure.
Entre em sua coleção de DevOps do Azure e navegue até seu projeto.
Selecione Pipelines e, em seguida, selecione Builds.
Selecione Novo>pipeline de compilação.
Selecione Usar o editor clássico para criar um novo pipeline de compilação clássico.
Selecione Azure Repos Git, selecione seu repositório e sua ramificação padrão e selecione Continuar.
Selecione o modelo de pipeline .Net Desktop e, em seguida, selecione Aplicar.
Para este exemplo, só precisaremos das duas últimas tarefas. Pressione CTRL e, em seguida, selecione as cinco primeiras tarefas, clique com o botão direito do mouse e escolha Remover tarefas(ões) selecionada(s) para excluí-las.
Selecione + para adicionar uma nova tarefa. Procure a tarefa Linha de comando , selecione-a e, em seguida, selecione Adicionar para adicioná-la ao seu pipeline. Uma vez adicionado, configure-o da seguinte forma:
- Nome para exibição: Criar arquivo
- Roteiro:
echo $(YOUR_SECRET_NAME) > secret.txt
Selecione + para adicionar uma nova tarefa. Procure a tarefa Cofre da Chave do Azure, selecione-a e selecione Adicionar* para adicioná-la ao seu pipeline. Uma vez adicionado, configure-o da seguinte forma:
- Nome para exibição: Azure Key Vault
- Assinatura do Azure: selecione sua conexão de serviço principal de serviço que você criou anteriormente
- Cofre de chaves: selecione o cofre de chaves
- Filtro secreto: Uma lista separada por vírgulas de nomes secretos ou deixe * 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
- Índice: 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 para publicação: $(build.artifactstagingdirectory)
- Nome do artefato: drop
- Local de publicação do artefato: Azure Pipelines
Selecione Salvar fila & e, em seguida, selecione Salvar fila & para executar seu pipeline de compilação.
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, em seguida, selecione download para salvar o arquivo de texto.
Abra o arquivo de texto que você acabou de baixar, ele deve conter o segredo do seu cofre de chaves do Azure.
Aviso
Este tutorial é apenas para fins educacionais. Para obter as práticas recomendadas de segurança e como trabalhar com segredos com segurança, consulte Gerenciar segredos em seus aplicativos de servidor com o Azure Key Vault.
Clean up resources (Limpar recursos)
Siga as etapas abaixo para excluir os recursos que você criou:
Se você criou uma nova organização para hospedar seu projeto, veja como excluir sua organização, caso contrário , exclua seu projeto.
Todos os recursos do Azure criados durante este tutorial são hospedados em um único grupo de recursos. Execute o seguinte comando para excluir seu grupo de recursos e todos os seus recursos.
az group delete --name <YOUR_RESOURCE_GROUP_NAME>
FAQ
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 permissão de lista de segredos no cofre de chaves, execute os seguintes comandos para autorizar seu aplicativo a acessar a chave ou segredo no Cofre de Chaves do Azure:
$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;