Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure Key Vault fornece uma maneira segura de gerenciar credenciais, incluindo chaves, segredos e certificados. Usando Azure Pipelines, você pode simplificar o processo de acesso e uso de cofres de chaves para armazenar e recuperar credenciais.
Em determinados cenários, as organizações priorizam a segurança restringindo o acesso a cofres de chaves exclusivamente para redes virtuais Azure designadas. Essa restrição garante o nível mais alto de segurança para aplicativos críticos. Neste tutorial, você aprenderá a configurar a autenticação e configurar o acesso de entrada para que o pipeline possa consultar e recuperar dados de uma Azure Key Vault privada.
Pré-requisitos
| Produto | Requirements |
|---|---|
| Azure DevOps | - Uma Azure DevOps organização. - Um projeto do Azure DevOps . -Permissões: – Para conceder acesso a todos os pipelines no projeto: você deve ser membro do grupo Administradores do Projeto. – Para criar conexões de serviço: você deve ter a função Administrador ou Criador para conexões de serviço. |
| Azul | – Uma assinatura do Azure. - Um cofre de chaves Azure. |
Acessar um cofre de chaves privado
Os desenvolvedores podem usar o Azure Pipelines permite que os desenvolvedores vinculem um cofre de chaves do Azure a um grupo de variáveis e mapeiem segredos seletivos do cofre para ele. Um cofre de chaves usado como um grupo de variáveis pode ser acessado:
- No Azure DevOps, durante a configuração do grupo de variáveis.
- A partir de um agente auto-hospedado durante o tempo de execução de um trabalho de pipeline.
Para configurar o acesso ao cofre de chaves privado, conclua as seguintes etapas na ordem:
- Crie uma entidade de serviço para se autenticar nos recursos do Azure.
- Crie uma conexão de serviço Azure Resource Manager em Azure DevOps usando a entidade de serviço.
- Crie uma credencial federada para sua entidade de serviço no Azure.
Criar um principal de serviço
Crie uma entidade de serviço para se autenticar com os recursos do Azure:
Acesse o portal Azure.
No menu superior, abra Azure Cloud Shell e selecione Bash.
Execute o seguinte comando para criar um principal de serviço:
az ad sp create-for-rbac --name YOUR_SERVICE_PRINCIPAL_NAMECopie a saída do comando. Você precisa desses valores na próxima etapa ao criar a conexão de serviço.
Criar uma conexão de serviço
Depois de criar sua entidade de serviço, use seus valores de saída para criar uma conexão de serviço Azure Resource Manager no Azure DevOps.
Entre na sua organização do Azure DevOps e vá para o projeto.
Selecione Configurações do projeto>Conexões de serviço>Nova conexão de serviço.
Selecione Azure Resource Manager e, em seguida, Avançar.
Para tipo de identidade, selecione Registro de aplicativo (automático) no menu dropdown.
Para Credencial, deixe o padrão de valor recomendado como Federação de identidade de workload.
Para Nível de escopo, selecione Assinatura e, depois, selecione a sua assinatura no menu suspenso.
Selecione um grupo de recursos se desejar limitar o acesso apenas ao grupo de recursos especificado.
Insira um nome para sua conexão de serviço e selecione a caixa de seleção Conceder acesso a todos os pipelines para permitir que todos os pipelines usem essa conexão de serviço.
Clique em Salvar.
Criar uma credencial federada
Depois de salvar sua conexão de serviço, configure uma credencial federada em Azure para estabelecer a confiança entre sua entidade de serviço e Azure DevOps.
Vá para o portal Azure, insira a ID do cliente da entidade de serviço na barra de pesquisa e selecione seu aplicativo.
Em Gerenciar, selecione Certificados e segredos>Credenciais federadas.
Selecione Adicionar credencial e, em seguida, para Cenário de credencial federada, selecione Outro emissor.
Para Emissor, cole a URL seguinte para substituir o espaço reservado pelo GUID da sua organização. Você pode encontrar a ID da organização acessando Organization settings>Microsoft Entra. Baixe a lista de organizações Azure DevOps que estão conectadas ao diretório.
https://login.microsoftonline.com/<TENANT_ID>/v2.0Para o identificador de assunto, cole a URL a seguir. Substitua os espaços reservados pelo nome da sua organização, nome do projeto e nome da conexão de serviço.
ENTRA_PREFIX/sc/ORGANIZATION_NAME/PROJECT_NAME/SERVICE_CONNECTION_NAMEInsira um nome para sua credencial federada e selecione Adicionar.
Criar uma conexão de serviço
Depois de criar sua entidade de serviço, use seus valores de saída para criar uma conexão de serviço Azure Resource Manager no Azure DevOps.
Entre na sua organização do Azure DevOps e vá para o projeto.
Selecione Configurações do projeto>Conexões de serviço>Nova conexão de serviço.
Selecione Azure Resource Manager>Next e selecione Service principal (manual)>Next.
Para Environment, selecione Azure Cloud e, para Nível de escopo, selecione Subscription. Em seguida, insira a ID da assinatura e o nome da assinatura.
Insira as informações do principal de serviço e selecione Verificar.
Após a verificação bem-sucedida, dê um nome à sua conexão de serviço, adicione uma descrição e, em seguida, marque a caixa de seleção Conceder permissão de acesso a todos os pipelines. Selecione Verificar e salvar.
Dica
Se você não puder verificar a conexão da entidade de serviço, conceda ao leitor da entidade de serviço acesso à sua assinatura.
Acessar um cofre de chaves privado do Azure DevOps
Esta seção aborda dois métodos para acessar um cofre de chaves privado de Azure DevOps.
O primeiro método usa grupos de variáveis para vincular e mapear segredos do cofre de chaves, seguido pela configuração do acesso de entrada, permitindo intervalos de IP estáticos. Azure Pipelines usa o IP público Azure DevOps ao consultar um cofre de chaves de um grupo de variáveis, portanto, você precisa permitir esses intervalos de IP no firewall do cofre de chaves.
O segundo método adiciona dinamicamente o endereço IP do agente hospedado pela Microsoft à lista de permissões do firewall do cofre de chaves no início do pipeline, consulta o cofre de chaves e, por fim, remove o IP. Esse método é apenas para fins de demonstração e não é recomendado para uso em produção.
Etapa 1: Mapear segredos do cofre de chaves com um grupo de variáveis
Entre na sua organização do Azure DevOps e vá para o projeto.
Selecione Biblioteca> de Pipelines e, em seguida, selecione + Grupo de variáveis.
Nomeie o seu grupo de variáveis e ative Vincular segredos de um Azure Key Vault como variável.
Selecione a conexão de serviço que você criou anteriormente, selecione seu cofre de chaves e selecione Autorizar.
Em Variáveis, selecione Adicionar para adicionar seu segredo e, em seguida, selecione Salvar.
Observação
Verifique se sua conexão de serviço tem as Obter e Lista e se a sua entidade de serviço recebeu a função de Usuário de segredos do Key Vault em seu vault de chaves privadas.
Etapa 1.1: Configurar as permissões de conexão de serviço
Vá para o cofre de chaves do Azure e selecione Políticas de acesso.
Selecione Criar e, em Permissões secretas, adicione as permissões Obter e Listar e selecione Avançar.
Adicione sua conexão de serviço na barra de pesquisa, selecione-a e, em seguida, selecione Avançar.
Selecione Avançar mais uma vez, examine suas configurações e selecione Examinar + criar.
Etapa 1.2: Configurar as permissões da entidade de serviço
Vá para o cofre de chaves do Azure e selecione Controle de acesso (IAM).
Selecione Adicionar>atribuição de função e selecione a guia Função .
Selecione a função Usuário de Segredos do Key Vault e selecione Avançar.
Escolha Selecionar membros, adicione seu principal de serviço, e escolha Selecionar.
Selecione Examinar + atribuir.
Entre na sua organização do Azure DevOps e vá para o projeto.
Selecione Biblioteca> de Pipelines e, em seguida, selecione + Grupo de variáveis.
Nomeie o seu grupo de variáveis e ative Vincular segredos de um Azure Key Vault como variável.
Selecione a sua conexão de serviço do Azure que você criou anteriormente no menu suspenso e, em seguida, selecione o cofre de chaves.
Captura de tela que mostra como vincular um grupo de variáveis a um cofre de chaves do Azure com um erro que indica permissões "Get" e "List" ausentes.
Você pode encontrar a mensagem de erro "A conexão de serviço especificada do Azure precisa ter permissões de gerenciamento de segredos 'Obter, Listar' no cofre de chaves selecionado." Vá para o cofre de chaves no portal do Azure e selecione Access control (IAM)>Adicionar atribuição de função>key vault secrets user>Avançar. Adicione a sua entidade de serviço e selecione Examinar + atribuir.
Adicione seus segredos e selecione Salvar.
Etapa 2: Configurar o acesso de entrada do Azure DevOps
Depois de configurar o grupo de variáveis, permita o acesso de entrada do Azure DevOps ao cofre de chaves, adicionando os intervalos de IP estáticos da região geográfica da sua organização.
Entre na sua organização do Azure DevOps.
Selecione Configurações da organização.
Vá para Visão geral para encontrar a localização geográfica.
Encontre os intervalos geográficos de IPv4.
Importante
Para conexões de entrada dos Estados Unidos, adicione os intervalos de IP para todas as regiões dos Estados Unidos.
Configure o cofre de chaves para permitir o acesso de intervalos de IPs estáticos.
Etapa 3: consultar um cofre de chaves privado com um grupo de variáveis
Com o grupo de variáveis vinculado e o acesso de entrada configurado, use o pipeline a seguir para consultar seu cofre de chaves privado e copiar o segredo recuperado. O Azure Pipelines usa seu IP público para consultar o Key Vault a partir de um grupo de variáveis, portanto, verifique se você tenha configurado o acesso de entrada antes de executar o pipeline.
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 o IP do agente hospedado em Microsoft
Nessa abordagem, o pipeline consulta o IP do agente hospedado pela Microsoft ao iniciar, adiciona esse IP à lista de permissões do firewall do Key Vault, executa as tarefas do Key Vault e, em seguida, remove o IP antes de o pipeline terminar.
Observação
Essa abordagem é apenas para fins de demonstração. Não recomendamos essa 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 = "$(agentIP)/32"
Remove-AzKeyVaultNetworkRule -VaultName "YOUR_KEY_VAULT_NAME" -IpAddressRange $ipRange
condition: succeededOrFailed()
Importante
Verifique se a entidade de serviço que você usa para acessar o cofre de chaves do pipeline contém a função de colaborador do cofre de chaves no IAM (controle de acesso) do cofre de chaves.
Acessar um cofre de chaves privadas de um agente auto-hospedado
Para acessar um cofre de chaves privado a partir de um agente do Azure Pipelines, use um agente auto-hospedado (Windows, Linux ou Mac) ou agentes do Conjuntos de Dimensionamento de Máquinas Virtuais. Agentes hospedados pela Microsoft, como outros serviços genéricos de computação, não estão incluídos na lista de serviços confiáveis do cofre de chaves.
Para estabelecer conectividade com seu cofre de chaves privado, configure um ponto de extremidade privado para acesso direto. Esse endpoint deve ser roteável, e seu nome DNS privado deve poder ser resolvido a partir do agente de pipeline auto-hospedado.
Etapa 1: configurar o acesso de entrada de um agente auto-hospedado
Siga as instruções para criar uma rede virtual.
No portal Azure, use a barra de pesquisa na parte superior da página para encontrar seu Azure cofre de chaves.
Selecione seu cofre de chaves e vá para Configuraçõ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 hospeda a rede virtual que você criou anteriormente. Insira um nome e um nome de interface de rede para sua instância e selecione a mesma região que a rede virtual que você criou anteriormente. Selecione Próximo.
Para o método Connection, selecione Conectar para um recurso de Azure em meu diretório. Para o tipo de recurso, escolha Microsoft.KeyVault/vaults no menu suspenso. Selecione seu recurso no menu suspenso. O sub-recurso de destino é preenchido automaticamente com o cofre de valores. Selecione Próximo.
Na guia Rede Virtual, selecione o virtual network e a sub-rede que você criou anteriormente e deixe o restante dos campos como padrão. Selecione Próximo.
Aceite as configurações padrão nas abas DNS e Etiquetas. Na guia Revisar + Criar , selecione Criar.
Depois que o recurso for implantado, vá para o cofre de chaves e selecione Configurações>Rede>Conexões de ponto de extremidade privado. Seu ponto de extremidade privado deve ser listado com o estado de conexão como Aprovado. Se você vincular a um recurso de Azure em um diretório diferente, precisará aguardar que o proprietário do recurso aprove sua solicitação de conexão.
Etapa 2: Permitir sua rede virtual
Com o ponto de extremidade privado configurado, permita, nas configurações de firewall do cofre de chaves, a rede virtual que hospeda seu agente hospedado localmente.
Vá para o Azure portal e localize seu Azure cofre de chaves.
Selecione Configurações>Rede, e verifique se você está na guia Firewalls e redes virtuais.
Selecione Adicionar rede virtual>Adicionar redes virtuais existentes.
Selecione a sua assinatura no menu suspenso e, em seguida, selecione a rede virtual que você criou anteriormente. Em seguida, selecione as sub-redes.
Selecione Adicionar e role até a parte inferior da página e selecione Aplicar para salvar suas alterações.
Etapa 3: consultar um cofre de chaves privado em um agente auto-hospedado
Com a rede virtual habilitada, use o pipeline a seguir para consultar o cofre de chaves privado por meio do grupo de variáveis vinculado, a partir de um agente auto-hospedado:
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 você não quiser conceder acesso de entrada Azure DevOps ao cofre de chaves privado, use a tarefa AzureKeyVault para consultar diretamente o cofre de chaves. Nesse caso, verifique se a rede virtual que hospeda seu agente auto-hospedado está permitida nas configurações de firewall do 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'
Solucionar problemas
Use as seguintes diretrizes para solucionar erros comuns de acesso ao cofre de chaves:
Public network access is disabled and request is not from a trusted service nor via an approved private link.Esse erro indica que o acesso público está desabilitado, mas nem um ponto de extremidade privado nem as exceções de firewall necessárias estão configuradas. Siga as etapas em Configurar o acesso de entrada de um agente auto-hospedado ou Configurar o acesso de entrada do Azure DevOps com base em seu cenário para configurar o acesso ao cofre de chaves privado.
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>Esse erro indica que o acesso público está desabilitado, Permitir que serviços confiáveis da Microsoft ignorem este firewall não está habilitada e que o IP do cliente não está na lista de permissões do firewall do cofre de chaves. No portal Azure, vá para o cofre de chaves, selecione Settings>Networking e adicione o IP do cliente à lista de permissões de firewall.
Error: Client address is not authorized and caller is not a trusted service.Verifique se os intervalos IPv4 da sua região geográfica foram adicionados à lista de permissões do cofre de chaves. Para obter detalhes, consulte Configurar o acesso de entrada do Azure DevOps.
Como alternativa, veja Permitir dinamicamente o IP do agente hospedado pela Microsoft para adicionar o IP do cliente ao firewall do cofre de chaves em tempo de execução.