Compartilhar via


Proteger um workspace do Azure Machine Learning com redes virtuais (v1)

APLICA-SE A:Extensão de ML da CLI do Azurev1SDK do Python azureml v1

Neste artigo, você aprenderá a proteger um workspace do Azure Machine Learning e seus recursos associados em uma rede virtual do Azure.

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 da rede gerenciada no workspace.

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 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
  • Armazenamentos de dados e conjuntos de dados do Azure Machine Learning
  • 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, ele precisará estar na mesma rede virtual da conta de armazenamento e dos destinos de computação usados para treinamento ou inferência. 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 VNet, 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 VNet.
    • 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 VNet. Nesse caso, eles podem estar em sub-redes diferentes.

Instâncias de Contêiner do Azure

Quando seu espaço de trabalho 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 VNet. Em vez disso, considere usar um ponto de extremidade online gerenciado com isolamento de rede.

Registro de Contêiner do Azure

Quando o ACR está protegido por uma rede virtual, o Azure Machine Learning não pode usá-lo para compilar imagens do Docker diretamente. Em vez disso, o cluster de cálculo é usado para compilar as imagens.

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 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:

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:

Para obter informações sobre como usar uma solução de firewall, confira Usar um firewall com o Azure Machine Learning.

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.

  1. No portal do Azure, selecione a Conta de Armazenamento do Microsoft Azure.

  2. 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 o ParallelRunStep em um pipeline Azure Machine Learning.
    • Tabela - Somente necessária se você planeja usar o ParallelRunStep em um pipeline Azure Machine Learning.

    Captura de tela mostrando a página de configuração de ponto de extremidade privado com opções de blob e arquivo

    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.

  3. 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.

  4. 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.

    A área de rede na página Armazenamento do Microsoft Azure no portal do Azure ao usar um ponto de extremidade privado

  5. 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

Independentemente de você usar um ponto de extremidade privado ou 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, 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:

  1. 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 ML da CLI do Azure v1

    Se você tiver instalado a extensão Machine Learning v1 para a CLI do Azure, use o comando az ml workspace show para mostrar as informações do workspace.

    az ml workspace show -w yourworkspacename -g resourcegroupname --query 'containerRegistry'
    

    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.

  2. 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.

  3. Configure o ACR para o workspace para Permitir o acesso por serviços confiáveis.

  4. Criar um cluster de cálculo do Azure Machine Learning. Esse cluster é usado para compilar imagens do Docker quando o ACR está protegido por uma VNet. Veja mais informações em Criar cluster de cálculo.

  5. 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, substitua myworkspace pelo nome do workspace, myresourcegroup pelo grupo de recursos que contém o workspace e mycomputecluster pelo nome do cluster de cálculo:

    az ml workspace update --name myworkspace --resource-group myresourcegroup --image-build-compute mycomputecluster
    

Dica

Quando o ACR estiver atrás de uma VNet, também será possível desabilitar o acesso público a ele.

Conjuntos de dados e armazenamentos de dados

A tabela a seguir lista os serviços para os quais você precisa ignorar a validação:

Serviço Ignorar a validação é necessário?
Armazenamento de Blobs do Azure Sim
Compartilhamento de arquivos do Azure Sim
Azure Data Lake Storage Gen1 Não
Azure Data Lake Storage Gen2 Não
Banco de Dados SQL do Azure Sim
PostgreSql Sim

Observação

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 blobs e conjuntos do Azure 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 conjuntos:

  • Arquivo delimitado
  • JSON
  • Parquet
  • SQL
  • Arquivo

O código a seguir cria um novo conjunto de valores e conjuntos JSON validate=False.

json_ds = Dataset.Tabular.from_json_lines_files(path=datastore_paths, 

validate=False) 

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:

  1. 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.

  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.

  3. 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, confira Configurar o 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.

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: