Proteggere un ambiente di training di Azure Machine Learning con reti virtuali

SI APPLICA A: Python SDK azure-ai-ml v2 (corrente)

Suggerimento

Microsoft consiglia di usare reti virtuali gestite di Azure Machine Learning anziché i passaggi descritti in questo articolo. Con una rete virtuale gestita, Azure Machine Learning si occupa del processo di isolamento della rete per l'area di lavoro e i calcoli gestiti. È anche possibile aggiungere endpoint privati per le risorse necessarie per l'area di lavoro, ad esempio l'account di Archiviazione di Azure. Per altre informazioni, vedere Isolamento network gestito dell'area di lavoro.

È possibile usare l'istanza di calcolo di Azure Machine Learning, il calcolo serverless e il cluster di calcolo per eseguire il training sicuro dei modelli in un'Rete virtuale di Azure. Quando si pianifica l'ambiente, è possibile configurare l'istanza di calcolo/il cluster o il calcolo serverless con o senza un indirizzo IP pubblico. Le differenze generali tra i due sono:

  • Nessun indirizzo IP pubblico: riduce i costi, perché non ha gli stessi requisiti di risorse di rete. Migliora la sicurezza rimuovendo il requisito per il traffico in ingresso da Internet. Tuttavia, sono necessarie modifiche di configurazione aggiuntive per abilitare l'accesso in uscita alle risorse necessarie (Microsoft Entra ID, Azure Resource Manager e così via).
  • IP pubblico: funziona per impostazione predefinita, ma costa di più a causa di risorse di rete di Azure aggiuntive. Richiede la comunicazione in ingresso dal servizio Azure Machine Learning tramite la rete Internet pubblica.

La tabella seguente contiene le differenze tra queste configurazioni:

Impostazione Con IP pubblico Senza IP pubblico
Traffico in ingresso AzureMachineLearning tag del servizio. None
Traffico in uscita Per impostazione predefinita, è possibile accedere a Internet pubblico senza restrizioni.
È possibile limitare gli accessi usando un gruppo di sicurezza di rete o un firewall.
Per impostazione predefinita, può accedere alla rete pubblica usando l'accesso in uscita predefinito fornito da Azure.
È consigliabile usare invece un gateway NAT Rete virtuale o un firewall se è necessario instradare il traffico in uscita alle risorse necessarie su Internet.
Risorse di rete di Azure Indirizzo IP pubblico, bilanciamento del carico, interfaccia di rete None

È anche possibile usare Azure Databricks o HDInsight per eseguire il training dei modelli in una rete virtuale.

Importante

