Proteger um workspace do Azure Machine Learning com redes virtuais
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)
Dica
Você pode usar as 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 da rede para seu workspace e computação gerenciada. Você também pode adicionar pontos de extremidade privados para os recursos necessários para o workspace, como uma Conta de Armazenamento do Azure. Para obter mais informações, confira Isolamento de rede gerenciada no workspace.
Neste artigo, você aprenderá a proteger um workspace 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. Confira os outros artigos desta série:
- Visão geral da rede virtual
- Proteger o ambiente de treinamento
- Proteger o ambiente de inferência
- Habilitar a funcionalidade do estúdio
- Usar o DNS personalizado
- Usar um firewall
- Isolamento de rede da plataforma de API
Para um tutorial sobre como criar um workspace seguro, consulte Tutorial: Criar um workspace seguro, modelo Bicep ou modelo do Terraform.
Neste artigo, você aprenderá a habilitar os seguintes recursos de workspace em uma rede virtual:
- Workspace do Azure Machine Learning
- Contas de armazenamento do Azure
- Cofre de Chave do Azure
- Registro de Contêiner do Azure
Pré-requisitos
Leia o artigo Visão geral de segurança de rede para entender cenários comuns de rede virtual e toda a arquitetura de rede virtual.
Leia o artigo Melhores práticas do Azure Machine Learning para segurança corporativa para saber mais sobre as melhores práticas.
Uma rede e sub-rede virtuais existentes para usar com os recursos de computação.
Aviso
Não use o intervalo de endereços IP 172.17.0.0/16 para sua VNet. Esse é o intervalo de sub-rede padrão usado pela rede de ponte do Docker e resultará em erros se usado para sua VNet. Outros intervalos também podem entrar em conflito dependendo do que você deseja conectar à rede virtual. Por exemplo, se você planeja conectar sua rede local à VNet e sua rede local também usa o intervalo 172.16.0.0/16. Por fim, 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 RBAC do Azure (controle de acesso baseado em função do Azure):
- "Microsoft.Network/*/read" no recurso de rede virtual. Essa permissão não é necessária para implantações do modelo do ARM (Azure Resource Manager).
- "Microsoft.Network/virtualNetworks/join/action" no recurso de rede virtual.
- "Microsoft.Network/virtualNetworks/subnets/join/action" no recurso de sub-rede.
Para saber mais sobre o RBAC do Azure com rede, confira Funções internas da rede
Registro de Contêiner do Azure
Seu Registro de Contêiner do Azure deve ser a versão Premium. Para obter mais informações sobre atualização, consulte Como alterar SKUs.
Se o Registro de Contêiner do Azure usar um ponto de extremidade privado, recomendamos que ele esteja na mesma rede virtual da conta de armazenamento e dos destinos de computação usado para treinamento ou inferência. No entanto, ele também pode estar em uma rede virtual emparelhada.
Se ele usar um ponto de extremidade de serviço, ele precisará estar na mesma rede virtual e sub-rede da conta de armazenamento e dos destinos de computação.
Seu workspace do Azure Machine Learning deve conter um cluster de cálculo 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 adicionais:
- Se a conta de armazenamento usar um ponto de extremidade de serviço, o ponto de extremidade privado do workspace e o ponto de extremidade de 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 workspace e o ponto de extremidade privado de armazenamento deverão estar na mesma rede virtual. Nesse caso, eles podem estar em sub-redes diferentes.
Instâncias de Contêiner do Azure
Quando seu workspace do Azure Machine Learning é configurado com um ponto de extremidade privado, não há suporte para a implantação em Instâncias de Contêiner do Azure em uma rede virtual. Em vez disso, considere usar um ponto de extremidade online gerenciado com isolamento de rede.
Registro de Contêiner do Azure
Quando o workspace 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 builds de imagem do Ambiente do AzureML. O cenário padrão é aproveitar a computação sem servidor e é destinado atualmente a cenários sem restrições de rede em recursos associados ao Workspace do AzureML.
Importante
O cluster de computação usado para criar imagens do Docker precisa conseguir acessar os repositórios de pacote que são usados para treinar e implantar seus modelos. Talvez seja necessário adicionar regras de segurança de rede que permitam o acesso ao repositórios público, usar pacotes Python privadosou usar imagens personalizadas do Docker (SDK v1) que já incluem os pacotes.
Aviso
Se o Registro de Contêiner do Azure usar um ponto de extremidade privado ou de serviço para se comunicar com a rede virtual, você não poderá usar uma identidade gerenciada com um cluster de cálculo do Azure Machine Learning.
Azure Monitor
Aviso
O Azure Monitor dá suporte ao uso do Link Privado do Azure 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 do Link Privado: comparação entre somente privado e aberto.
Acesso público à Internet obrigatório
O Azure Machine Learning exige o acesso de entrada e de saída à Internet pública. As tabelas a seguir fornecem uma visão geral do acesso necessário e para o que ele é usado. Para as marcas de serviço que terminam em .region
, substitua region
pela região do Azure que contém o seu workspace. Por exemplo Storage.westus
:
Dica
A guia necessária lista a configuração de entrada e saída exigida. A guia situacional lista as configurações opcionais de entrada e saída exigidas por configurações específicas que talvez você queira habilitar.
Direção | Protocolo e ports |
Marca de serviço | Finalidade |
---|---|---|---|
Saída | TCP: 80, 443 | AzureActiveDirectory |
Autenticação usando o Microsoft Entra ID. |
Saída | TCP: 443, 18881 UDP: 5831 |
AzureMachineLearning |
Uso dos serviços do Azure Machine Learning. O IntelliSense do Python em notebooks usa a porta 18881. Criar, atualizar e excluir uma instância de computação do Azure Machine Learning usa a porta 5831. |
Saída | ANY: 443 | BatchNodeManagement.region |
Comunicação com o back-end do Lote do Azure para instâncias/clusters de computação do Azure Machine Learning. |
Saída | 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. |
Saída | TCP: 443 | Storage.region |
Acessar dados armazenados na Conta de Armazenamento do Microsoft Azure para cluster de cálculo e instância de computação. Para obter informações sobre como evitar a exfiltração dos dados nessa saída, confira Proteção contra exfiltração dos dados. |
Saída | TCP: 443 | AzureFrontDoor.FrontEnd * Não é necessário no Microsoft Azure operado pela 21Vianet. |
Ponto de entrada global para o Estúdio do Azure Machine Learning. Armazene imagens e ambientes para AutoML. Para obter informações sobre como evitar a exfiltração dos dados nessa saída, confira Proteção contra exfiltração dos dados. |
Saída | TCP: 443 | MicrosoftContainerRegistry.region Observe que essa marca tem uma dependência na marca AzureFrontDoor.FirstParty |
Acesse as imagens do Docker fornecidas pela Microsoft. Instalação do roteador do Azure Machine Learning para o Serviço de Kubernetes do Azure. |
Dica
Se você precisar dos endereços IP em vez de marcas de serviço, use uma das seguintes opções:
- Baixe uma lista de Marcas de serviço e intervalos de IP do Azure.
- Use o comando da CLI do Azure az network list-service-tags.
- Use o comando Get-AzNetworkServiceTag do Azure PowerShell.
Os endereços IP podem ser alterados periodicamente.
Talvez você também precise permitir o tráfego de saída no Visual Studio Code e em sites que não são da Microsoft para a instalação de pacotes necessários para o seu projeto de machine learning. A seguinte tabela lista os repositórios usados com frequência para machine learning:
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 . |
cloud.r-project.org |
Usado ao instalar pacotes CRAN para desenvolvimento de R. |
*.pytorch.org |
Usado por alguns exemplos com base em PyTorch. |
*.tensorflow.org |
Usado por alguns exemplos com base em Tensorflow. |
code.visualstudio.com |
Necessário para baixar e instalar a área de trabalho do Visual Studio Code. Isso não é necessário para o Visual Studio Code Web. |
update.code.visualstudio.com *.vo.msecnd.net |
Usado para recuperar bits do servidor do Visual Studio 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 as extensões do Visual Studio Code. Esses hosts habilitam a conexão remota para instâncias de computação usando a extensão do Azure ML para Visual Studio Code. Para obter mais informações, consulte Conectar-se 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 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 de área de trabalho) para o servidor do Visual Studio Code em execução na instância de computação. |
Observação
Ao usar a extensão do VS Code do Azure Machine Learning, a instância de computação remota exigirá 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 acessar esses repositórios públicos ou a Internet, você precisará definir e exportar as variáveis de ambiente HTTP_PROXY
e HTTPS_PROXY
no arquivo ~/.bashrc
da instância de computação. Esse processo pode ser automatizado no momento do provisionamento usando um script personalizado.
Ao usar AKS (Serviço de Kubernetes do Azure) com o Azure Machine Learning, permita o seguinte tráfego para a VNet do AKS:
- Requisitos gerais de entrada/saída do AKS, conforme descrito no artigo Restringir tráfego de saída no Serviço de Kubernetes do Azure.
- Saída para o mcr.microsoft.com.
- Ao implantar um modelo em um cluster do AKS, siga as diretrizes no artigo Implantar modelos de ML para o Serviço de 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.
Proteger o workspace com o ponto de extremidade privado
O Link Privado do Azure permite que você se conecte ao seu workspace usando um ponto de extremidade privado. O ponto de extremidade privado é um conjunto de endereços IP privados na sua rede virtual. Você pode limitar o acesso ao seu espaço de trabalho para ocorrer somente nos endereços de IP privados. Um ponto de extremidade privado ajuda a reduzir o risco de exfiltração dos dados.
Para obter mais informações sobre como configurar um ponto de extremidade privado para seu espaço de trabalho, confira Como configurar um ponto de extremidade privado.
Aviso
Proteger um workspace 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 de VNet para proteger os componentes individuais da sua solução. Por exemplo, se você usa um ponto de extremidade privado para o workspace, mas a sua conta de Armazenamento do Microsoft Azure não está atrás da VNet, o tráfego entre o workspace e o armazenamento não usa a VNet para segurança.
Proteger as contas de armazenamento do Azure
O Azure Machine Learning permite contas de armazenamento configuradas para usar pontos de extremidade privados ou pontos de extremidade de serviço.
No portal do Azure, selecione a Conta de Armazenamento do Microsoft Azure.
Use as informações descritas em Usar pontos de extremidade privados para o Armazenamento do Azure para adicionar pontos de extremidade privados aos seguintes recursos de armazenamento:
- Blob
- Arquivo
- Fila – Somente necessária se você planeja usar os pontos de extremidade do Lote ou o ParallelRunStep em um pipeline do Azure Machine Learning.
- Tabela – Somente necessária se você planeja usar os pontos de extremidade do Lote ou o ParallelRunStep em um pipeline do Azure Machine Learning.
Dica
Ao configurar uma conta de armazenamento que não é o armazenamento padrão, escolha o tipo de Sub-recurso de 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 da conta de armazenamento.
Selecione Redes selecionadase em Instâncias de recurso, selecione
Microsoft.MachineLearningServices/Workspace
como o Tipo de recurso. Selecione seu espaço de trabalho usando o Nome da instância. Para obter mais informações, confira Acesso confiável com base na identidade gerenciada atribuída pelo sistema.Dica
Como alternativa, você pode selecionar Permitir que os serviços do Azure na lista de serviços confiáveis acessem essa conta de armazenamento para permitir o acesso de serviços confiáveis de forma mais ampla. Para saber mais, consulte Configurar Redes Virtuais e Firewalls de Armazenamento do Azure.
Selecione Salvar para salvar a configuração.
Dica
Ao usar um ponto de extremidade privado, também será possível desabilitar o acesso anônimo. Para obter mais informações, consulte não permitir acesso anônimo.
Azure Key Vault seguro
O Azure Machine Learning usa uma instância do Key Vault associada para armazenar as seguintes credenciais:
- A cadeia de conexão da conta de armazenamento associada
- Senhas para instâncias do Repositório do Contêiner do Azure
- Cadeias de conexão para armazenamento 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 Azure Key Vault atrás de uma rede virtual, siga as seguintes etapas:
Dica
Recomendamos que o cofre de chaves esteja na mesma VNet que o workspace; 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, confira Integrar o Key Vault com o Link Privado do Azure.
Habilitar ACR (Registro de Contêiner do Azure)
Dica
Se você não usou um Registro de Contêiner do Azure existente ao criar o workspace, talvez ele não exista. Por padrão, o workspace não criará uma instância de ACR até que ele precise de uma. Para forçar a criação de uma, treine ou implante um modelo usando seu workspace 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 etapas a seguir a fim de configurar seu espaço de trabalho para usar o ACR quando ele estiver na rede virtual:
Para localizar o nome do Registro de Contêiner do Azure para seu workspace, use um dos seguintes métodos:
APLICA-SE A: Extensão de ML da CLI do Azurev2 (atual)
Se você tiver instalado a extensão Machine Learning v2 para CLI do Azure, use o comando
az ml workspace show
para mostrar as informações do workspace. A extensão v1 não retorna essas informações.az ml workspace show -n yourworkspacename -g resourcegroupname --query 'container_registry'
Esse 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 workspace.Limite o acesso à rede virtual usando as etapas em Conexão 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 workspace para Permitir o acesso por serviços confiáveis.
Por padrão, o Azure Machine Learning tentará usar uma computação sem servidor para compilar a imagem. Isso só funciona quando os recursos dependentes do workspace, como a conta de armazenamento ou o Registro de Contêiner, não estão sob nenhuma restrição de rede (pontos de extremidade privados). Se os recursos dependentes do workspace forem restritos à rede, use uma computação de build de imagem.
Para configurar uma computação de build de imagem, crie um cluster de cálculo do SKU de CPU do Azure Machine Learning na mesma VNet dos recursos dependentes do workspace. Em seguida, esse cluster pode ser definido como a computação padrão de build de imagem e será usado para compilar todas as imagens do seu workspace desse ponto em diante. Use um dos métodos a seguir para configurar o workspace a fim de compilar imagens do Docker usando o cluster de cálculo.
Importante
As seguintes limitações se aplicam ao usar um cluster de cálculo para builds de imagem:
- Há suporte apenas para uma SKU de CPU.
- Se você usar um cluster de cálculo configurado para nenhum endereço IP público, deverá fornecer alguma forma para o cluster acessar a Internet pública. O acesso à Internet é necessário ao acessar imagens armazenadas no Microsoft Container Registry, pacotes instalados em Pypi, Conda etc. Você precisa configurar o UDR (Roteamento Definido pelo Usuário) para usar um IP público e acessar a Internet. Por exemplo, você pode usar o IP público do firewall ou pode usar a NAT da Rede Virtual com um IP público. Para obter mais informações, confira Como treinar com segurança em uma VNet.
Use o comando
az ml workspace update
para definir uma computação de build. O comando é o mesmo para as extensões da CLI v1 e v2 do Azure para machine learning. No seguinte comando, substituamyworkspace
pelo nome do workspace,myresourcegroup
pelo grupo de recursos que contém o workspace emycomputecluster
pelo nome do cluster de cálculo:az ml workspace update --name myworkspace --resource-group myresourcegroup --image-build-compute mycomputecluster
Você pode alternar de volta para a computação sem servidor executando o mesmo comando e fazendo referência à computação como um espaço vazio:
--image-build-compute ''
.
Dica
Quando o ACR estiver atrás de uma VNet, também será possível desabilitar o acesso público a ele.
Proteger 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 workspace, use as seguintes etapas:
Abra o seu recurso Application Insights no portal do Azure. A guia Visão geral pode ou não ter uma propriedade de Espaço de Trabalho. Se não tiver a propriedade, execute a etapa 2. Setiver, você poderá prosseguir diretamente para a etapa 3.
Dica
Novos workspaces criam um recurso do Application Insights baseado em workspace por padrão. Se o espaço de trabalho tiver sido criado recentemente, você não precisará executar a etapa 2.
Atualize a instância do Application Insights para o workspace. Para obter as etapas sobre como atualizar, confira Migrar para recursos do Application Insights baseados em workspace.
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, confira Configurar seu link privado do Azure Monitor.
Conectar-se com segurança ao seu espaço de trabalho
Para se conectar a um workspace protegido por uma VNet, 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 pela Internet pública. Há dois tipos de gateways de VPN que você pode usar:
- Ponto a site: cada computador cliente usa um cliente VPN para se conectar à VNet.
- Site a site: um dispositivo VPN conecta a VNet à 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 jump box) dentro da VNet. Em seguida, você se conecta à VM usando o Azure Bastion. O Bastion permite que você se conecte à VM usando uma sessão RDP ou SSH do navegador da Web local. Em seguida, use a jump box como seu ambiente de desenvolvimento. Por estar dentro da VNet, ela pode acessar o workspace diretamente. Para obter um exemplo de como usar uma jump box, confira Tutorial: criar um espaço de trabalho seguro.
Importante
Ao usar um Gateway de VPN ou ExpressRoute, você precisará planejar como a resolução de nomes funciona entre os recursos locais e os recursos na VNet. Para obter mais informações, confira Usar um servidor DNS personalizado.
Se você tiver problemas para se conectar ao workspace, consulte Solucionar problemas de conectividade segura do workspace.
Diagnóstico do Workspace
Você pode executar o diagnóstico no seu workspace do estúdio do Azure Machine Learning ou do SDK do Python. Depois que o diagnóstico for executado, uma lista dos problemas detectados será retornada. Essa lista inclui links para as possíveis soluções. Para saber mais, confira Como usar o diagnóstico de workspace.
Acesso público ao workspace
Importante
Embora essa configuração seja compatível com 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 workspace da rede pública (sem se conectar por meio da rede virtual usando os métodos detalhados da seção Conectar-se com segurança ao seu workspace). O acesso pela Internet pública é protegido usando TLS.
Para habilitar o acesso público ao workspace, use as seguintes etapas:
- Habilite o acesso público ao workspace depois de configurar o ponto de extremidade privado do workspace.
- Configure o firewall de 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 de seus Cientistas de Dados estiver trabalhando em casa e não puder estabelecer uma conexão VPN com a rede virtual.
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: