Proteger uma área de trabalho do Azure Machine Learning com redes virtuais
APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)
Gorjeta
Você pode usar redes virtuais gerenciadas do Azure Machine Learning em vez das etapas neste artigo. Com uma rede virtual gerenciada, o Azure Machine Learning lida com o trabalho de isolamento de rede para seu espaço de trabalho e cálculos gerenciados. Você também pode adicionar pontos de extremidade privados para recursos necessários para o espaço de trabalho, como a Conta de Armazenamento do Azure. Para obter mais informações, consulte Isolamento de rede gerenciado pelo espaço de trabalho.
Neste artigo, você aprenderá a proteger um espaço de trabalho do Azure Machine Learning e seus recursos associados em uma Rede Virtual do Azure.
Este artigo faz parte de uma série sobre como proteger um fluxo de trabalho do Azure Machine Learning. Veja os outros artigos desta série:
- Descrição geral da rede virtual
- Proteger o ambiente de formação
- Proteger o ambiente de inferência
- Ativar funcionalidade de estúdio
- Utilizar o DNS personalizado
- Usar um firewall
- Isolamento de rede da plataforma API
Para obter um tutorial sobre como criar um espaço de trabalho seguro, consulte Tutorial: Criar um espaço de trabalho seguro, modelo Bicep ou modelo Terraform.
Neste artigo, você aprenderá a habilitar os seguintes recursos de espaços de trabalho em uma rede virtual:
- Área de trabalho do Azure Machine Learning
- Contas de Armazenamento do Azure
- Azure Key Vault
- Registo de Contentores do Azure
Pré-requisitos
Leia o artigo Visão geral da segurança de rede para entender os cenários comuns de rede virtual e a arquitetura geral de rede virtual.
Leia o artigo Práticas recomendadas do Azure Machine Learning para segurança corporativa para saber mais sobre as práticas recomendadas.
Uma rede virtual e uma sub-rede existentes para usar com seus recursos de computação.
Aviso
Não use o intervalo de endereços IP 172.17.0.0/16 para sua rede virtual. Este é o intervalo de sub-rede padrão usado pela rede de ponte do Docker e resultará em erros se usado para sua rede virtual. Outros intervalos também podem entrar em conflito consoante o que pretende ligar à rede virtual. Por exemplo, se planear ligar a sua rede no ambiente no local à VNet e essa rede também utilizar o intervalo 172.16.0.0/16. Em última análise, cabe a você planejar sua infraestrutura de rede.
Para implantar recursos em uma rede virtual ou sub-rede, sua conta de usuário deve ter permissões para as seguintes ações no controle de acesso baseado em função do Azure (RBAC do Azure):
- "Microsoft.Network/*/read" no recurso de rede virtual. Essa permissão não é necessária para implantações de modelo do Azure Resource Manager (ARM).
- "Microsoft.Network/virtualNetworks/join/action" no recurso de rede virtual.
- "Microsoft.Network/virtualNetworks/subnets/join/action" no recurso de sub-rede.
Para obter mais informações sobre o RBAC do Azure com rede, consulte as funções internas de rede
Registo de Contentores do Azure
Seu Registro de Contêiner do Azure deve ser a versão Premium. Para obter mais informações sobre atualização, consulte Alterando SKUs.
Se o Registro de Contêiner do Azure usar um ponto de extremidade privado, recomendamos que ele esteja na mesma rede virtual que a conta de armazenamento e os destinos de computação usados para treinamento ou inferência. No entanto, também pode estar em uma rede virtual emparelhada .
Se ele usar um ponto de extremidade de serviço, ele deverá estar na mesma rede virtual e sub-rede que a conta de armazenamento e os destinos de computação.
Seu espaço de trabalho do Azure Machine Learning deve conter um cluster de computação do Azure Machine Learning.
Limitações
Conta de armazenamento do Azure
Se você planeja usar o estúdio do Azure Machine Learning e a conta de armazenamento também estiver na rede virtual, há requisitos de validação extras:
- Se a conta de armazenamento usar um ponto de extremidade de serviço, o ponto de extremidade privado do espaço de trabalho e o ponto de extremidade do serviço de armazenamento deverão estar na mesma sub-rede da rede virtual.
- Se a conta de armazenamento usar um ponto de extremidade privado, o ponto de extremidade privado do espaço de trabalho e o ponto de extremidade privado de armazenamento deverão estar na mesma rede virtual. Neste caso, podem estar em sub-redes diferentes.
Azure Container Instances
Quando seu espaço de trabalho do Azure Machine Learning é configurado com um ponto de extremidade privado, a implantação em Instâncias de Contêiner do Azure em uma rede virtual não é suportada. Em vez disso, considere utilizar um Ponto final gerido online com isolamento da rede.
Registo de Contentores do Azure
Quando seu espaço de trabalho do Azure Machine Learning ou qualquer recurso é configurado com um ponto de extremidade privado, pode ser necessário configurar um cluster de computação gerenciado pelo usuário para compilações de imagem do Ambiente AzureML. O cenário padrão é aproveitar a computação sem servidor e atualmente é destinado a cenários sem restrições de rede em recursos associados ao Espaço de Trabalho AzureML.
Importante
O cluster de computação usado para criar imagens do Docker precisa ser capaz de acessar os repositórios de pacotes usados para treinar e implantar seus modelos. Talvez seja necessário adicionar regras de segurança de rede que permitam o acesso a repositórios públicos, usar pacotes Python privados ou usar imagens personalizadas do Docker (SDK v1) que já incluam os pacotes.
Aviso
Se o seu Registro de Contêiner do Azure usar um ponto de extremidade privado ou ponto de extremidade de serviço para se comunicar com a rede virtual, você não poderá usar uma identidade gerenciada com um cluster de computação do Azure Machine Learning.
Azure Monitor
Aviso
O Azure Monitor dá suporte ao uso do Azure Private Link para se conectar a uma VNet. No entanto, você deve usar o modo de Link Privado aberto no Azure Monitor. Para obter mais informações, consulte Modos de acesso de Link Privado: Somente Privado vs. Aberto.
Acesso à Internet pública obrigatório
O Azure Machine Learning requer acesso de entrada e saída à Internet pública. As tabelas a seguir fornecem uma visão geral do acesso necessário e para que finalidade. Para tags de serviço que terminam em .region
, substitua region
pela região do Azure que contém seu espaço de trabalho. Por exemplo: Storage.westus
Gorjeta
A guia obrigatório lista a configuração de entrada e saída necessária. A guia situacional lista as configurações opcionais de entrada e saída exigidas por configurações específicas que você pode querer habilitar.
Direção | Protocolo & ports |
Etiqueta de serviço | Propósito |
---|---|---|---|
De Saída | Porta TCP: 80, 443 | AzureActiveDirectory |
Autenticação com o Microsoft Entra ID. |
De Saída | TCP: 443, 18881 UDP: 5831 |
AzureMachineLearning |
Utilizar os serviços do Azure Machine Learning. Python intellisense em notebooks usa a porta 18881. Criar, atualizar e excluir uma instância de computação do Azure Machine Learning usa a porta 5831. |
De Saída | QUALQUER: 443 | BatchNodeManagement.region |
Comunicação com o back-end do Azure Batch para instâncias/clusters de computação do Azure Machine Learning. |
De Saída | Porta TCP: 443 | AzureResourceManager |
Criação de recursos do Azure com o Azure Machine Learning, a CLI do Azure e o SDK do Azure Machine Learning. |
De Saída | Porta TCP: 443 | Storage.region |
Aceda aos dados armazenados na Conta de Armazenamento do Azure para o cluster de cálculo e a instância de computação. Para obter informações sobre como evitar a exfiltração de dados nessa saída, consulte Proteção contra exfiltração de dados. |
De Saída | Porta TCP: 443 | AzureFrontDoor.FrontEnd * Não é necessário no Microsoft Azure operado pela 21Vianet. |
Ponto de entrada global para estúdio do Azure Machine Learning. Armazene imagens e ambientes para AutoML. Para obter informações sobre como evitar a exfiltração de dados nessa saída, consulte Proteção contra exfiltração de dados. |
De Saída | Porta TCP: 443 | MicrosoftContainerRegistry.region Observe que essa tag tem uma dependência da AzureFrontDoor.FirstParty tag |
Aceder a imagens do Docker fornecidas pela Microsoft. Configuração do roteador do Azure Machine Learning para o Serviço Kubernetes do Azure. |
Gorjeta
Se você precisar dos endereços IP em vez de tags de serviço, use uma das seguintes opções:
- Baixe uma lista de Intervalos de IP e Tags de Serviço do Azure.
- Use o comando azur CLI az network list-service-tags .
- Use o comando Get-AzNetworkServiceTag do Azure PowerShell.
Os endereços IP podem mudar periodicamente.
Também pode ser necessário permitir o tráfego de saída para o Visual Studio Code e sites que não sejam da Microsoft para a instalação de pacotes exigidos pelo seu projeto de aprendizado de máquina. A tabela a seguir lista os repositórios comumente usados para aprendizado de máquina:
Nome do anfitrião | Objetivo |
---|---|
anaconda.com *.anaconda.com |
Usado para instalar pacotes padrão. |
*.anaconda.org |
Usado para obter dados de recompra. |
pypi.org |
Usado para listar dependências do índice padrão, se houver, e o índice não é substituído pelas configurações do usuário. Se o índice for substituído, você também deverá permitir *.pythonhosted.org . |
cloud.r-project.org |
Usado na instalação de pacotes CRAN para desenvolvimento R. |
*.pytorch.org |
Usado por alguns exemplos baseados em PyTorch. |
*.tensorflow.org |
Usado por alguns exemplos baseados no Tensorflow. |
code.visualstudio.com |
Necessário para baixar e instalar o Visual Studio Code desktop. Isso não é necessário para o Visual Studio Code Web. |
update.code.visualstudio.com *.vo.msecnd.net |
Usado para recuperar bits de servidor do Visual Studio Code 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 as extensões do Visual Studio Code. Esses hosts habilitam a conexão remota com instâncias de computação fornecidas pela extensão Azure ML para Visual Studio Code. Para obter mais informações, veja Ligar a uma instância de computação do Azure Machine Learning no Visual Studio Code. |
raw.githubusercontent.com/microsoft/vscode-tools-for-ai/master/azureml_remote_websocket_server/* |
Usado para recuperar bits de servidor websocket, que são instalados na instância de computação. O servidor websocket é utilizado para transmitir pedidos do cliente do Visual Studio Code (aplicação de ambiente de trabalho) para o servidor do Visual Studio Code em execução na instância de computação. |
Nota
Ao usar a extensão do VS Code para o Azure Machine Learning, a instância de computação remota exigirá um acesso a repositórios públicos para instalar os pacotes exigidos pela extensão. Se a instância de computação exigir um proxy para aceder a estes repositórios públicos ou a Internet, é necessário definir e exportar as variáveis de ambiente HTTP_PROXY
e HTTPS_PROXY
no ficheiro ~/.bashrc
na instância de computação. Este processo pode ser automatizado no momento do aprovisionamento ao utilizar um script personalizado.
Ao usar o Serviço Kubernetes do Azure (AKS) com o Azure Machine Learning, permita o seguinte tráfego para a VNet do AKS:
- Requisitos gerais de entrada/saída para o AKS, conforme descrito no artigo Restringir tráfego de saída no Serviço Kubernetes do Azure.
- Saída para mcr.microsoft.com.
- Ao implantar um modelo em um cluster AKS, use as orientações no artigo Implantar modelos de ML no Serviço Kubernetes do Azure.
Para obter informações sobre como usar uma solução de firewall, consulte Configurar a comunicação de entrada e saída necessária.
Proteja o espaço de trabalho com ponto de extremidade privado
O Azure Private Link permite que você se conecte ao seu espaço de trabalho usando um ponto de extremidade privado. O ponto de extremidade privado é um conjunto de endereços IP privados dentro da sua rede virtual. Em seguida, você pode limitar o acesso ao seu espaço de trabalho para ocorrer apenas nos endereços IP privados. Um endpoint privado ajuda a reduzir o risco de exfiltração de dados.
Para obter mais informações sobre como configurar um ponto de extremidade privado para seu espaço de trabalho, consulte Como configurar um ponto de extremidade privado.
Aviso
Proteger um espaço de trabalho com pontos de extremidade privados não garante a segurança de ponta a ponta por si só. Você deve seguir as etapas no restante deste artigo, e a série VNet, para proteger componentes individuais da sua solução. Por exemplo, se você usar um ponto de extremidade privado para o espaço de trabalho, mas sua Conta de Armazenamento do Azure não estiver atrás da VNet, o tráfego entre o espaço de trabalho e o armazenamento não usará a VNet para segurança.
Proteger contas de armazenamento do Azure
O Azure Machine Learning suporta contas de armazenamento configuradas para utilizar um ponto final privado ou um ponto final de serviço.
No portal do Azure, selecione a Conta de Armazenamento do Azure.
Use as informações em Usar pontos de extremidade privados para o Armazenamento do Azure para adicionar pontos de extremidade privados para os seguintes recursos de armazenamento:
- Blob
- Ficheiro
- Fila - Necessária apenas se você planeja usar pontos de extremidade em lote ou o ParallelRunStep em um pipeline do Azure Machine Learning.
- Tabela - Necessário apenas se você planeja usar pontos de extremidade em lote ou o ParallelRunStep em um pipeline do Azure Machine Learning.
Gorjeta
Ao configurar uma conta de armazenamento que não seja o armazenamento padrão, selecione o tipo de subrecurso Destino que corresponde à conta de armazenamento que você deseja adicionar.
Depois de criar os pontos de extremidade privados para os recursos de armazenamento, selecione a guia Firewalls e redes virtuais em Rede para a conta de armazenamento.
Selecione Redes selecionadas e, em Instâncias de recurso, selecione
Microsoft.MachineLearningServices/Workspace
como Tipo de recurso. Selecione seu espaço de trabalho usando Nome da instância. Para obter mais informações, consulte Acesso confiável com base na identidade gerenciada atribuída ao sistema.Gorjeta
Como alternativa, você pode selecionar Permitir serviços do Azure na lista de serviços confiáveis para acessar essa conta de armazenamento para permitir mais amplamente o acesso de serviços confiáveis. Para obter mais informações, veja Configurar firewalls e redes virtuais do Armazenamento do Microsoft Azure.
Selecione Guardar para guardar a configuração.
Gorjeta
Ao usar um ponto de extremidade privado, você também pode desabilitar o acesso anônimo. Para obter mais informações, consulte não permitir acesso anônimo.
Proteger o Cofre da Chave do Azure
O Azure Machine Learning usa uma instância associada do Cofre da Chave para armazenar as seguintes credenciais:
- A cadeia de conexão da conta de armazenamento associada
- Senhas para instâncias do Azure Container Repository
- Cadeias de conexão para armazenamentos de dados
O cofre de chaves do Azure pode ser configurado para usar um ponto de extremidade privado ou um ponto de extremidade de serviço. Para usar os recursos de experimentação do Azure Machine Learning com o Azure Key Vault atrás de uma rede virtual, use as seguintes etapas:
Gorjeta
Recomendamos que o cofre de chaves esteja na mesma VNet que o espaço de trabalho, no entanto, ele pode estar em uma VNet emparelhada.
Para obter informações sobre como usar um ponto de extremidade privado com o Azure Key Vault, consulte Integrar o Key Vault ao Azure Private Link.
Ativar o Azure Container Registry (ACR)
Gorjeta
Se você não usou um Registro de Contêiner do Azure existente ao criar o espaço de trabalho, talvez não exista. Por padrão, o espaço de trabalho não criará uma instância ACR até precisar de uma. Para forçar a criação de um, treine ou implante um modelo usando seu espaço de trabalho antes de usar as etapas nesta seção.
O Registro de Contêiner do Azure pode ser configurado para usar um ponto de extremidade privado. Use as seguintes etapas para configurar seu espaço de trabalho para usar ACR quando estiver na rede virtual:
Encontre o nome do Registro de Contêiner do Azure para seu espaço de trabalho, usando um dos seguintes métodos:
APLICA-SE A: Azure CLI ml extension v2 (atual)
Se você instalou a extensão de Aprendizado de Máquina v2 para CLI do Azure, pode usar o
az ml workspace show
comando para mostrar as informações do espaço de trabalho. A extensão v1 não retorna essas informações.az ml workspace show -n yourworkspacename -g resourcegroupname --query 'container_registry'
Este comando retorna um valor semelhante a
"/subscriptions/{GUID}/resourceGroups/{resourcegroupname}/providers/Microsoft.ContainerRegistry/registries/{ACRname}"
. A última parte da cadeia de caracteres é o nome do Registro de Contêiner do Azure para o espaço de trabalho.Limite o acesso à sua rede virtual usando as etapas em Conectar-se de forma privada a um Registro de Contêiner do Azure. Ao adicionar a rede virtual, selecione a rede virtual e a sub-rede para seus recursos do Azure Machine Learning.
Configure o ACR para o espaço de trabalho para Permitir acesso por serviços confiáveis.
Por padrão, o Aprendizado de Máquina do Azure tentará usar uma computação sem servidor para criar a imagem. Isso funciona somente quando os recursos dependentes do espaço de trabalho, como Conta de Armazenamento ou Registro de Contêiner, não estão sob nenhuma restrição de rede (pontos de extremidade privados). Se os recursos dependentes do espaço de trabalho forem restritos à rede, use um image-build-compute.
Para configurar uma computação de compilação de imagem, crie um cluster de computação SKU da CPU do Azure Machine Learning na mesma VNet que seus recursos dependentes do espaço de trabalho. Esse cluster pode ser definido como a computação de compilação de imagem padrão e será usado para criar todas as imagens em seu espaço de trabalho a partir desse ponto. Use um dos seguintes métodos para configurar o espaço de trabalho para criar imagens do Docker usando o cluster de computação.
Importante
As seguintes limitações se aplicam ao usar um cluster de computação para compilações de imagem:
- Apenas uma CPU SKU é suportada.
- Se você usar um cluster de computação configurado para nenhum endereço IP público, deverá fornecer alguma maneira para que o cluster acesse a Internet pública. O acesso à Internet é necessário ao acessar imagens armazenadas no Microsoft Container Registry, pacotes instalados no Pypi, Conda, etc. Você precisa configurar o UDR (Roteamento Definido pelo Usuário) para acessar um IP público para acessar a Internet. Por exemplo, você pode usar o IP público do seu firewall ou pode usar NAT de Rede Virtual com um IP público. Para obter mais informações, consulte Como treinar com segurança em uma rede virtual.
Você pode usar o
az ml workspace update
comando para definir uma computação de compilação. O comando é o mesmo para as extensões da CLI do Azure v1 e v2 para aprendizado de máquina. No comando a seguir, substituamyworkspace
pelo nome do espaço de trabalho,myresourcegroup
pelo grupo de recursos que contém o espaço de trabalho emycomputecluster
pelo nome do cluster de computação:az ml workspace update --name myworkspace --resource-group myresourcegroup --image-build-compute mycomputecluster
Você pode voltar para a computação sem servidor executando o mesmo comando e referenciando a computação como um espaço vazio:
--image-build-compute ''
.
Gorjeta
Quando o ACR está atrás de uma rede virtual, você também pode desabilitar o acesso público a ela.
Proteja o Azure Monitor e o Application Insights
Para habilitar o isolamento de rede para o Azure Monitor e a instância do Application Insights para o espaço de trabalho, use as seguintes etapas:
Abra o recurso do Application Insights no portal do Azure. A guia Visão geral pode ou não ter uma propriedade Workspace. Se não tiver a propriedade, execute a etapa 2. Se isso acontecer, então você pode prosseguir diretamente para a etapa 3.
Gorjeta
Novos espaços de trabalho criam um recurso do Application Insights baseado em espaço de trabalho por padrão. Se o espaço de trabalho tiver sido criado recentemente, não será necessário executar a etapa 2.
Atualize a instância do Application Insights para seu espaço de trabalho. Para obter etapas sobre como atualizar, consulte Migrar para recursos do Application Insights baseados em espaço de trabalho.
Crie um Escopo de Link Privado do Azure Monitor e adicione a instância do Application Insights da etapa 1 ao escopo. Para obter mais informações, consulte Configurar seu link privado do Azure Monitor.
Conecte-se com segurança ao seu espaço de trabalho
Para se conectar a um espaço de trabalho protegido atrás de uma rede virtual, use um dos seguintes métodos:
Gateway de VPN do Azure - Conecta redes locais à VNet por meio de uma conexão privada. A conexão é feita através da internet pública. Há dois tipos de gateways VPN que você pode usar:
- Ponto a site: cada computador cliente usa um cliente VPN para se conectar à rede virtual.
- Site a site: um dispositivo VPN conecta a rede virtual à sua rede local.
ExpressRoute - Conecta redes locais à nuvem por meio de uma conexão privada. A conexão é feita usando um provedor de conectividade.
Azure Bastion - Neste cenário, você cria uma Máquina Virtual do Azure (às vezes chamada de caixa de salto) dentro da VNet. Em seguida, você se conecta à VM usando o Azure Bastion. Bastion permite que você se conecte à VM usando uma sessão RDP ou SSH do seu navegador da Web local. Em seguida, você usa a caixa de salto como seu ambiente de desenvolvimento. Como ele está dentro da rede virtual, ele pode acessar diretamente o espaço de trabalho. Para obter um exemplo de como usar uma caixa de salto, consulte Tutorial: Criar um espaço de trabalho seguro.
Importante
Ao usar um gateway VPN ou Rota Expressa, você precisará planejar como funciona a resolução de nomes entre seus recursos locais e aqueles na VNet. Para obter mais informações, consulte Usar um servidor DNS personalizado.
Se você tiver problemas para se conectar ao espaço de trabalho, consulte Solucionar problemas de conectividade do espaço de trabalho seguro.
Diagnóstico da área de trabalho
Você pode executar diagnósticos em seu espaço de trabalho a partir do estúdio do Azure Machine Learning ou do SDK do Python. Após a execução do diagnóstico, uma lista de todos os problemas detetados é retornada. Esta lista inclui links para possíveis soluções. Para obter mais informações, consulte Como usar o diagnóstico do espaço de trabalho.
Acesso público ao espaço de trabalho
Importante
Embora esta seja uma configuração suportada para o Azure Machine Learning, a Microsoft não a recomenda. Você deve verificar essa configuração com sua equipe de segurança antes de usá-la na produção.
Em alguns casos, talvez seja necessário permitir o acesso ao espaço de trabalho a partir da rede pública (sem se conectar através da rede virtual usando os métodos detalhados na seção Conectar-se com segurança ao seu espaço de trabalho ). O acesso através da Internet pública é protegido usando TLS.
Para habilitar o acesso de rede pública ao espaço de trabalho, use as seguintes etapas:
- Habilite o acesso público ao espaço de trabalho depois de configurar o ponto de extremidade privado do espaço de trabalho.
- Configure o firewall do Armazenamento do Azure para permitir a comunicação com o endereço IP de clientes que se conectam pela Internet pública. Talvez seja necessário alterar o endereço IP permitido se os clientes não tiverem um IP estático. Por exemplo, se um dos seus Cientistas de Dados estiver a trabalhar a partir de casa e não conseguir estabelecer uma ligação VPN à rede virtual.
Próximos passos
Este artigo faz parte de uma série sobre como proteger um fluxo de trabalho do Azure Machine Learning. Veja os outros artigos desta série: