Proteger um espaço de trabalho do Azure Machine Learning com redes virtuais (v1)
APLICA-SE A:Azure CLI ml extension v1Python SDK azureml v1
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.
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.
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
- Armazenamentos de dados e conjuntos de dados do Azure Machine Learning
- 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, ele deverá estar na mesma rede virtual que a conta de armazenamento e os destinos de computação usados para treinamento ou inferência. 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 pretender utilizar o estúdio do Azure Machine Learning e a conta de armazenamento também estiver na VNet, existem requisitos de validação adicionais:
- Se a conta de armazenamento utilizar um ponto final de serviço, o ponto final privado da área de trabalho e o ponto final de serviço de armazenamento têm de estar na mesma sub-rede da VNet.
- Se a conta de armazenamento utilizar um ponto final privado, o ponto final privado da área de trabalho e o ponto final privado de armazenamento têm de estar na mesma VNet. Neste caso, podem estar em sub-redes diferentes.
Azure Container Instances
Quando a área de trabalho do Azure Machine Learning é configurada com um ponto final privado, a implementação no Azure Container Instances numa VNet não é suportada. Em vez disso, considere utilizar um Ponto final gerido online com isolamento da rede.
Registo de Contentores do Azure
Quando o ACR está atrás de uma rede virtual, o Aprendizado de Máquina do Azure não pode usá-lo para criar imagens diretamente do Docker. Em vez disso, o cluster de computação é usado para criar as imagens.
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 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 Usar um firewall com o Azure Machine Learning.
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ário apenas se você planeja usar o ParallelRunStep em um pipeline do Azure Machine Learning.
- Tabela - Necessário apenas se você planeja usar 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
Independentemente de você usar um ponto de extremidade privado ou ponto de extremidade de serviço, o cofre de chaves deve estar na mesma rede que o ponto de extremidade privado do espaço de trabalho.
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 v1
Se tiver instalado a extensão de Aprendizagem de Máquina v1 para a CLI do Azure, pode utilizar o
az ml workspace show
comando para mostrar as informações da área de trabalho.az ml workspace show -w yourworkspacename -g resourcegroupname --query 'containerRegistry'
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.
Crie um cluster de computação do Azure Machine Learning. Esse cluster é usado para criar imagens do Docker quando o ACR está atrás de uma rede virtual. Para obter mais informações, consulte Criar um cluster de computação.
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
Gorjeta
Quando o ACR está atrás de uma rede virtual, você também pode desabilitar o acesso público a ela.
Armazenamentos de dados e conjuntos de dados
A tabela a seguir lista os serviços para os quais você precisa ignorar a validação:
Serviço | Ignora a validação necessária? |
---|---|
Armazenamento de Blobs do Azure | Sim |
Partilha de Ficheiros do Azure | Sim |
Azure Data Lake Store Gen1 | Não |
Azure Data Lake Store Gen2 | Não |
Base de Dados SQL do Azure | Sim |
PostgreSQL | Sim |
Nota
O Azure Data Lake Store Gen1 e o Azure Data Lake Store Gen2 ignoram a validação por padrão, portanto, você não precisa fazer nada.
O exemplo de código a seguir cria um novo armazenamento de dados de Blob do Azure e define skip_validation=True
.
blob_datastore = Datastore.register_azure_blob_container(workspace=ws,
datastore_name=blob_datastore_name,
container_name=container_name,
account_name=account_name,
account_key=account_key,
skip_validation=True ) // Set skip_validation to true
Usar conjuntos de dados
A sintaxe para ignorar a validação do conjunto de dados é semelhante para os seguintes tipos de conjunto de dados:
- Arquivo delimitado
- JSON
- Parquet
- SQL
- Ficheiro
O código a seguir cria um novo conjunto de dados JSON e conjuntos validate=False
.
json_ds = Dataset.Tabular.from_json_lines_files(path=datastore_paths,
validate=False)
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 etapas sobre como fazer isso, 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.
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: