Configurar o tráfego de rede de entrada e saída

O Azure Machine Learning requer acesso a servidores e serviços na Internet pública. Ao implementar o isolamento de rede, você precisa entender qual acesso é necessário e como habilitá-lo.

Observação

As informações neste artigo se aplicam ao espaço de trabalho do Azure Machine Learning configurado para usar uma Rede Virtual do Azure. Ao usar uma rede virtual gerenciada, a configuração de entrada e saída necessária para o espaço de trabalho é aplicada automaticamente. Para obter mais informações, consulte Rede virtual gerenciada do Azure Machine Learning.

Termos e informações comuns

Os seguintes termos e informações são usados ao longo deste artigo:

  • Marcas de serviço do Azure: uma marca de serviço é uma maneira fácil de especificar os intervalos de IP usados por um serviço do Azure. Por exemplo, a marca AzureMachineLearning representa os endereços IP usados pelo Serviço do Azure Machine Learning.

    Importante

    As marcas de serviço do Azure só têm suporte em alguns serviços do Azure. Para obter uma lista de marcas de serviço com suporte com grupos de segurança de rede e Firewall do Azure, consulte o artigo Marcas de serviço de rede virtual.

    Se você estiver usando uma solução que não seja do Azure, como um firewall de terceiros, baixe uma lista de Intervalos de IP do Azure e Marcas de Serviço. Extraia o arquivo e pesquise a marca de serviço no arquivo. Os endereços IP podem ser alterados periodicamente.

  • Região: algumas marcas de serviço permitem que você especifique uma região do Azure. Isso limita o acesso aos endereços IP do serviço em uma região específica, geralmente aquela em que o serviço está. Neste artigo, quando você vir <region>, substitua sua região do Azure. Por exemplo, BatchNodeManagement.<region> seria BatchNodeManagement.uswest se o workspace do Azure Machine Learning estivesse na região Oeste dos EUA.

  • Lote do Azure: os clusters de cálculo e as instâncias de computação do Azure Machine Learning dependem de uma instância de back-end do Lote do Azure. Esse serviço de back-end é hospedado em uma assinatura da Microsoft.

  • Portas: as seguintes portas são usadas neste artigo. Se um intervalo de portas não estiver listado nesta tabela, ele será específico do serviço e poderá não ter informações publicadas sobre seu uso:

    Porta Descrição
    80 Tráfego da Web não seguro (HTTP)
    443 Tráfego da Web seguro (HTTPS)
    445 Tráfego SMB usado para acessar compartilhamentos de arquivos no Armazenamento de Arquivos do Azure
    8787 Usado ao se conectar ao RStudio em uma instância de computação
    18881 Usado para se conectar ao servidor de linguagem para habilitar o IntelliSense para notebooks em uma instância de computação.
  • Protocolo: salvo indicação em contrário, todo o tráfego de rede mencionado neste artigo usa TCP.

Configuração básica

Essa configuração faz as seguintes suposições:

  • Você está usando imagens do Docker fornecidas por um registro de contêiner que você fornece e não usará imagens fornecidas pela Microsoft.
  • Você está usando um repositório de pacotes privados do Python e não acessará repositórios de pacotes públicos, como pypi.org, *.anaconda.com ou *.anaconda.org.
  • Os pontos de extremidade privados podem se comunicar diretamente entre si na VNet. Por exemplo, todos os serviços têm um ponto de extremidade privado na mesma VNet:
    • Workspace do Azure Machine Learning
    • Conta de Armazenamento do Azure (blob, arquivo, tabela, fila)

Tráfego de entrada

Fonte Fonte
ports
Destino Portas dedestino Finalidade
AzureMachineLearning Qualquer VirtualNetwork 44224 Entrada para instância de computação/cluster de cálculo. Necessário somente se a instância ou o cluster estiver configurado para usar um endereço IP público.

Dica

Um NSG (grupo de segurança de rede) é criado por padrão para esse tráfego. Para obter mais informações, consulte Regras de segurança padrão.

Tráfego de saída

