Proteggere un'area di lavoro di Azure Machine Learning con reti virtuali

SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)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.

Questo articolo illustra come proteggere un'area di lavoro di Azure Machine Learning e le risorse associate in una rete virtuale di 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, vedere Esercitazione: Creare un'area di lavoro sicura o Esercitazione: Creare un'area di lavoro sicura usando un modello.

Questo articolo illustra come abilitare le risorse delle aree di lavoro seguenti in una rete virtuale:

  • Azure Machine Learning workspace (Area di lavoro di Azure Machine Learning)
  • Account di archiviazione di Azure
  • Azure Key Vault
  • Registro Azure Container

Prerequisiti

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

  • Per informazioni sulle procedure consigliate, leggere l'articolo Procedure consigliate di Azure Machine Learning per la sicurezza aziendale.

  • Una rete virtuale e una subnet esistenti da usare con le risorse di calcolo.

    Avviso

    Non usare l'intervallo di indirizzi IP 172.17.0.0/16 per la rete virtuale. Questo è l'intervallo di subnet predefinito utilizzato dalla rete bridge Docker e genererà errori, se usato per la rete virtuale. Anche altri intervalli possono essere in conflitto, a seconda di ciò che si vuole collegare alla rete virtuale. Ad esempio, se si intende connettere la propria rete locale alla rete virtuale e la rete locale usa l'intervallo 172.16.0.0/16, è possibile che si verifichi un conflitto. In definitiva, sta all'utente pianificare l'infrastruttura di rete.

  • 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

Registro Azure Container

  • La versione di Registro Azure Container deve essere Premium. Per altre informazioni sull'aggiornamento, vedere Cambiare SKU.

  • Se il Registro Azure Container usa un endpoint privato, è consigliabile trovarsi nella stessa rete virtuale dell'account di archiviazione e delle destinazioni di calcolo usate per il training o l'inferenza. Tuttavia, può anche trovarsi in una rete virtuale con peering .

    Se usa un endpoint di servizio, deve trovarsi nella stessa rete virtuale e nella medesima subnet dell'account di archiviazione e delle destinazioni di calcolo.

  • L'area di lavoro di Azure Machine Learning deve contenere un cluster di elaborazione di Azure Machine Learning.

Limiti

Account di archiviazione di Azure

  • Se si prevede di usare studio di Azure Machine Learning e l'account di archiviazione si trova anche nella rete virtuale, sono previsti requisiti di convalida aggiuntivi:

    • Se l'account di archiviazione usa un endpoint di servizio, l'endpoint privato dell'area di lavoro e l'endpoint del servizio di archiviazione devono trovarsi nella stessa subnet della rete virtuale.
    • Se l'account di archiviazione usa un endpoint privato, l'endpoint privato dell'area di lavoro e l'endpoint privato di archiviazione devono trovarsi nella stessa rete virtuale. In questo caso, possono trovarsi in subnet diverse.

Istanze di Azure Container

Quando l'area di lavoro di Azure Machine Learning è configurata con un endpoint privato, la distribuzione in Istanze di Azure Container in una rete virtuale non è supportata. Provare invece a usare un endpoint online gestito con isolamento di rete.

Registro Azure Container

Quando l'area di lavoro di Azure Machine Learning o qualsiasi risorsa è configurata con un endpoint privato, potrebbe essere necessario configurare un cluster di calcolo gestito dall'utente per le compilazioni di immagini dell'ambiente AzureML. Lo scenario predefinito è l'uso del calcolo serverless e attualmente destinato a scenari senza restrizioni di rete sulle risorse associate all'area di lavoro di AzureML.

Importante

Il cluster di elaborazione usato per compilare le immagini Docker deve essere in grado di accedere ai repository di pacchetti utilizzati per eseguire il training e la distribuzione dei modelli. Potrebbe essere necessario aggiungere regole di sicurezza di rete che consentono l'accesso ai repository pubblici, usare pacchetti Python privati o usare immagini Docker personalizzate (SDK v1) che includono già i pacchetti.

Avviso

Se Registro Azure Container utilizza un endpoint privato o un endpoint di servizio per comunicare con la rete virtuale, non è possibile usare un'identità gestita con un cluster di elaborazione di Azure Machine Learning.

Monitoraggio di Azure

Avviso

