Blog Post

Azure InfraGurus
5 MIN READ

Configurando Azure ARC com Private Link.

LeandroBarbosa's avatar
Jun 25, 2024

O Azure Arc facilita o gerenciamento em ambientes híbridos e multi-cloud por meio de um único painel. Com o Azure Arc, é possivel aplicar os recursos de gerenciamento e segurança do Azure aos seus recursos de outras nuvens, e on-premises, como servidores, clusters Kubernetes e serviços de dados.

 Gerenciar  recursos do Azure Arc em diferentes redes e firewalls pode apresentar alguns desafios como por exemplo precisar expor pontos de extremidade públicos para seus recursos, o que pode aumentar o risco de acesso não autorizado e ataques maliciosos.

Desta forma, o Azure Arc Private Links é uma solução que facilita e segura a conexão entre seus recursos do Azure Arc e o Azure. Com o Azure Arc Private Links, é possiível criar pontos de extremidade privados para seus recursos do Azure Arc dentro de uma rede virtual do Azure e acessá-los usando endereços IP privados e assim evitar expor pontos de extremidade públicos e proteger seus recursos de riscos de rede. Você também pode diminuir a latência e os custos de largura de banda da rede, direcionando o tráfego pela rede principal do Azure.

Ao utilizar extensões de VM que funcionam com os servidores no Azure Arc, como por exemolo : Gerenciamento de Atualizações, Automação do Azure ou o Azure Monitor, esses recursos se conectam a outros recursos do Azure, como o Workspace do Log Analytics, Conta de Automação do Azure, Cofre de Chave do Azure e o Armazenamento de Blobs que também devem ter seus próprios links privados. 

No entanto, até o momento deste artigo, existem algumas restrições em que o tráfego ainda precisa ser realizadas para URLS públicas, como por exemplo, para acesso ao Entra ID, Azure Resource Manager, Windows Admin Center e SSH.  A figura abaixo apresenta este fluxo de conexão.

 

 

Objetivo

O propósito deste artigo é demostrar em um ambiente de laboratório como configurar o Azure ARC com private link e ajustar o agente do azure arc para acessar as urls públicas por meio de um proxy.  

O ambiente de laborátorio consiste em:

On-premises

  • Servidor Active Directory -  Domain Controller (ADDS) : 10.168.101.4
  • Servidor (para onboard no arc) com Windows Sever 2022 : VM01
  • Proxy  Server ( Pfsense/squid) :   192.168.101.1
  • VPN Site to Site

Azure

  • Vnet Hub com :
    • Servidor Active Directory -  Domain Controller (ADDS) : 10.10.0.4
    • VPN Gateway

 

Arquitetura do ambiente de laboratório.

 

 

 

Criando o ARC Private Scope

No portal do Azure , pesquise por Azure ARC e selecione “Private link scopes” e depois em “Create”

 

 

Insira a subscription , resource goup , região  e o nome para o Private link Scope.

 

 

Selecione “Create” para criar o Private Endpoint e complete as informações a direita. Utilizarei uma já existente chamada “Vnet-Arc” e Mantenha habilitada a opção de DNS Integration

 

 

Valide as informações e depois vai em : “create”.

 

 

Valide os recursos criados no RG.

 

 

Realizando Link do Private DNS Zone.

Ao acessar a zona de DNS privada que foi criada, é possível ver que o link com a Vnet-Arc já foi feito automaticamente. Como meu servidor de DNS (Controlador de Domínio) está em uma vnet diferente, eu também preciso criar o link com ela.

 

 

 

 

 

 

Integração DNS do Private Endpoint

Para integração de dns com private endpoint existem vários modelos : Azure Private Endpoint DNS integration | Microsoft Learn

No meu caso utilizarei o modelo de integração com custom DNS, pois já tenho um Domain Controller no Azure. Assim, vou usar encaminhadores condicionais, conforme descrito em:  https://github.com/dmauser/PrivateLink/tree/master/DNS-Integration-Scenarios#42-custom-dns-server.