Marcas de serviço Portas Finalidade
AzureActiveDirectory 80, 443 Autenticação usando o Microsoft Entra ID.
AzureMachineLearning 443, 8787, 18881
UDP: 5831
Uso dos serviços do Azure Machine Learning.
BatchNodeManagement.<region> 443 Lote do Azure de comunicação.
AzureResourceManager 443 Criação de recursos do Azure com o Azure Machine Learning.
Storage.<region> 443 Acessar dados armazenados na Conta de Armazenamento do Microsoft Azure para cluster de cálculo e instância de computação. Essa saída pode ser usada para exfiltrar dados. Para obter mais informações, confira Proteção contra exfiltração dos dados.
AzureFrontDoor.FrontEnd
* Não é necessário no Microsoft Azure operado pela 21Vianet.
443 Ponto de entrada global para o Estúdio do Azure Machine Learning. Armazene imagens e ambientes para AutoML.
MicrosoftContainerRegistry 443 Acesse as imagens do Docker fornecidas pela Microsoft.
Frontdoor.FirstParty 443 Acesse as imagens do Docker fornecidas pela Microsoft.
AzureMonitor 443 Usado para registrar em log o monitoramento e as métricas no Azure Monitor. Somente necessário se você não tiver protegido o Azure Monitor para o workspace.
* Essa saída também é usada para registrar informações em log sobre incidentes de suporte.
VirtualNetwork 443 Obrigatório quando pontos de extremidade privados estão presentes na rede virtual ou redes virtuais emparelhadas.

Importante

Se uma instância de computação ou um cluster de cálculo estiverem configurados para nenhum IP público, eles não poderão acessar a Internet por padrão. Se ainda for possível enviar tráfego de saída à Internet, é por causa do acesso de saída padrão do Azure e você tem um NSG que permite a saída para a Internet. Não recomendamos usar o acesso de saída padrão. Se você precisar de acesso de saída à Internet, recomendamos usar uma das seguintes opções em vez do acesso de saída padrão:

  • NAT da Rede Virtual do Azure com um IP público: para obter mais informações sobre como usar a NAT da Rede Virtual, consulte a documentação NAT Rede Virtual.
  • Rota e firewall definidos pelo usuário: crie uma rota definida pelo usuário na sub-rede que contém a computação. O próximo salto para a rota deve fazer referência ao endereço IP privado do firewall, com um prefixo de endereço 0.0.0.0/0.

Para obter mais informações, consulte o artigo Acesso de saída padrão no Azure.

Tráfego de saída

Marcas de serviço Portas Finalidade
MicrosoftContainerRegistry e AzureFrontDoor.FirstParty 443 Permite o uso de imagens do Docker que a Microsoft fornece para treinamento e inferência. Também configura o roteador do Azure Machine Learning para o Serviço de Kubernetes do Azure.

Para permitir a instalação de pacotes do Python para treinamento e implantação, permita o tráfego de saída para os seguintes nomes de host:

Observação

Esta não é uma lista completa dos hosts necessários para todos os recursos do Python na Internet. Ela inclui somente os mais usados. Por exemplo, caso você precise de acesso a um repositório GitHub ou outro host, identifique e adicione os hosts necessários para esse cenário.

Nome do host Finalidade
anaconda.com
*.anaconda.com
Usado para instalar pacotes padrão.
*.anaconda.org Usado para obter dados do repositório.
pypi.org Usado para listar dependências com base no índice padrão, se houver, quando o índice não foi substituído pelas configurações do usuário. Se o índice tiver sido substituído, você deverá permitir também *.pythonhosted.org.
pytorch.org
*.pytorch.org
Usado por alguns exemplos com base em PyTorch.
*.tensorflow.org Usado por alguns exemplos com base em Tensorflow.

Cenário: instalar o RStudio na instância de computação

Para permitir a instalação do RStudio em uma instância de computação, o firewall precisa permitir o acesso de saída aos sites para efetuar pull da imagem do Docker. Adicione a seguinte regra de aplicativo à política de Firewall do Azure:

  • Nome: AllowRStudioInstall
  • Tipo de Origem: Endereço IP
  • Endereços IP de origem: o intervalo de endereços IP da sub-rede em que você criará a instância de computação. Por exemplo, 172.16.0.0/24.
  • Tipo de destino: FQDN
  • FQDN de destino: ghcr.io, pkg-containers.githubusercontent.com
  • Protocol: Https:443

Para permitir a instalação de pacotes do R, permita o tráfego de saída para cloud.r-project.org. Esse host é usado para instalar pacotes CRAN.