Monitoraggio di Azure supporta l'uso del collegamento privato di Azure per connettersi a una rete virtuale. Tuttavia, è necessario utilizzare la modalità collegamento privato aperto di Monitoraggio di Azure. Per altre informazioni, vedere Modalità di accesso al collegamento privato: solo privata rispetto ad aperta.

Accesso a Internet pubblico obbligatorio

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 Configurare le comunicazioni di input e output necessarie.

Proteggere l'area di lavoro con un endpoint privato

Collegamento privato di Azure consente di connettersi all'area di lavoro usando un endpoint privato. L'endpoint privato è un set di indirizzi IP privati all'interno della rete virtuale. È quindi possibile limitare l'accesso all'area di lavoro solo tramite gli indirizzi IP privati. Un endpoint privato consente di ridurre il rischio di esfiltrazione di dati.

Per altre informazioni sulla configurazione di un endpoint privato per l'area di lavoro, vedere Come configurare un endpoint privato.

Avviso

La protezione di un'area di lavoro tramite endpoint privati non garantisce di per sé la sicurezza end-to-end. Per proteggere i singoli componenti della soluzione, è necessario seguire i passaggi indicati nel resto di questo articolo e nella serie sulle reti virtuali. Ad esempio, se si usa un endpoint privato per l'area di lavoro, ma l'account di archiviazione di Azure non si trova dietro la rete virtuale, il traffico tra l'area di lavoro e l'archiviazione non utilizza la rete virtuale per la sicurezza.

Proteggere gli account di archiviazione di Azure

Azure Machine Learning supporta gli account di archiviazione configurati per l'uso di un endpoint privato o di un endpoint servizio.

  1. Nel portale di Azure, selezionare l'account di Archiviazione di Azure.

  2. Sfruttare le informazioni riportate in Usare endpoint privati per Archiviazione di Azure per aggiungere endpoint privati per le seguenti risorse di archiviazione:

    • BLOB
    • file
    • Coda : necessaria solo se si prevede di usare endpoint Batch o ParallelRunStep in una pipeline di Azure Machine Learning.
    • Tabella : necessaria solo se si prevede di usare endpoint Batch o ParallelRunStep in una pipeline di Azure Machine Learning.

    Screenshot che mostra la pagina di configurazione dell'endpoint privato con le opzioni BLOB e file

    Suggerimento

    Quando si configura un account di archiviazione che non è l'archiviazione predefinita, selezionare il tipo di Sottorisorsa di destinazione che corrisponde all'account di archiviazione che si vuole aggiungere.

  3. Dopo aver creato gli endpoint privati per le risorse di archiviazione, selezionare la scheda Firewall e reti virtuali in Rete per l'account di archiviazione.

  4. Scegliere Reti selezionate e quindi, in Istanze di risorse selezionare Microsoft.MachineLearningServices/Workspace come Tipo di risorsa. Selezionare l'area di lavoro usando Nome dell'istanza. Per altre informazioni, vedere Accesso attendibile basato sull'identità gestita assegnata dal sistema.

    Suggerimento

    In alternativa, è possibile selezionare Consenti ai servizi di Azure nell'elenco servizi attendibili di accedere a questo account di archiviazione per consentire un accesso più ampio da parte dei servizi affidabili. Per altre informazioni, vedere Configurare i firewall e le reti virtuali di Archiviazione di Azure.

    Area di rete nella pagina Archiviazione di Azure del portale di Azure quando si usa l'endpoint privato

  5. Seleziona Salva per salvare la configurazione.

Suggerimento

Quando si utilizza un endpoint privato, è anche possibile disabilitare l'accesso anonimo. Per altre informazioni, vedere Non consentire l'accesso anonimo.

Proteggere Azure Key Vault

Azure Machine Learning utilizza un'istanza dell'insieme di credenziali delle chiavi associata per archiviare le credenziali seguenti:

  • La stringa di connessione all'account di archiviazione associato
  • Le password per le istanze del repository del contenitore di Azure
  • Le stringhe di connessione agli archivi dati

Azure Key Vault può essere configurato per l'utilizzo di un endpoint privato o di un endpoint di servizio. Per usare le funzionalità di sperimentazione di Azure Machine Learning con Azure Key Vault in una rete virtuale, seguire questa procedura:

Suggerimento

È consigliabile che l'insieme di credenziali delle chiavi si trova nella stessa rete virtuale dell'area di lavoro, ma può trovarsi in una rete virtuale con peering .

Per informazioni sull'uso di un endpoint privato con Azure Key Vault, vedere la sezione Integrare Key Vault con collegamento privato di Azure.

Abilitare Creare un Registro Azure Container (ACR)

Suggerimento

Se non è stato usato un Registro Azure Container esistente durante la creazione dell'area di lavoro, è possibile che non esista. Per impostazione predefinita, l'area di lavoro non creerà un'istanza di Registro Azure Container finché non ne avrà necessità. Per forzare la creazione di un modello, è necessario eseguire il training o la distribuzione di un modello tramite l'area di lavoro, prima di utilizzare i passaggi descritti in questa sezione.

Registro Azure Container può essere configurato per l'uso di un endpoint privato. Utilizzare i seguenti passaggi per configurare l'area di lavoro in modo che utilizzi Registro Azure Container quando si trova nella rete virtuale:

  1. Trovare il nome del Registro Azure Container per la propria area di lavoro, usando uno dei metodi seguenti:

    SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)

    Se è stata installata l'estensione Machine Learning v2 per l'interfaccia della riga di comando di Azure, è possibile usare il az ml workspace show comando per visualizzare le informazioni sull'area di lavoro. L'estensione v1 non restituisce queste informazioni.

    az ml workspace show -n yourworkspacename -g resourcegroupname --query 'container_registry'
    

    Il comando restituisce un valore analogo a "/subscriptions/{GUID}/resourceGroups/{resourcegroupname}/providers/Microsoft.ContainerRegistry/registries/{ACRname}". L'ultima parte della stringa è il nome del Registro Azure Container per l'area di lavoro.

  2. Limitare l'accesso alla rete virtuale seguendo i passaggi descritti in Connettersi privatamente a un Registro Azure Container. Quando si aggiunge la rete virtuale, selezionare la rete virtuale e la subnet per le risorse di Azure Machine Learning.

  3. Configurare Registro Azure Container per l'area di lavoro in modo da Consentire l'accesso da parte di servizi attendibili.

  4. Creare un cluster di elaborazione di Azure Machine Learning. Questo cluster viene usato per compilare immagini Docker quando Registro Azure Container si trova dietro una rete virtuale. Per altre informazioni, vedere Creare il cluster di elaborazione.

  5. Per configurare l'area di lavoro per la compilazione di immagini Docker tramite il cluster di elaborazione, usare uno dei metodi seguenti.

    Importante

    Le limitazioni seguenti si applicano quando si utilizza un cluster di elaborazione per le compilazioni di immagini:

    • È supportato solo uno SKU della CPU.
    • Se non si usa un cluster di elaborazione configurato per gli indirizzi IP pubblici, è necessario fornire un modo per consentire al cluster di accedere alla rete Internet pubblica. L'accesso a Internet è necessario quando si accede alle immagini archiviate nel Registro Azure Container Microsoft, nei pacchetti installati in Pypi, Conda e così via. È necessario configurare il routing definito dall'utente per raggiungere un indirizzo IP pubblico per l'accesso a Internet. Ad esempio, è possibile usare l'indirizzo IP pubblico del firewall oppure il NAT di rete virtuale di Azure con un indirizzo IP pubblico. Per altre informazioni, vedere Come eseguire il training sicuro in una rete virtuale.

    È possibile usare il comando az ml workspace update per impostare un ambiente di calcolo di compilazione. Il comando è lo stesso sia per le estensioni dell'interfaccia della riga di comando di Azure v1 e v2 che per l'apprendimento automatico. Nel comando seguente sostituire myworkspace con il nome dell'area di lavoro, myresourcegroup con il gruppo di risorse che contiene l'area di lavoro e mycomputecluster con il nome del cluster di elaborazione:

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

Suggerimento

Se il calcolo della compilazione di immagini è stato configurato per l'uso di un cluster di calcolo e si vuole annullare questa decisione, eseguire lo stesso comando ma lasciare vuoto il riferimento image-build-compute:

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

Suggerimento

Quando il Registro Azure Container si trova dietro una rete virtuale, è anche possibile disabilitare l'accesso pubblico a esso.

Proteggere Monitoraggio di Azure e Application Insights

Per abilitare l'isolamento di rete per Monitoraggio di Azure e l'istanza di Application Insights per l'area di lavoro, procedere con i passaggi seguenti:

  1. Aprire la risorsa Application Insights nel portale di Azure. La scheda Panoramica può contenere o meno una proprietà Area di lavoro. Se non contiene la proprietà, eseguire il passaggio 2. Se la contiene, allora è possibile procedere direttamente al passaggio 3.

    Suggerimento

    Per impostazione predefinita, le nuove aree di lavoro creano una risorsa di Application Insights basata sull'area di lavoro. Se l'area di lavoro è stata creata di recente, non è necessario eseguire il passaggio 2.

  2. Aggiornare l'istanza di Application Insights per l'area di lavoro. Per informazioni su come eseguire l'aggiornamento, vedere Migrazione a risorse di Application Insights basate sull'area di lavoro.

  3. Creare un ambito collegamento privato di Monitoraggio di Azure e aggiungere l'istanza di Application Insights dal passaggio 1 all'ambito. Per altre informazioni, vedere Configurare il collegamento privato di Monitoraggio di Azure.

Connettersi in modo sicuro all'area di lavoro

Per connettersi a un'area di lavoro protetta dietro una rete virtuale, utilizzare uno dei metodi seguenti:

  • Gateway VPN di Azure - Connette le reti locali alla rete virtuale tramite una connessione privata. La connessione viene stabilita nella rete Internet pubblica. Ci sono due tipi di gateway VPN che è possibile usare:

    • Da punto a sito: ogni computer client usa un client VPN per connettersi alla rete virtuale.
    • Da sito a sito: un dispositivo VPN connette la rete virtuale alla rete locale.
  • ExpressRoute - Connette le reti locali al cloud tramite una connessione privata. La connessione viene stabilita usando un provider di connettività.

  • Azure Bastion - In questo scenario si crea una macchina virtuale di Azure (talvolta denominata jump box) nella rete virtuale. Si stabilisce quindi la connessione alla macchina virtuale usando Azure Bastion. Bastion consente di connettersi alla macchina virtuale usando una sessione RDP o SSH dal Web browser locale. Usare quindi il dispositivo jump box come ambiente di sviluppo. Poiché si trova all'interno della rete virtuale, può accedere direttamente all'area di lavoro. Per un esempio di uso di un jump box, vedere Esercitazione: Creare un'area di lavoro sicura.

Importante

Quando si usa un gateway VPN o ExpressRoute, è necessario pianificare il funzionamento della risoluzione dei nomi tra le risorse locali e quelle presenti nella rete virtuale. Per altre informazioni, vedere Usare un server DNS personalizzato.

In caso di problemi di connessione all'area di lavoro, vedere Risolvere i problemi di connettività sicura dell'area di lavoro.

Diagnostica dell'area di lavoro

È possibile eseguire la diagnostica dell'area di lavoro da studio di Azure Machine Learning o da Python SDK. Dopo l'esecuzione della diagnostica, viene restituito un elenco di eventuali problemi rilevati. Questo elenco include i collegamenti a possibili soluzioni. Per altre informazioni, vedere Come usare la diagnostica dell'area di lavoro.

Accesso pubblico all'area di lavoro

Importante

Anche se si tratta di una configurazione supportata per Azure Machine Learning, Microsoft non la consiglia. È necessario verificare questa configurazione con il team di sicurezza prima di usarla nell'ambiente di produzione.

In alcuni casi, potrebbe essere necessario consentire l'accesso all'area di lavoro dalla rete pubblica (senza connettersi tramite la rete virtuale usando i metodi descritti in dettaglio nella sezione Connettersi in modo sicuro all'area di lavoro ). L'accesso tramite Internet pubblico è protetto tramite TLS.

Per abilitare l'accesso alla rete pubblica all'area di lavoro, seguire questa procedura:

  1. Abilitare l'accesso pubblico all'area di lavoro dopo aver configurato l'endpoint privato dell'area di lavoro.
  2. Configurare il firewall di Archiviazione di Azure per consentire la comunicazione con l'indirizzo IP dei client che si connettono tramite internet pubblico. Potrebbe essere necessario modificare l'indirizzo IP consentito se i client non hanno un indirizzo IP statico. Ad esempio, se una delle Scienziato dei dati funziona da casa e non riesce a stabilire una connessione VPN alla rete virtuale.

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: