Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Azure Key Vault oferece uma solução segura para gerenciar credenciais como chaves, segredos e certificados com segurança perfeita. Com o Azure Pipelines, pode simplificar o processo de aceder e usar cofres de chaves para armazenar e recuperar credenciais.
Em determinados cenários, as organizações priorizam a segurança restringindo o acesso aos cofres de chaves exclusivamente às redes virtuais designadas do Azure para garantir o mais alto nível de segurança para aplicativos críticos.
Neste tutorial, aprenderás como:
- Crie um principal de serviço.
- Crie uma conexão de serviço.
- Configura os teus pontos de acesso de entrada.
- Consulta um cofre privado de chaves do Azure a partir do teu 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 gratuita do Azure se ainda não tiver uma.
- Um cofre de chaves do Azure. Cria um novo Azure cofre de chaves se ainda não tiveres um.
Aceder a um cofre de chaves privadas
Os programadores podem usar o Azure Pipelines para ligar um cofre de chaves Azure a um grupo de variáveis e mapear segredos seletivos do cofre para ele. Um cofre de chaves usado como grupo de variáveis pode ser acedido:
- A partir do Azure DevOps, durante a configuração do grupo de variáveis.
- A partir de um agente autoalojado, durante a execução do trabalho no pipeline.
Criar um principal de serviço
Comece por criar um novo principal de serviço para que possa aceder aos recursos do Azure. De seguida, precisa de criar uma nova ligação de serviço Azure Resource Manager no Azure DevOps. Depois configura uma credencial federada para o seu principal de serviço no Azure antes de verificar e guardar a sua ligação de serviço no Azure DevOps.
Vai para o portal Azure.
No menu de serviço, abra Azure Cloud Shell e depois selecione Bash.
Execute o seguinte comando para criar um novo principal de serviço:
az ad sp create-for-rbac --name YOUR_SERVICE_PRINCIPAL_NAMECertifica-te de copiar a saída porque vais usá-la para criar a ligação de serviço no passo seguinte.
Criar uma conexão de serviço
Inicie sessão na sua organização do Azure DevOps e, em seguida, aceda ao seu projeto.
Selecione Definições do projeto>Conexões de serviço>Nova conexão de serviço.
Selecione Azure Resource Manager e, em seguida, selecione Next.
Para o tipo de Identidade, selecione Registo de Aplicação (Automático) no menu suspenso.
Para Credencial, mantenha o valor predefinido recomendado como federação de identidade de workload.
Para o nível de Escopo, selecione Assinatura e depois selecione a sua assinatura no menu dropdown.
Selecione um grupo de recursos se quiser limitar o acesso apenas ao grupo de recursos especificado.
Introduza um nome para a sua ligação de serviço e depois selecione a caixa Conceder permissão de acesso a todos os pipelines para permitir que todos usem esta ligação de serviço.
Selecione Guardar.
Criar uma credencial federada
Vá ao portal Azure, introduza o ID do cliente do seu principal de serviço na barra de pesquisa e depois selecione a sua candidatura.
Em Gerir, selecione Certificados e segredos>Credenciais federadas.
Selecione Adicionar credencial e, em seguida, para Cenário de credenciais federadas, selecione Outro emissor.
Para o Emissor, cole este URL a seguir para substituir o marcador de posição pelo GUID da sua organização. Pode encontrar o ID da sua organização indo a Definições da organização>Microsoft Entra. Descarregue a lista de organizações Azure DevOps ligadas ao seu diretório.
https://login.microsoftonline.com/<TENANT_ID>/v2.0Para identificador de Sujeito, cole o URL seguinte. Substitua os marcadores de lugar pelo nome da sua organização, nome do projeto e nome da ligação ao serviço.
ENTRA_PREFIX/sc/ORGANIZATION_NAME/PROJECT_NAME/SERVICE_CONNECTION_NAMEIntroduza um nome para a sua credencial federada e depois selecione Adicionar.
Criar uma conexão de serviço
Inicie sessão na sua organização do Azure DevOps e, em seguida, aceda ao seu projeto.
Selecione Definições do projeto>Conexões de serviço>Nova conexão de serviço.
Selecione Azure Resource Manager>Next e depois selecione Service principal (manual)>Next.
Para Ambiente, selecione Azure Cloud, e para Nível de Escopo, selecione Subscrição. Depois introduza o seu ID de subscrição e o nome da sua subscrição.
Introduza as informações da entidade de serviço e, em seguida, selecione Verificar.
Após a verificação, dê um nome à sua ligação ao serviço, adicione uma descrição e depois selecione a opção Conceder permissão de acesso a todos os pipelines. Selecione Verificar e salvar.
Gorjeta
Se não conseguir verificar a sua ligação ao principal de serviço, conceda ao Leitor principal do serviço acesso à sua subscrição.
Aceder a um cofre de chave privada a partir do Azure DevOps
Nesta secção, exploramos dois métodos para aceder a um cofre de chaves privadas a partir do Azure DevOps. Primeiro, usamos grupos de variáveis para ligar e mapear segredos do seu cofre de chaves, seguido de configurar o acesso de entrada permitindo intervalos de IP estáticos. Estabelecemos o acesso de entrada porque o Azure Pipelines utiliza o IP público de Azure DevOps fornecido quando consulta o cofre de chaves do Azure a partir de um grupo de variáveis. Ao adicionar conexões de entrada ao firewall do cofre de chaves, pode ligar-se com sucesso ao seu cofre de chaves do Azure.
Na segunda abordagem, demonstramos como adicionar dinamicamente o endereço IP do agente hospedado pela Microsoft à lista de autorização do firewall do cofre de chaves, consultar o cofre de chaves e, em seguida, remover o IP após a conclusão. Esta segunda abordagem é apenas para fins demonstrativos. Não recomendamos esta abordagem para Azure Pipelines.
Passo 1: Mapear segredos do cofre de chaves com um grupo de variáveis
Inicie sessão na sua organização do Azure DevOps e, em seguida, aceda ao seu projeto.
Selecione Pipelines>Biblioteca e, em seguida, selecione + Grupo de variáveis.
Nomeie o seu grupo de variáveis e depois ative Associar segredos de um Azure Key Vault como variáveis.
Selecione a ligação de serviço que criou anteriormente, selecione o cofre de chaves e depois selecione Autorizar.
Em Variáveis, selecione Adicionar para adicionar o seu segredo e depois selecione Guardar.
Nota
Certifique-se de que a sua ligação de serviço tem as permissões Get e List, e que o seu principal de serviço seja atribuído ao papel de Utilizador de Segredos de Key Vault no seu cofre de chaves privado.
Passo 1.1: Configurar as permissões de ligação ao serviço
Vai ao teu Azure cofre de chaves e depois seleciona Políticas de Acesso.
Selecione Criar e, em Permissões secretas, adicione as permissões Obter e Listar e selecione Avançar.
Adicione a sua ligação de serviço na barra de pesquisa, selecione-a e, em seguida, selecione Seguinte.
Selecione Seguinte mais uma vez, reveja as suas configurações e depois selecione Rever e criar.
Passo 1.2: Configurar as permissões do principal de serviço
Vai ao teu cofre de chaves Azure e depois seleciona Controlo de Acesso (IAM).
Selecione Adicionar>Adicionar atribuição de função e em seguida selecione o separador Função.
Selecione a função de Utilizador dos Segredos do Cofre de Chaves e, em seguida, selecione Seguinte.
Escolha membros selecionados, adicione o seu principal de serviço e escolha Selecionar.
Selecione Verificar + atribuir.
Inicie sessão na sua organização do Azure DevOps e, em seguida, aceda ao seu projeto.
Selecione Pipelines>Biblioteca e, em seguida, selecione + Grupo de variáveis.
Nomeie o seu grupo de variáveis e depois ative Associar segredos de um Azure Key Vault como variáveis.
Selecione a ligação de serviço ao Azure que criou anteriormente no menu suspenso e depois selecione o seu cofre de chaves.
Pode encontrar a mensagem de erro "A ligação ao serviço Azure especificado precisa de ter permissões de gestão de segredos "Obter, Listar" no cofre de chaves selecionado." Vá ao seu cofre de chaves no portal Azure e selecione controlo de acesso (IAM)>Adicionar atribuição de função>utilizador de segredos de cofre de chaves>Seguinte. Adicione o seu principal de serviço e depois selecione Rever + atribuir.
Adiciona os teus segredos e depois seleciona Guardar.
Passo 2: Configurar o acesso de entrada a partir do Azure DevOps
Para habilitar o acesso ao seu cofre de chaves a partir do Azure DevOps, você deve conceder acesso a partir de intervalos de IP estáticos específicos. A localização geográfica da sua organização Azure DevOps determina estes intervalos.
Entre na sua organização do Azure DevOps.
Selecione Definições da organização.
Vá à Visão Geral para encontrar a localização geográfica.
Encontre os seus intervalos IP V4 geográficos.
Importante
Para ligações de entrada nos Estados Unidos, certifique-se de adicionar as faixas de IP para todas as regiões dos EUA.
Configure seu cofre de chaves para permitir o acesso a partir de intervalos de IP estáticos.
Passo 3: Consultar um cofre de chave privada com um grupo de variáveis
Neste exemplo, utiliza o grupo de variáveis que foi configurado anteriormente e autorizado com uma entidade de serviço para consultar e copiar o seu segredo do seu cofre de chaves privado do Azure, utilizando o grupo de variáveis associado. Azure Pipelines usa o IP público publicado quando consulta o cofre de chaves Azure de um grupo de variáveis, por isso certifica-te de que configuras o acesso de entrada para que esta ação funcione corretamente.
variables:
- group: mySecret-VG
steps:
- task: CmdLine@2
inputs:
script: 'echo $(mySecret) > secret.txt'
- task: CopyFiles@2
inputs:
Contents: secret.txt
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
Método alternativo: permitir dinamicamente IP de agente hospedado pela Microsoft
Nesta segunda abordagem, consulta o IP do agente hospedado pela Microsoft no início do seu pipeline. Depois, adiciona-o à lista de permissões do cofre de chaves. Prossiga com as tarefas restantes e depois remova o IP da lista de permissões do firewall do Key Vault.
Nota
Esta abordagem serve apenas para fins demonstrativos. Não recomendamos esta abordagem para Azure Pipelines.
- task: AzurePowerShell@5
displayName: 'Allow agent IP'
inputs:
azureSubscription: 'YOUR_SERVICE_CONNECTION_NAME'
azurePowerShellVersion: LatestVersion
ScriptType: InlineScript
Inline: |
$ip = (Invoke-WebRequest -uri "http://ifconfig.me/ip").Content
Add-AzKeyVaultNetworkRule -VaultName "YOUR_KEY_VAULT_NAME" -ResourceGroupName "YOUR_RESOURCE_GROUP_NAME" -IpAddressRange $ip
echo "##vso[task.setvariable variable=agentIP]ip"
- task: AzureKeyVault@2
inputs:
azureSubscription: 'YOUR_SERVICE_CONNECTION_NAME'
KeyVaultName: 'YOUR_KEY_VAULT_NAME'
SecretsFilter: '*'
RunAsPreJob: false
- task: AzurePowerShell@5
displayName: 'Remove agent IP'
inputs:
azureSubscription: 'YOUR_SERVICE_CONNECTION_NAME'
azurePowerShellVersion: LatestVersion
ScriptType: InlineScript
Inline: |
$ipRange = $env:agentIP + "/32"
Remove-AzKeyVaultNetworkRule -VaultName "YOUR_KEY_VAULT_NAME" -IpAddressRange $ipRange
condition: succeededOrFailed()
Importante
Certifique-se de que o principal do serviço que utiliza para aceder ao seu cofre de chaves a partir do pipeline detém o papel de Contribuidor do Cofre de Chaves dentro do controlo de acesso (IAM) do seu cofre de chaves.
Aceder a um cofre de chaves privadas a partir de um agente auto-hospedado
Para aceder a um cofre de chaves privadas a partir de um agente Azure Pipelines, precisa de usar um agente auto-hospedado (Windows, Linux, ou Mac) ou agentes Conjuntos de Dimensionamento de Máquinas Virtuais. Este requisito deve-se ao facto de os agentes alojados da Microsoft, tal como outros serviços genéricos de computação, não estarem incluídos na lista de serviços fidedignos do cofre de chaves.
Para estabelecer conectividade com o seu cofre de chaves privadas, deve configurar um endpoint privado para o seu cofre de chaves para fornecer conectividade em linha de visão . Este endpoint deve ser routável e ter o seu nome de domínio privado resolvível a partir do agente do pipeline autohospedado.
Passo 1: Configurar o acesso de entrada a partir de um agente auto-hospedado
Siga as instruções para criar uma rede virtual.
No portal Azure, use a barra de pesquisa no topo da página para encontrar o seu cofre de chaves Azure.
Selecione o seu cofre de chaves e depois vá para Definições>Rede.
Selecione Conexões de ponto de extremidade privado e, em seguida, selecione Criar para criar um novo ponto de extremidade privado.
Selecione o grupo de recursos que aloja a rede virtual que criou anteriormente. Introduza um nome e um nome de interface de rede para a sua instância, e certifique-se de que seleciona a mesma região da rede virtual que criou anteriormente. Selecione Avançar.
Para método de ligação, selecione Ligar a um recurso Azure no meu diretório. Para Tipo de recurso, escolha Microsoft.KeyVault/vaults no menu suspenso. Selecione o seu recurso no menu suspenso. O sub-recurso alvo é preenchido automaticamente com o cofre de valores. Selecione Avançar.
No separador Rede Virtual, selecione a virtual network e a sub-rede que criou anteriormente e deixe os restantes campos como predefinidos. Selecione Avançar.
Aceite as definições padrão nos separadores DNS e Tags. Na aba Rever + Criar, selecione Criar.
Depois de o seu recurso ser implementado, vá ao seu cofre de chaves e selecione Definições>Rede>Conexões privadas ao endpoint. O teu endpoint privado deve estar listado com o estado de Ligação como Aprovado. Se ligares a um recurso do Azure num diretório diferente, tens de esperar que o proprietário do recurso aprove o teu pedido de ligação.
Passo 2: Permita a sua rede virtual
Vai ao portal Azure, e depois encontra o teu cofre de chaves Azure.
Seleciona Definições>Rede e certifica-te de que estás no separador Firewalls e redes virtuais .
Selecione Adicionar uma rede virtual>Adicionar redes virtuais existentes.
Selecione a sua subscrição no menu suspenso, selecione a rede virtual que criou anteriormente e depois selecione as suas sub-redes.
Selecione Adicionar, depois desça até ao final da página e selecione Aplicar para guardar as suas alterações.
Passo 3: Consultar um cofre de chaves privadas de um agente auto-hospedado
O exemplo seguinte utiliza um agente configurado na máquina virtual da rede virtual para consultar o cofre de chaves privadas através do grupo de variáveis.
pool: Self-hosted-pool
variables:
group: mySecret-VG
steps:
- task: CmdLine@2
inputs:
script: 'echo $(mySecret) > secret.txt'
- task: CopyFiles@2
inputs:
Contents: secret.txt
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
Se não quiser conceder Azure DevOps acesso de entrada ao seu cofre de chaves privadas, pode usar a tarefa AzureKeyVault para consultar o seu cofre de chaves. Deve garantir que permita a rede virtual que aloja o seu agente nas definições de firewall do seu cofre de chaves.
pool: Self-hosted-pool
steps:
- task: AzureKeyVault@2
inputs:
azureSubscription: '$(SERVICE_CONNECTION_NAME)'
keyVaultName: $(KEY_VAULT_NAME)
SecretsFilter: '*'
- task: CmdLine@2
inputs:
script: 'echo $(mySecret) > secret.txt'
- task: CopyFiles@2
inputs:
Contents: secret.txt
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
Resolver problemas
Se experimentar os seguintes erros, siga os passos desta seção para resolver o problema:
Public network access is disabled and request is not from a trusted service nor via an approved private link.Este erro indica que o acesso público foi desativado, e que uma ligação privada ao endpoint e exceções ao firewall não foram configuradas. Siga os passos abaixo de Configure o acesso de entrada a partir de um agente auto-hospedado e Configure o acesso de entrada a partir de Azure DevOps para configurar o acesso ao seu cofre de chaves privadas.
Request was not allowed by NSP rules and the client address is not authorized and caller was ignored because bypass is set to None Client address: <x.x.x.x>Esta mensagem de erro indica que o acesso público ao cofre de chaves foi desativado e a opção Permitir que os serviços Microsoft de confiança contornem este firewall ficou em branco, mas o endereço IP do cliente não foi adicionado ao firewall do cofre de chaves. Vai ao teu cofre de chaves no portal Azure, seleciona Settings>Networking e depois adiciona o IP do teu cliente à lista de permisos do firewall.
Error: Client address is not authorized and caller is not a trusted service.Certifica-te de que adicionas os intervalos IPV4 da tua geografia à lista de autorizações do teu cofre de chaves. Para mais informações, consulte Configurar acesso de entrada a partir de Azure DevOps.
Como alternativa, pode ir para Permitir dinamicamente o IP do agente hospedado pela Microsoft para aprender a adicionar o IP do cliente ao firewall do cofre de chaves durante o tempo de execução.