Observação

Caso você precise de acesso a um repositório GitHub ou outro host, identifique e adicione os hosts necessários para esse cenário.

Cenário: uso do cluster de cálculo ou da instância de computação com um IP público

Importante

Uma instância de computação ou um cluster de computação sem um IP público não precisa de tráfego de entrada dos serviços de gerenciamento do Lote do Azure e do Azure Machine Learning. No entanto, se você tiver vários cálculos e alguns deles usarem um endereço IP público, você precisará permitir esse tráfego.

Ao usar a instância de computação ou o cluster de cálculo do Azure Machine Learning (com um IP), permita o tráfego de entrada do Serviço do Azure Machine Learning. Uma instância de computação ou cluster de cálculo sem IP (versão prévia) não requer essa comunicação de entrada. Um Grupo de Segurança de Rede que permite esse tráfego é criado dinamicamente para você, no entanto, talvez também seja necessário criar UDR (rotas definidas pelo usuário) se você tiver um firewall. Ao criar uma UDR para esse tráfego, use Endereços IP ou marcas de serviço para rotear o tráfego.

Para o serviço do Azure Machine Learning, é necessário adicionar o endereço IP das regiões primária e secundária. Para localizar a região secundária, confira Replicação entre regiões no Azure. Por exemplo, se o Serviço do Azure Machine Learning estiver no Leste dos EUA 2, a região secundária será EUA Central.

Para obter uma lista de endereços IP do Serviço do Azure Machine Learning, baixe os intervalos de IP e as marcas de serviço do Azure e pesquise AzureMachineLearning.<region> no arquivo, em que <region> é a sua região do Azure.

Importante

Os endereços IP podem mudar ao longo do tempo.

Durante a criação de UDR, define o Tipo do próximo salto como Internet. Isso significa que a comunicação de entrada do Azure ignora o firewall para acessar os balanceadores de carga com IPs públicos de instância de computação e cluster de cálculo. A UDR é necessária porque a instância de computação e o cluster de cálculo receberão IPs públicos aleatórios na criação, e você não pode conhecer os IPs públicos antes da criação para registrá-los no firewall e permitir a entrada do Azure para IPs específicos para instância de computação e cluster de cálculo. A imagem a seguir mostra um exemplo de UDR com base em endereço IP no portal do Azure:

Imagem de uma configuração de rota definida pelo usuário

Para saber como configurar a UDR, confira Rotear o tráfego de rede com uma tabela de roteamento.

Cenário: firewall entre pontos de extremidade do Azure Machine Learning e do Armazenamento do Azure

Você também deve permitir o acesso de saída a Storage.<region> na porta 445.

Cenário: workspace criado com o sinalizador hbi_workspace habilitado

Você também deve permitir o acesso de saída a Keyvault.<region>. Esse tráfego de saída é usado para acessar a instância do cofre de chaves para o serviço de Lote do Azure de back-end.

Para obter mais informações sobre o sinalizador hbi_workspace, consulte o artigo criptografia de dados.

Cenário: usar a computação do Kubernetes

O cluster do Kubernetes em execução em um servidor proxy de saída ou firewall precisa de uma configuração extra de saída de rede.

Além dos requisitos acima, os seguintes URLs de saída também são necessários para o Azure Machine Learning,

Pponto de extremidade de saída Porta Descrição Treinamento Inferência
*.kusto.windows.net
*.table.core.windows.net
*.queue.core.windows.net
443 Necessário para carregar logs do sistema para o Kusto.
<your ACR name>.azurecr.io
<your ACR name>.<region>.data.azurecr.io
443 Registro de contêiner do Azure, necessário para extrair imagens do Docker usadas para cargas de trabalho de aprendizado de máquina.
<your storage account name>.blob.core.windows.net 443 Armazenamento de blob do Azure, necessário para buscar scripts de projeto de aprendizado de máquina, dados ou modelos e carregar logs/saídas de trabalho.
<your workspace ID>.workspace.<region>.api.azureml.ms
<region>.experiments.azureml.net
<region>.api.azureml.ms
443 API do Serviço do Azure Machine Learning.
pypi.org 443 Índice de pacote do Python, para instalar pacotes de pip usados para inicializar o ambiente de trabalho de treinamento. N/D
archive.ubuntu.com
security.ubuntu.com
ppa.launchpad.net
80 Exigido para baixar os patches de segurança necessários. N/D

Observação

  • Substitua <your workspace workspace ID> por sua ID do workspace. A ID pode ser encontrada no portal do Azure – sua página de recursos do Machine Learning – Propriedades – ID do workspace.
  • Substitua <your storage account> pelo nome da conta de armazenamento.
  • Substitua <your ACR name> pelo nome do Registro de Contêiner do Azure para o seu workspace.
  • Substitua <region> pela região do seu workspace.

Requisitos de comunicação no cluster

Para instalar a extensão do Azure Machine Learning na computação do Kubernetes, todos os componentes relacionados ao Azure Machine Learning são implantados em um namespace azureml. A comunicação no cluster a seguir é necessária para garantir que as cargas de trabalho de ML funcionem bem no cluster do AKS.

  • Os componentes no namespace azureml devem ser capazes de se comunicar com o servidor de API do Kubernetes.
  • Os componentes no namespace azureml devem ser capazes de se comunicar entre si.
  • Os componentes no namespace azureml devem ser capazes de se comunicar com kube-dns e konnectivity-agent no namespace kube-system.
  • Se o cluster for usado para inferência em tempo real, os PODs azureml-fe-xxx deverão poder se comunicar com os PODs de modelo implantados na porta 5001 em outro namespace. Os PODs azureml-fe-xxx devem abrir as portas 11001, 12001, 12101, 12201, 20000, 8000, 8001, 9001 para comunicação interna.
  • Se o cluster for usado para inferência em tempo real, os PODs de modelo implantados deverão poder se comunicar com PODs amlarc-identity-proxy-xxx na porta 9999.

Cenário: Visual Studio Code

O Visual Studio Code depende de hosts e portas específicos para estabelecer uma conexão remota.

Hosts

Os hosts nesta seção são usados para instalar os pacotes do Visual Studio Code para estabelecer uma conexão remota entre o Visual Studio Code e as instâncias de computação no workspace do Azure Machine Learning.

Observação

Esta não é uma lista completa dos hosts necessários para todos os recursos do Visual Studio Code na Internet, apenas os mais comumente usados. Por exemplo, caso você precise de acesso a um repositório GitHub ou outro host, identifique e adicione os hosts necessários para esse cenário. Para obter uma lista completa de nomes de host, confira Conexões de rede no Visual Studio Code.

Nome do host Finalidade
*.vscode.dev
*.vscode-unpkg.net
*.vscode-cdn.net
*.vscodeexperiments.azureedge.net
default.exp-tas.com
Necessário para acessar vscode.dev (Visual Studio Code para a Web)
code.visualstudio.com Necessário para baixar e instalar a área de trabalho do VS Code. Esse host não é necessário para o VS Code Web.
update.code.visualstudio.com
*.vo.msecnd.net
Usado para recuperar bits do servidor do VS Code que estão instalados na instância de computação por meio de um script de instalação.
marketplace.visualstudio.com
vscode.blob.core.windows.net
*.gallerycdn.vsassets.io
Necessário para baixar e instalar extensões do VS Code. Esses hosts habilitam a conexão remota para instâncias de computação usando a extensão do Azure Machine Learning para VS Code. Para obter mais informações, consulte Conectar-se a uma instância de computação do Azure Machine Learning no Visual Studio Code
https://github.com/microsoft/vscode-tools-for-ai/tree/master/azureml_remote_websocket_server/* Usado para recuperar bits do servidor websocket que estão instalados na instância de computação. O servidor websocket é usado para transmitir solicitações do cliente do Visual Studio Code (aplicativo da área de trabalho) para o servidor do Visual Studio Code em execução na instância de computação.
vscode.download.prss.microsoft.com Usado para a CDN de download do Visual Studio Code

Portos

Você deve permitir o tráfego de rede nas portas 8704 a 8710. O servidor do VS Code seleciona dinamicamente a primeira porta disponível dentro desse intervalo.

Cenário: firewall de terceiros ou Firewall do Azure sem marcas de serviço

A orientação nesta seção é genérica, pois cada firewall tem sua própria terminologia e configurações específicas. Se você tiver dúvidas, verifique a documentação do firewall que está usando.

Dica

Se você estiver usando o Firewall do Azure e quiser usar os FQDNs listados nesta seção em vez de usar marcas de serviço, use as seguintes diretrizes:

  • FQDNs que usam portas HTTP/S (80 e 443) devem ser configurados como regras de aplicativo.
  • FQDNs que usam outras portas devem ser configurados como regras de rede.

Para obter mais informações, confira as Diferenças entre as regras de aplicativo e as regras de rede.

O firewall poderá causar problemas quando você usar o workspace se não estiver configurado corretamente. Há vários nomes do host que são usados pelo workspace do Azure Machine Learning. As seções a seguir listam os hosts necessários para o Azure Machine Learning.

API de Dependências

Você também pode usar a API REST do Azure Machine Learning para obter uma lista de hosts e portas para as quais deve permitir o tráfego de saída. Para usar essa API, use as seguintes etapas:

  1. Obtenha um token de autenticação. O seguinte comando demonstra como usar a CLI do Azure para obter um token de autenticação e uma ID de assinatura:

    TOKEN=$(az account get-access-token --query accessToken -o tsv)
    SUBSCRIPTION=$(az account show --query id -o tsv)
    
  2. Chame a API. No comando a seguir, substitua estes valores:

    • Substitua <region> pela região do Azure em que o workspace se encontra. Por exemplo, westus2.
    • Substitua <resource-group> pelo grupo de recursos que contém o espaço de trabalho.
    • Substitua <workspace-name> pelo nome do workspace.
    az rest --method GET \
        --url "https://<region>.api.azureml.ms/rp/workspaces/subscriptions/$SUBSCRIPTION/resourceGroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>/outboundNetworkDependenciesEndpoints?api-version=2018-03-01-preview" \
        --header Authorization="Bearer $TOKEN"
    

O resultado da chamada à API é um documento JSON. O seguinte trecho faz parte deste documento:

{
  "value": [
    {
      "properties": {
        "category": "Azure Active Directory",
        "endpoints": [
          {
            "domainName": "login.microsoftonline.com",
            "endpointDetails": [
              {
                "port": 80
              },
              {
                "port": 443
              }
            ]
          }
        ]
      }
    },
    {
      "properties": {
        "category": "Azure portal",
        "endpoints": [
          {
            "domainName": "management.azure.com",
            "endpointDetails": [
              {
                "port": 443
              }
            ]
          }
        ]
      }
    },
...

Hosts da Microsoft

Os hosts nas tabelas a seguir são de propriedade da Microsoft e fornecem os serviços necessários para o funcionamento adequado do workspace. As tabelas listam hosts para as regiões do Azure públicas, Azure Governamental e Microsoft Azure operado pela 21Vianet.

Importante

O Azure Machine Learning usa contas de Armazenamento do Azure em sua assinatura e em assinaturas gerenciadas pela Microsoft. Quando aplicável, os seguintes termos são usados para diferenciá-los nesta seção:

  • Seu armazenamento: as contas do Armazenamento do Azure em sua assinatura, que é usada para armazenar seus dados e artefatos, como modelos, dados de treinamento, logs de treinamento e scripts Python.>
  • Armazenamento da Microsoft: a instância e os clusters de computação do Azure Machine Learning dependem do Lote do Azure e devem acessar o armazenamento localizado em uma assinatura da Microsoft. Esse armazenamento é usado somente para o gerenciamento das instâncias de computação. Nenhum dos seus dados está armazenado aqui.

Hosts gerais do Azure

Obrigatório para Hosts Protocolo Portas
ID do Microsoft Entra login.microsoftonline.com TCP 80, 443
Portal do Azure management.azure.com TCP 443
Azure Resource Manager management.azure.com TCP 443

Hosts do Azure Machine Learning

Importante

Na tabela a seguir, substitua <storage> pelo nome da conta de armazenamento padrão do workspace do Azure Machine Learning. Substitua <region> pela região do seu workspace.

Obrigatório para Hosts Protocolo Portas
Azure Machine Learning Studio ml.azure.com TCP 443
API *.azureml.ms TCP 443
API *.azureml.net TCP 443
Gerenciamento de modelos *.modelmanagement.azureml.net TCP 443
Notebook integrado *.notebooks.azure.net TCP 443
Notebook integrado <storage>.file.core.windows.net TCP 443, 445
Notebook integrado <storage>.dfs.core.windows.net TCP 443
Notebook integrado <storage>.blob.core.windows.net TCP 443
Notebook integrado graph.microsoft.com TCP 443
Notebook integrado *.aznbcontent.net TCP 443
NLP AutoML, Visão automlresources-prod.azureedge.net TCP 443
NLP AutoML, Visão aka.ms TCP 443

Observação

Atualmente, só há suporte para o NLP AutoML, VIsão em regiões públicas do Azure.

Hosts de instância e cluster de computação do Azure Machine Learning

Dica

  • O host do Azure Key Vault só será necessário se o workspace tiver sido criado com o sinalizador hbi_workspace habilitado.
  • As portas 8787 e 18881 para a instância de computação só são necessárias quando o workspace do computador do Azure tem um ponto de extremidade privado.
  • Na tabela a seguir, substitua <storage> pelo nome da conta de armazenamento padrão do workspace do Azure Machine Learning.
  • Na tabela a seguir, substitua <region> pela região do Azure que contém o workspace do Azure Machine Learning.
  • A comunicação do WebSocket precisa ser permitida na instância de computação. Se você bloquear o tráfego do WebSocket, os Jupyter notebooks não funcionarão corretamente.
Obrigatório para Hosts Protocolo Portas
Instância/cluster de computação graph.windows.net TCP 443
Instância de computação *.instances.azureml.net TCP 443
Instância de computação *.instances.azureml.ms TCP 443, 8787, 18881
Instância de computação <region>.tundra.azureml.ms UDP 5831
Instância de computação *.<region>.batch.azure.com ANY 443
Instância de computação *.<region>.service.batch.azure.com ANY 443
Acesso ao armazenamento da Microsoft *.blob.core.windows.net TCP 443
Acesso ao armazenamento da Microsoft *.table.core.windows.net TCP 443
Acesso ao armazenamento da Microsoft *.queue.core.windows.net TCP 443
Sua conta de armazenamento <storage>.file.core.windows.net TCP 443, 445
Sua conta de armazenamento <storage>.blob.core.windows.net TCP 443
Cofre de Chave do Azure *.vault.azure.net TCP 443

Imagens do Docker mantidas pelo Azure Machine Learning

Obrigatório para Hosts Protocolo Portas
Registro de Contêiner da Microsoft mcr.microsoft.com
*.data.mcr.microsoft.com
TCP 443

Dica

  • O Registro de Contêiner do Azure é necessário para qualquer imagem personalizada do Docker. Isso inclui pequenas modificações (como pacotes adicionais) nas imagens de base fornecidas pela Microsoft. Ele também é exigido pelo processo de envio de trabalho de treinamento interno do Azure Machine Learning. Além disso, o Registro de Contêiner da Microsoft é sempre necessário, independentemente do cenário.
  • Se você planeja usar identidade federada, siga as Práticas recomendadas para proteger Serviços de Federação do Active Directory (AD FS).

Além disso, use as informações na seção decomputação com IP público para adicionar endereços IP para BatchNodeManagement e AzureMachineLearning.

Para obter informações sobre como restringir o acesso aos modelos implantados no AKS, consulte Restringir o tráfego de saída no Serviço de Kubernetes do Azure.

Monitoramento, métricas e diagnóstico

Se você não protegeu o Azure Monitor para o workspace, permita o tráfego de saída para os seguintes hosts:

Se você não protegeu o Azure Monitor para o workspace, permita o tráfego de saída para os seguintes hosts:

Observação

As informações registradas nesses hosts também são usadas pelo Suporte da Microsoft para diagnosticar os problemas que você encontra no workspace.

  • dc.applicationinsights.azure.com
  • dc.applicationinsights.microsoft.com
  • dc.services.visualstudio.com
  • *.in.applicationinsights.azure.com

Para obter uma lista de endereços IP para esses hosts, consulte Endereços IP usados pelo Azure Monitor.

Próximas etapas

Este artigo faz parte de uma série sobre como proteger um fluxo de trabalho do Azure Machine Learning. Confira os outros artigos desta série:

Para obter mais informações sobre como configurar o Firewall do Azure, consulte Tutorial: Implantar e configurar o Firewall do Azure usando o portal do Azure.