Para isso irei configurar encaminhadores no meu DC on-premises e também no Azure.

 

DNS do Domain Controller on-premises.

No meu Domain Controller on-premises estarei criando o Encaminhador Condicional : his.arc.azure.com e guestconfiguration.azure.com  apontando para meu Domain Controller no Azure (10.10.0.4).

 

 

 

 

 

DNS do Domain Controller no Azure

No servidor Domain Controller do Azure eu crios os mesmos  Contional Forwarders his.arc.azure.com e guestconfiguration.azure.com , porém apontando para o Ip do Azure DNS (168.63.129.16) .

 

Validando a Resolução de nomes.

Vou testar com nslookup a resolução dos endereços gbl.his.arc.azure.com e gbl.privatelink.his.arc.azure.com, o resultado esperado é o ip 10.13.0.10 conforme abaixo.

 

A partir do servidor on-premises, o resultado é conforme esperado.

 

 

 

Conectando no ARC

Para fazer o onboarding no ARC vou gerar um o Script de Configuração.

Pesquisar por ARC , na coluna selecione “Machines” , depois em add/create .

 

 

Para este lab criarei o script para somente um servidor.

 

 

Selecione o Método de conectividade como Private Endpoint e selecione o Link Scope criado anteriormente e “Download and run”

 

 

Será apresentado o script para copiar ou fazer o download.

 

 

Instalação do Agente no Servidor on-premises.

Conforme Documentação oficial mesmo com private link algumas URLS, públicas ainda precisam ser liberadas.

 

 

https://learn.microsoft.com/en-us/azure/azure-arc/network-requirements-consolidated?tabs=azure-cloud#urls

 

Após a liberação das URLs no servidor proxy realizei a configuração de proxy settings na máquina onde irei rodar o script, inclusive inserindo as urls do private endpoint para o não uso de proxy.

 

Porém ao executar o script de onboarding recebi o erro: “The remote server returned an error: (504) Gateway Timeout”

 

Devido este cenário de "rede dividida", em que algumas URLs, como por exemplo de autenticação no Entra ID, devem ir pela internet via proxy, mas o tráfego para os endpoints privados do ARC não. É necessário configurar o agente do ARC para os serviços que devem usar o proxy.

Para isto pode-se configurar dois parâmetros :

  • config set proxy.url : Endereço do Proxy.
  • config set proxy.bypass  :  Valor conforme tabela abaixo da  URls  privadas

                 

 

Desta forma, vou fazer a instalação do agente de forma manual direto pelo link   https://aka.ms/AzureConnectedMachineAgent  ,  (em um ambiente Entreprise poderia ser via SCCM, Gpo ,Intune, etc.)

Ao realizar um check de conectividade com o comando :

*Altere o parâmetro “location” conforme foi região onde foi criado o private link. No meu caso é EastUS 

 

 

azcmagent check --location "eastus" --enable-pls-check  

 

 

  É possível observar no resultado que os endpoints privados estão sendo alcançados, porém os públicos não.

 

 

No script de onboarding gerado anteriormente vou comentar as linhas que fazem a instalação do agente ( já instalado) e adicionar as linhas a seguir com os parâmetros para o proxy.

& “$env:ProgramW6432\AzureConnectedMachineAgent\azcmagent.exe" config set proxy.url "http://192.168.101.1:3128

& "$env:ProgramW6432\AzureConnectedMachineAgent\azcmagent.exe" config set proxy.bypass "Arc"

 

 

 

Ao executar novamente o script recebo o prompt para login e insiro as credenciais. 

 

 

 

Realizando a verificação de conectividade novamente pelo comando :

 

 

azcmagent check --location "eastus" --enable-pls-check 

 

 

 

É possível observar que agora todos os endpoints estão alcançáveis. E os endereços públicos estão com o proxy configurado ( set) e realizando o bypass para o endereços privados.

 

 

Ao acessar o portal do azure é possível que a máquina está com o status de conectada no ARC.

 

 

Referências

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Updated Jun 26, 2024
Version 3.0
No CommentsBe the first to comment