Gli elementi contrassegnati come (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica. La versione di anteprima viene messa a disposizione senza contratto di servizio e non è consigliata per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Questo articolo fa parte di una serie di articoli sulla protezione di un flusso di lavoro di Azure Machine Learning. Vedi gli altri articoli di questa serie:

Per un'esercitazione sulla creazione di un'area di lavoro sicura, vedi Esercitazione: Creare un'area di lavoro sicura o Esercitazione: Creare un'area di lavoro sicura usando un modello.

Il presente articolo illustra come proteggere le risorse di calcolo di training seguenti in una rete virtuale:

  • Cluster di calcolo di Azure Machine Learning
  • Istanza di calcolo di Azure Machine Learning
  • Calcolo serverless di Azure Machine Learning
  • Azure Databricks
  • Macchina virtuale
  • Cluster HDInsight

Prerequisiti

  • Per comprendere gli scenari di rete virtuale ricorrenti e l'architettura complessiva della rete virtuale, leggi l'articolo Panoramica della sicurezza di rete.

  • Una rete virtuale e una subnet esistenti da usare con le risorse di calcolo. Questa rete virtuale deve trovarsi nella stessa sottoscrizione dell'area di lavoro di Azure Machine Learning.

    • È consigliabile inserire gli account di archiviazione usati dall'area di lavoro e i processi di training nella stessa area di Azure che si prevede di usare per istanze di calcolo, calcolo serverless e cluster. Se non si trovano nella stessa area di Azure, è possibile che si verifichino costi di trasferimento dei dati e una maggiore latenza di rete.
    • Assicurarsi che la comunicazione WebSocket sia consentita per *.instances.azureml.net e *.instances.azureml.ms nella rete virtuale. I WebSocket vengono usati da Jupyter nelle istanze di calcolo.
  • Una subnet esistente nella rete virtuale. Questa subnet viene usata durante la creazione di istanze di calcolo, cluster e nodi per il calcolo serverless.

    • Assicurarsi che la subnet non sia delegata ad altri servizi di Azure.
    • Assicurarsi che la subnet contenga un numero sufficiente di indirizzi IP liberi. Ogni istanza di ambiente di calcolo richiede un indirizzo IP. Ogni nodo all'interno di un cluster di calcolo e ogni nodo di calcolo serverless richiede un indirizzo IP.
  • Se si dispone del proprio server DNS, è consigliabile usare l'inoltro DNS per risolvere i nomi di dominio completi (FQDN) delle istanze di ambiente di calcolo e dei cluster di elaborazione. Per altre informazioni, vedere Usare un DNS personalizzato con Azure Machine Learning.

  • Per distribuire le risorse in una rete virtuale o in una subnet, l'account utente deve disporre delle autorizzazioni per eseguire le azioni seguenti nel controllo degli accessi in base al ruolo di Azure:

    • "Microsoft.Network/*/read" nella risorsa di rete virtuale. Questa autorizzazione non è necessaria per le distribuzioni di modelli di Azure Resource Manager (ARM).
    • "Microsoft.Network/virtualNetworks/join/action" nella risorsa di rete virtuale.
    • "Microsoft.Network/virtualNetworks/join/action" nella risorsa subnet.

    Per altre informazioni sul controllo degli accessi in base al ruolo di Azure nella rete, vedere Ruoli predefiniti di rete

Limiti

  • Il cluster di elaborazione o l'istanza e la distribuzione di elaborazione serverless nella rete virtuale non sono supportati con Azure Lighthouse.

  • La porta 445 deve essere aperta per le comunicazioni di rete privata tra le istanze di calcolo e l'account di archiviazione predefinito durante il training. Ad esempio, se i calcoli si trovano in una rete virtuale e l'account di archiviazione si trova in un altro, non bloccare la porta 445 nella rete virtuale dell'account di archiviazione.

Cluster di calcolo in una rete virtuale/area diversa dall'area di lavoro

Importante

Non è possibile creare un'istanza di calcolo in un'area o in una rete virtuale diversa, ma solo in un cluster di calcolo.

Per creare un cluster di calcolo in un Rete virtuale di Azure in un'area diversa rispetto alla rete virtuale dell'area di lavoro, sono disponibili due opzioni per abilitare la comunicazione tra le due reti virtuali.

  • Usare il peering reti virtuali.
  • Aggiungere un endpoint privato per l'area di lavoro nella rete virtuale che conterrà il cluster di calcolo.

Importante

Indipendentemente dal metodo selezionato, è anche necessario creare la rete virtuale per il cluster di calcolo; Azure Machine Learning non lo creerà automaticamente.

È anche necessario consentire all'account di archiviazione predefinito, Registro Azure Container e Azure Key Vault di accedere alla rete virtuale per il cluster di calcolo. Esistono diversi modi per eseguire questa operazione. Ad esempio, è possibile creare un endpoint privato per ogni risorsa nella rete virtuale per il cluster di calcolo oppure usare il peering reti virtuali per consentire alla rete virtuale dell'area di lavoro di accedere alla rete virtuale del cluster di calcolo.

Scenario: peering reti virtuali

  1. Configurare l'area di lavoro per l'uso di un Rete virtuale di Azure. Per altre informazioni, vedere Proteggere le risorse dell'area di lavoro.

  2. Creare una seconda Rete virtuale di Azure che verrà usata per i cluster di calcolo. Può trovarsi in un'area di Azure diversa da quella usata per l'area di lavoro.

  3. Configurare il peering reti virtuali tra le due reti virtuali.

    Suggerimento

    Attendere che lo stato del peering reti virtuali venga Connessione prima di continuare.

  4. Modificare la privatelink.api.azureml.ms zona DNS per aggiungere un collegamento alla rete virtuale per il cluster di calcolo. Questa zona viene creata dall'area di lavoro di Azure Machine Learning quando usa un endpoint privato per partecipare a una rete virtuale.

    1. Aggiungere un nuovo collegamento di rete virtuale alla zona DNS. È possibile eseguire questa operazione in diversi modi:

      • Dal portale di Azure passare alla zona DNS e selezionare Collegamenti di rete virtuale. Selezionare quindi + Aggiungi e selezionare la rete virtuale creata per i cluster di calcolo.
      • Dall'interfaccia della riga di comando di Azure usare il az network private-dns link vnet create comando . Per altre informazioni, vedere az network private-dns link vnet create.
      • In Azure PowerShell usare il New-AzPrivateDnsVirtualNetworkLink comando . Per altre informazioni, vedere New-AzPrivateDnsVirtualNetworkLink.
  5. Ripetere il passaggio precedente e i passaggi secondari per la privatelink.notebooks.azure.net zona DNS.

  6. Configurare le risorse di Azure seguenti per consentire l'accesso da entrambe le reti virtuali.

    • Account di archiviazione predefinito per l'area di lavoro.
    • Registro Azure Container per l'area di lavoro.
    • Insieme di credenziali delle chiavi di Azure per l'area di lavoro.

    Suggerimento

    Esistono diversi modi per configurare questi servizi per consentire l'accesso alle reti virtuali. Ad esempio, è possibile creare un endpoint privato per ogni risorsa in entrambe le reti virtuali. In alternativa, è possibile configurare le risorse per consentire l'accesso da entrambe le reti virtuali.

  7. Creare un cluster di calcolo come in genere quando si usa una rete virtuale, ma selezionare la rete virtuale creata per il cluster di calcolo. Se la rete virtuale si trova in un'area diversa, selezionare tale area durante la creazione del cluster di calcolo.

    Avviso

    Quando si imposta l'area, se si tratta di un'area diversa rispetto all'area di lavoro o agli archivi dati, è possibile che si verifichi un aumento della latenza di rete e i costi di trasferimento dei dati. La latenza e i costi possono verificarsi durante la creazione del cluster e durante l'esecuzione di processi in tale cluster.

Scenario: endpoint privato

  1. Configurare l'area di lavoro per l'uso di un Rete virtuale di Azure. Per altre informazioni, vedere Proteggere le risorse dell'area di lavoro.

  2. Creare una seconda Rete virtuale di Azure che verrà usata per i cluster di calcolo. Può trovarsi in un'area di Azure diversa da quella usata per l'area di lavoro.

  3. Creare un nuovo endpoint privato per l'area di lavoro nella rete virtuale che conterrà il cluster di calcolo.

    • Per aggiungere un nuovo endpoint privato usando il portale di Azure, selezionare l'area di lavoro e quindi Selezionare Rete. Selezionare Connessioni endpoint privato, + Endpoint privato e usare i campi per creare un nuovo endpoint privato.

      • Per Area, selezionare la stessa area della rete virtuale.
      • Per Tipo di risorsa, usare Microsoft.MachineLearningServices/workspaces.
      • Impostare l'opzione Risorsa sul nome dell'area di lavoro.
      • Impostare la rete virtuale e la subnet sulla rete virtuale e la subnet creati per i cluster di calcolo.

      Infine, selezionare Crea per creare l'endpoint privato.

    • Per aggiungere un nuovo endpoint privato usando l'interfaccia della riga di comando di Azure, usare .az network private-endpoint create Per un esempio dell'uso di questo comando, vedere Configurare un endpoint privato per l'area di lavoro di Azure Machine Learning.

  4. Creare un cluster di calcolo come in genere quando si usa una rete virtuale, ma selezionare la rete virtuale creata per il cluster di calcolo. Se la rete virtuale si trova in un'area diversa, selezionare tale area durante la creazione del cluster di calcolo.

    Avviso

    Quando si imposta l'area, se si tratta di un'area diversa rispetto all'area di lavoro o agli archivi dati, è possibile che si verifichi un aumento della latenza di rete e i costi di trasferimento dei dati. La latenza e i costi possono verificarsi durante la creazione del cluster e durante l'esecuzione di processi in tale cluster.

Istanza di calcolo/cluster o calcolo serverless senza IP pubblico

Avviso

Queste informazioni sono valide solo quando si usa un Rete virtuale di Azure. Se si usa una rete virtuale gestita, vedere Calcolo gestito con una rete gestita.

Importante

Se si usano istanze di ambiente di calcolo e cluster di elaborazione configurati per nessun indirizzo IP pubblico senza acconsentire esplicitamente all'anteprima, sarà necessario eliminarli e ricrearli dopo il 20 gennaio 2023 (quando la funzionalità sarà disponibile a livello generale).

Se in precedenza si usava l'anteprima di nessun indirizzo IP pubblico, potrebbe essere necessario modificare anche il traffico consentito in ingresso e in uscita, perché i requisiti sono stati modificati per la disponibilità generale:

  • Requisiti in uscita: due uscite aggiuntive, che vengono usate solo per la gestione di istanze di ambiente di calcolo e di cluster di elaborazione. La destinazione di questi tag del servizio è di proprietà di Microsoft:
    • AzureMachineLearning tag del servizio sulla porta UDP 5831.
    • BatchNodeManagement tag del servizio sulla porta TCP 443.

Le configurazioni seguenti sono aggiunte a quelle elencate nella sezione Prerequisiti e sono specifiche per la creazione di istanze di calcolo/cluster configurati per nessun indirizzo IP pubblico. Si applicano anche alle risorse di calcolo serverless:

  • È necessario usare un endpoint privato dell'area di lavoro per la risorsa di calcolo per la comunicazione con i servizi di Azure Machine Learning dalla rete virtuale. Per altre informazioni, vedere Configurare un endpoint privato per l'area di lavoro di Azure Machine Learning.

  • Nella rete virtuale consentire il traffico in uscita ai tag di servizio seguenti o ai nomi di dominio completi (FQDN):

    Tag di servizio Protocollo Port Note
    AzureMachineLearning TCP
    UDP
    443/8787/18881
    5831
    Comunicazione con il servizio Azure Machine Learning.
    BatchNodeManagement.<region> QUALSIASI 443 Sostituire <region> con l'area di Azure che contiene l'area di lavoro di Azure Machine Learning. Comunicazione con Azure Batch. L'istanza di calcolo e il cluster di elaborazione vengono implementati usando il servizio Azure Batch.
    Storage.<region> TCP 443 Sostituire <region> con l'area di Azure che contiene l'area di lavoro di Azure Machine Learning. Questo tag del servizio viene usato per comunicare con l'account di archiviazione di Azure usato da Azure Batch.

    Importante

    L'accesso in uscita a Storage.<region> potrebbe essere potenzialmente usato per esfiltrare i dati dall'area di lavoro. Usando un criterio endpoint di servizio, è possibile attenuare questa vulnerabilità. Per altre informazioni, vedere l'articolo Prevenzione dell'esfiltrazione dei dati di Azure Machine Learning.

    FQDN Protocollo Port Note
    <region>.tundra.azureml.ms UDP 5831 Sostituire <region> con l'area di Azure che contiene l'area di lavoro di Azure Machine Learning.
    graph.windows.net TCP 443 Comunicazione con l'API Microsoft Graph.
    *.instances.azureml.ms TCP 443/8787/18881 Comunicazione con Azure Machine Learning.
    *.<region>.batch.azure.com QUALSIASI 443 Sostituire <region> con l'area di Azure che contiene l'area di lavoro di Azure Machine Learning. Comunicazione con Azure Batch.
    *.<region>.service.batch.azure.com QUALSIASI 443 Sostituire <region> con l'area di Azure che contiene l'area di lavoro di Azure Machine Learning. Comunicazione con Azure Batch.
    *.blob.core.windows.net TCP 443 Comunicazione con archiviazione BLOB di Azure.
    *.queue.core.windows.net TCP 443 Comunicazione con archiviazione code di Azure.
    *.table.core.windows.net TCP 443 Comunicazione con archiviazione tabelle di Azure.
  • Per impostazione predefinita, un'istanza di calcolo o un cluster configurato per nessun indirizzo IP pubblico non ha accesso in uscita a Internet. Se invece è possibile accedervi a Internet, ciò avviene per l'accesso in uscita predefinito di Azure e perché si dispone di NSG che consente l'accesso in uscita a Internet. Tuttavia, non è consigliabile usare l'accesso in uscita predefinito. Se è necessario l'accesso in uscita a Internet, è consigliabile usare invece un firewall e regole in uscita o un gateway NAT e i gruppi di servizi di rete per consentire il traffico in uscita.

    Per altre informazioni sul traffico in uscita usato da Azure Machine Learning, vedere gli articoli seguenti:

    Per altre informazioni sui tag di servizio che possono essere usati con Firewall di Azure, vedere l'articolo Tag del servizio di rete virtuale.

Usare le informazioni seguenti per creare un'istanza di ambiente di calcolo o un cluster di elaborazione senza indirizzo IP pubblico:

az ml compute create Nel comando sostituire i valori seguenti:

  • rg: gruppo di risorse in cui verrà creato il calcolo.
  • ws: nome dell'area di lavoro di Azure Machine Learning.
  • yourvnet: l'Rete virtuale di Azure.
  • yoursubnet: subnet da usare per il calcolo.
  • AmlCompute o ComputeInstance: specificando AmlCompute crea un cluster di calcolo. ComputeInstancecrea un'istanza di calcolo.
# create a compute cluster with no public IP
az ml compute create --name cpu-cluster --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type AmlCompute --set enable_node_public_ip=False

# create a compute instance with no public IP
az ml compute create --name myci --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type ComputeInstance --set enable_node_public_ip=False

Usare le informazioni seguenti per configurare i nodi di calcolo serverless senza indirizzo IP pubblico nella rete virtuale per una determinata area di lavoro:

Creare un'area di lavoro:

az ml workspace create -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
name: testserverlesswithnpip
location: eastus
public_network_access: Disabled
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: true

Aggiornare l'area di lavoro:

az ml workspace update -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: true

Istanza di calcolo/cluster o calcolo serverless con IP pubblico

Importante

Queste informazioni sono valide solo quando si usa un Rete virtuale di Azure. Se si usa una rete virtuale gestita, vedere Calcolo gestito con una rete gestita.

Le configurazioni seguenti sono aggiunte a quelle elencate nella sezione Prerequisiti e sono specifiche per la creazione di istanze di calcolo/cluster con un indirizzo IP pubblico. Si applicano anche alle risorse di calcolo serverless:

  • Se si inseriscono più istanze di ambiente di calcolo e cluster di elaborazione in una rete virtuale, potrebbe essere necessario richiedere un aumento della quota per una o più risorse. L'istanza di calcolo o il cluster di elaborazione di Machine Learning alloca automaticamente le risorse di rete nel gruppo di risorse contenente la rete virtuale. Per ogni istanza o cluster, il servizio alloca le risorse seguenti:

    • Viene creato automaticamente un gruppo di sicurezza di rete (NSG). Questo gruppo di sicurezza di rete consente il traffico TCP in ingresso sulla porta 44224 dal tag del servizio AzureMachineLearning.

      Importante

      L'istanza di ambiente di calcolo e il cluster di elaborazione creano automaticamente un gruppo di sicurezza di rete con le regole necessarie.

      Se si dispone di un altro gruppo di sicurezza di rete a livello di subnet, le regole nel gruppo di sicurezza di rete a livello di subnet non devono essere in conflitto con le regole nel gruppo di sicurezza di rete creato automaticamente.

      Per informazioni su come i gruppi di sicurezza di rete filtrano il traffico di rete, vedere Come i gruppi di sicurezza di rete filtrano il traffico di rete.

    • Un bilanciamento del carico

    Per i cluster di elaborazione, queste risorse vengono eliminate ogni volta che il cluster si riduce a 0 nodi e vengono create quando si aumenta i cluster.

    Per un'istanza di calcolo, queste risorse vengono mantenute fino a quando l'istanza non viene eliminata. L'arresto dell'istanza non rimuove le risorse.

    Importante

    Queste risorse sono limitate in base alle quote delle risorse della sottoscrizione. Se il gruppo di risorse della rete virtuale è bloccato, l'eliminazione del cluster di elaborazione o dell'istanza ambiente di calcolo avrà esito negativo. Non è possibile eliminare il bilanciamento del carico finché non viene eliminato il cluster di elaborazione o l'istanza ambiente di calcolo. Assicurarsi anche che le assegnazioni di Azure non impediscano la creazione di gruppi di sicurezza di rete.

  • Nella rete virtuale, consentire il traffico TCP in ingresso sulla porta 44224 dal tag del servizio AzureMachineLearning.

    Importante

    All'istanza di ambiente di calcolo o al cluster di elaborazione viene assegnato dinamicamente un indirizzo IP al momento della creazione. Poiché l'indirizzo non è noto prima della creazione e l'accesso in ingresso è necessario come parte del processo di creazione, non è possibile assegnarlo in modo statico nel firewall. Se invece si usa un firewall con la rete virtuale, è necessario creare una route definita dall'utente per consentire il traffico in ingresso.

  • Nella rete virtuale consentire il traffico in uscita ai seguenti tag del servizio:

    Tag di servizio Protocollo Port Note
    AzureMachineLearning TCP
    UDP
    443/8787/18881
    5831
    Comunicazione con il servizio Azure Machine Learning.
    BatchNodeManagement.<region> QUALSIASI 443 Sostituire <region> con l'area di Azure che contiene l'area di lavoro di Azure Machine Learning. Comunicazione con Azure Batch. L'istanza di calcolo e il cluster di elaborazione vengono implementati usando il servizio Azure Batch.
    Storage.<region> TCP 443 Sostituire <region> con l'area di Azure che contiene l'area di lavoro di Azure Machine Learning. Questo tag del servizio viene usato per comunicare con l'account di archiviazione di Azure usato da Azure Batch.

    Importante

    L'accesso in uscita a Storage.<region> potrebbe essere potenzialmente usato per esfiltrare i dati dall'area di lavoro. Usando un criterio endpoint di servizio, è possibile attenuare questa vulnerabilità. Per altre informazioni, vedere l'articolo Prevenzione dell'esfiltrazione dei dati di Azure Machine Learning.

    FQDN Protocollo Port Note
    <region>.tundra.azureml.ms UDP 5831 Sostituire <region> con l'area di Azure che contiene l'area di lavoro di Azure Machine Learning.
    graph.windows.net TCP 443 Comunicazione con l'API Microsoft Graph.
    *.instances.azureml.ms TCP 443/8787/18881 Comunicazione con Azure Machine Learning.
    *.<region>.batch.azure.com QUALSIASI 443 Sostituire <region> con l'area di Azure che contiene l'area di lavoro di Azure Machine Learning. Comunicazione con Azure Batch.
    *.<region>.service.batch.azure.com QUALSIASI 443 Sostituire <region> con l'area di Azure che contiene l'area di lavoro di Azure Machine Learning. Comunicazione con Azure Batch.
    *.blob.core.windows.net TCP 443 Comunicazione con archiviazione BLOB di Azure.
    *.queue.core.windows.net TCP 443 Comunicazione con archiviazione code di Azure.
    *.table.core.windows.net TCP 443 Comunicazione con archiviazione tabelle di Azure.

Usare le informazioni seguenti per creare un'istanza di calcolo o un cluster con un indirizzo IP pubblico nella rete virtuale:

az ml compute create Nel comando sostituire i valori seguenti:

  • rg: gruppo di risorse in cui verrà creato il calcolo.
  • ws: nome dell'area di lavoro di Azure Machine Learning.
  • yourvnet: l'Rete virtuale di Azure.
  • yoursubnet: subnet da usare per il calcolo.
  • AmlCompute o ComputeInstance: specificando AmlCompute crea un cluster di calcolo. ComputeInstancecrea un'istanza di calcolo.
# create a compute cluster with a public IP
az ml compute create --name cpu-cluster --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type AmlCompute

# create a compute instance with a public IP
az ml compute create --name myci --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type ComputeInstance

Usare le informazioni seguenti per configurare i nodi di calcolo serverless con un indirizzo IP pubblico nella rete virtuale per una determinata area di lavoro:

Creare un'area di lavoro:

az ml workspace create -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
name: testserverlesswithvnet
location: eastus
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: false

Aggiornare l'area di lavoro:

az ml workspace update -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: false

Azure Databricks

  • La rete virtuale deve trovarsi nella stessa sottoscrizione e area dell'area di lavoro di Azure Machine Learning.
  • Se anche gli account di archiviazione di Azure per l'area di lavoro sono protetti in una rete virtuale, devono trovarsi nella stessa rete virtuale del cluster di Azure Databricks.
  • Oltre alle subnet databricks-private e databricks-public usate da Azure Databricks, è necessaria anche la subnet predefinita creata per la rete virtuale.
  • Azure Databricks non utilizza un endpoint privato per comunicare con la rete virtuale.

Per informazioni specifiche sull'uso di Azure Databricks con una rete virtuale, vedere Distribuire Azure Databricks nella rete virtuale di Azure.

Macchina virtuale o cluster HDInsight

In questa sezione viene illustrato come usare una macchina virtuale o un cluster Azure HDInsight in una rete virtuale con l'area di lavoro.

Creare la macchina virtuale o il cluster HDInsight

Importante

Azure Machine Learning supporta solo macchine virtuali che eseguono Ubuntu.

Creare una macchina virtuale o un cluster HDInsight usando il portale di Azure o l'interfaccia della riga di comando di Azure e inserire il cluster in una rete virtuale di Azure. Per altre informazioni, vedere gli articoli seguenti:

Configurare le porte di rete

Consentire ad Azure Machine Learning di comunicare con la porta SSH nella macchina virtuale o nel cluster, configurare una voce di origine per il gruppo di sicurezza di rete. La porta SSH è in genere la porta 22. Per consentire il traffico da questa origine, eseguire queste operazioni:

  1. Nell'elenco a discesa Origine selezionare Tag del servizio.

  2. Nell'elenco a discesa Tag del servizio di origine selezionare AzureMachineLearning.

    Screenshot delle regole in ingresso per l'esecuzione della sperimentazione in una macchina virtuale o in un cluster HDInsight all'interno di una rete virtuale.

  3. Nell'elenco a discesa Intervalli di porte di origine selezionare *.

  4. Nell'elenco a discesa Destinazione selezionare Qualsiasi.

  5. Nell'elenco a discesa Intervalli di porte di destinazione selezionare 22.

  6. In Protocollo selezionare Qualsiasi.

  7. In Azione selezionare Consenti.

Mantenere le regole in ingresso per il gruppo di sicurezza di rete. Per altre informazioni, vedere le regole di sicurezza predefinite in Gruppi di sicurezza.

Se non si vogliono usare le regole in uscita predefinite e si vuole limitare l'accesso in uscita della rete virtuale, vedere la sezione accesso a Internet pubblico richiesto.

Collegare la macchina virtuale o il cluster HDInsight

Collegare la macchina virtuale o il cluster HDInsight all'area di lavoro di Azure Machine Learning. Per altre informazioni, vedere Gestire le risorse di calcolo per il training e la distribuzione del modello in Studio.

L'accesso a Internet pubblico è necessario per l'esecuzione del training dei modelli

Importante

Mentre le sezioni precedenti di questo articolo descrivono le configurazioni richieste per creare le risorse di calcolo, le informazioni di configurazione presenti in questa sezione sono necessarie per utilizzare queste risorse per l'esecuzione del training dei modelli.

Azure Machine Learning richiede l'accesso in ingresso e in uscita alla rete Internet pubblica. Le tabelle seguenti forniscono una panoramica degli accessi richiesti e del loro scopo. Per i tag del servizio che terminano in .region, sostituire region con l'area di Azure che contiene l'area di lavoro. Ad esempio, Storage.westus:

Suggerimento

La scheda obbligatoria elenca la configurazione richiesta in ingresso e in uscita. La scheda situazionale elenca le configurazioni in ingresso e in uscita facoltative richieste da configurazioni specifiche che è possibile abilitare.

Direzione Protocollo e
ports
Tag di servizio Scopo
In uscita TCP: 80, 443 AzureActiveDirectory Autenticazione usando Microsoft Entra ID.
In uscita TCP: 443, 18881
UDP: 5831
AzureMachineLearning Uso dei servizi Azure Machine Learning.
Nei notebook, Python intellisense utilizza la porta 18881.
La creazione, l'aggiornamento e l'eliminazione di un'istanza di ambiente di calcolo di Azure Machine Learning usano la porta 5831.
In uscita QUALSIASI: 443 BatchNodeManagement.region Comunicazione con il back-end di Azure Batch per istanze di ambiente di calcolo e cluster di elaborazione di Azure Machine Learning.
In uscita TCP: 443 AzureResourceManager Creazione di risorse di Azure con Azure Machine Learning, l'interfaccia della riga di comando di Azure e Azure Machine Learning SDK.
In uscita TCP: 443 Storage.region Accedere ai dati archiviati nell'account di archiviazione di Azure per il cluster di calcolo e l'istanza di calcolo. Per informazioni sulla prevenzione dell'esfiltrazione dei dati in uscita, vedere Protezione dall'esfiltrazione di dati.
In uscita TCP: 443 AzureFrontDoor.FrontEnd
* Non necessario in Microsoft Azure gestito da 21Vianet.
Punto di ingresso globale per studio di Azure Machine Learning. Archiviare immagini e ambienti per AutoML. Per informazioni sulla prevenzione dell'esfiltrazione dei dati in uscita, vedere Protezione dall'esfiltrazione di dati.
In uscita TCP: 443 MicrosoftContainerRegistry.region
Si noti che questo tag ha una dipendenza dal tag AzureFrontDoor.FirstParty
Accedere alle immagini Docker fornite da Microsoft. Configurare il router di Azure Machine Learning per il servizio Azure Kubernetes.

Suggerimento

Se sono necessari gli indirizzi IP anziché i tag del servizio, utilizzare una delle opzioni seguenti:

Gli indirizzi IP potrebbero cambiare periodicamente.

Potrebbe anche essere necessario consentire il traffico in uscita verso Visual Studio Code e siti non Microsoft per l'installazione di pacchetti richiesti dal progetto di apprendimento automatico. La seguente tabella elenca i repository comunemente utilizzati per l'apprendimento automatico:

Nome host Scopo
anaconda.com
*.anaconda.com
Si usa per installare i pacchetti predefiniti.
*.anaconda.org Si usa per ottenere i dati del repository.
pypi.org Usato per elencare le dipendenze dall'indice predefinito, se presenti, e se l'indice non è sovrascritto dalle impostazioni utente. Se l'indice è sovrascritto, è necessario consentire anche *.pythonhosted.org.
cloud.r-project.org Si usa durante l'installazione di pacchetti CRAN per lo sviluppo di R.
*.pytorch.org Usato da alcuni esempi basati su PyTorch.
*.tensorflow.org Usato da alcuni esempi basati su Tensorflow.
code.visualstudio.com Obbligatorio per scaricare e installare Visual Studio Code per desktop. Questa operazione non è necessaria per il Web di Visual Studio Code.
update.code.visualstudio.com
*.vo.msecnd.net
Usato per recuperare i bit del server di Visual Studio Code installati nell'istanza di ambiente di calcolo tramite uno script di installazione.
marketplace.visualstudio.com
vscode.blob.core.windows.net
*.gallerycdn.vsassets.io
Obbligatorio per scaricare e installare le estensioni di Visual Studio Code. Questi host abilitano la connessione remota alle istanze di ambiente calcolo fornite dall'estensione Azure ML per Visual Studio Code. Per altre informazioni, vedere Connettersi a un'istanza di ambiente di calcolo di Azure Machine Learning in Visual Studio Code.
raw.githubusercontent.com/microsoft/vscode-tools-for-ai/master/azureml_remote_websocket_server/* Usato per recuperare i bit del server Websocket, installati nell'istanza di ambiente di calcolo. Il server WebSocket viene usato per trasmettere le richieste dal client Visual Studio Code (applicazione desktop) al server Visual Studio Code in esecuzione nell'istanza di calcolo.

Nota

Quando si usa l'estensione VS Code di Azure Machine Learning, l'istanza di ambiente di calcolo remota richiederà l'accesso ai repository pubblici per installare i pacchetti richiesti dall'estensione. Se l'istanza di ambiente di calcolo richiede un proxy per accedere a questi repository pubblici o a Internet, sarà necessario impostare ed esportare le variabili di ambiente HTTP_PROXY e HTTPS_PROXY nel file ~/.bashrc dell'istanza di ambiente di calcolo. Questo processo può essere automatizzato in fase di provisioning utilizzando uno script personalizzato.

Quando si usa il servizio Azure Kubernetes con Azure Machine Learning, consentire il traffico seguente verso la rete virtuale del servizio Azure Kubernetes:

Per informazioni sull'uso di una soluzione firewall, vedere Usare un firewall con Azure Machine Learning.

Passaggi successivi

Questo articolo fa parte di una serie di articoli sulla protezione di un flusso di lavoro di Azure Machine Learning. Vedi gli altri articoli di questa serie: