Share via


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

SI APPLICA A:estensione per Machine Learning dell'interfaccia della riga di comando di Azure v1Python SDK azuremlv1

Questo articolo illustra come proteggere un'area di lavoro di Azure Machine Learning e le risorse associate in un'Rete virtuale di Azure.

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 gestisce il 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 fa parte di una serie sulla protezione di un flusso di lavoro di Azure Machine Learning. Vedere 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
  • Archivi dati e set di dati di Azure Machine Learning
  • Azure Key Vault
  • Registro Azure Container

Prerequisiti

  • Leggere l'articolo Panoramica della sicurezza di rete per comprendere gli scenari di rete virtuale comuni e l'architettura complessiva della rete virtuale.

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

  • 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 usato dalla rete bridge Docker e genererà errori se usati 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, spetta 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 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/subnets/join/action" nella risorsa subnet.

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

Registro Azure Container

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

  • Se il Registro Azure Container usa un endpoint privato, deve trovarsi nella stessa rete virtuale dell'account di archiviazione e delle destinazioni di calcolo usate per il training o l'inferenza. Se usa un endpoint di servizio, deve trovarsi nella stessa rete virtuale e nella stessa 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 intende 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 servizio, l'endpoint privato dell'area di lavoro e l'endpoint 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 Il Registro Azure Container si trova dietro una rete virtuale, Azure Machine Learning non può usarlo per compilare direttamente immagini Docker. In questo caso viene usato il cluster di elaborazione per compilare le immagini.

Importante

Il cluster di calcolo usato per compilare immagini Docker deve essere in grado di accedere ai repository di pacchetti usati 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 che includono già i pacchetti.

Avviso

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

Monitoraggio di Azure

Avviso

Monitoraggio di Azure supporta l'uso di collegamento privato di Azure per connettersi a una rete virtuale. Tuttavia, è necessario usare la modalità collegamento privato aperta in Monitoraggio di Azure. Per altre informazioni, vedere collegamento privato modalità di accesso: Solo privato e Open.

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 dell'accesso necessario e dello scopo che serve. Per i tag di 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 in ingresso e in uscita richiesta. La scheda situazione elenca le configurazioni in ingresso e in uscita facoltative richieste da configurazioni specifiche che è possibile abilitare.

Direzione Protocollo &
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.
Python intellisense nei notebook usa la porta 18881.
La creazione, l'aggiornamento e l'eliminazione di un'istanza di calcolo di Azure Machine Learning usano la porta 5831.
In uscita ANY: 443 BatchNodeManagement.region Comunicazione con il back-end di Azure Batch per istanze/cluster di calcolo 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 dell'esfiltrazione dei 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 dell'esfiltrazione dei dati.
In uscita TCP: 443 MicrosoftContainerRegistry.region
Si noti che questo tag ha una dipendenza dal AzureFrontDoor.FirstParty tag
Accedere alle immagini Docker fornite da Microsoft. Configurazione del router di Azure Machine Learning per servizio Azure Kubernetes.

Suggerimento

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

Gli indirizzi IP possono 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 Machine Learning. La tabella seguente elenca i repository di uso comune per Machine Learning:

Nome host Scopo
anaconda.com
*.anaconda.com
Usato per installare i pacchetti predefiniti.
*.anaconda.org Usato per ottenere i dati del repository.
pypi.org Usato per elencare le dipendenze dall'indice predefinito, se presenti, e l'indice non viene sovrascritto dalle impostazioni utente. Se l'indice viene sovrascritto, è necessario anche consentire *.pythonhosted.org.
cloud.r-project.org Usato 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 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 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 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 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 calcolo remota richiederà l'accesso ai repository pubblici per installare i pacchetti richiesti dall'estensione. Se l'istanza di calcolo richiede un proxy per accedere a questi repository pubblici o a Internet, sarà necessario impostare ed esportare le HTTP_PROXY variabili di ambiente e HTTPS_PROXY nel ~/.bashrc file dell'istanza di calcolo. Questo processo può essere automatizzato in fase di provisioning usando uno script personalizzato.

Quando si usa servizio Azure Kubernetes (AKS) con Azure Machine Learning, consentire il traffico seguente alla rete virtuale del servizio Azure Kubernetes:

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

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 sugli indirizzi IP privati. Un endpoint privato consente di ridurre il rischio di esfiltrazione dei 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 con endpoint privati non garantisce la sicurezza end-to-end da sola. Per proteggere i singoli componenti della soluzione, è necessario seguire la procedura descritta nella parte restante di questo articolo e nella serie di reti virtuali. Ad esempio, se si usa un endpoint privato per l'area di lavoro, ma l'account Archiviazione di Azure non si trova dietro la rete virtuale, il traffico tra l'area di lavoro e l'archiviazione non usa 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. Nella portale di Azure selezionare l'account Archiviazione di Azure.

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

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

    Screenshot showing private endpoint configuration page with blob and file options

    Suggerimento

    Quando si configura un account di archiviazione che non è l'archiviazione predefinita, selezionare il tipo di sottorisorsa di destinazione corrispondente all'account di archiviazione da 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. Selezionare Reti selezionate e quindi in Istanze di risorse selezionare Microsoft.MachineLearningServices/Workspace come Tipo di risorsa. Selezionare l'area di lavoro usando il 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 dei servizi attendibili di accedere a questo account di archiviazione per consentire in modo più ampio l'accesso da servizi attendibili. Per altre informazioni, vedere Configurare i firewall e le reti virtuali di Archiviazione di Azure.

    The networking area on the Azure Storage page in the Azure portal when using private endpoint

  5. Seleziona Salva per salvare la configurazione.

Suggerimento

Quando si usa 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 usa un'istanza di Key Vault 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'uso 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

Indipendentemente dal fatto che si usi un endpoint privato o un endpoint di servizio, l'insieme di credenziali delle chiavi deve trovarsi nella stessa rete dell'endpoint privato dell'area di lavoro.

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

Abilitare Creare un Registro Azure Container (ACR)

Suggerimento

Se non è stata usata una 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 fino a quando non ne ha bisogno. Per forzare la creazione di un modello, eseguire il training o la distribuzione di un modello usando l'area di lavoro prima di usare i passaggi descritti in questa sezione.

Registro Azure Container può essere configurato per l'uso di un endpoint privato. Usare la procedura seguente per configurare l'area di lavoro per l'uso di Registro Azure Container quando si trova nella rete virtuale:

  1. Trovare il nome del Registro Azure Container per l'area di lavoro usando uno dei metodi seguenti:

    SI APPLICA A:estensione per Machine Learning dell'interfaccia della riga di comando di Azure v1

    Se è stata installata l'estensione Machine Learning v1 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.

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

    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 usando i passaggi descritti in Connessione 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 per 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 un cluster di calcolo.

  5. Usare uno dei metodi seguenti per configurare l'area di lavoro per compilare immagini Docker usando il cluster di calcolo.

    Importante

    Le limitazioni seguenti si applicano quando si usa un cluster di calcolo per le compilazioni di immagini:

    • È supportato solo uno SKU della CPU.
    • Se si usa un cluster di calcolo configurato per nessun indirizzo IP pubblico, è 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 Contenitori Microsoft, nei pacchetti installati in Pypi, Conda e così via. È necessario configurare il routing definito dall'utente per raggiungere un indirizzo IP pubblico per accedere a Internet. Ad esempio, è possibile usare l'indirizzo IP pubblico del firewall oppure è possibile usare Rete virtuale NAT con un indirizzo IP pubblico. Per altre informazioni, vedere Come eseguire il training sicuro in una rete virtuale.

    È possibile usare il az ml workspace update comando per impostare un ambiente di calcolo di compilazione. Il comando è lo stesso per le estensioni dell'interfaccia della riga di comando di Azure v1 e v2 per Machine Learning. 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 calcolo:

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

Suggerimento

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

Archivi dati e set di dati

La tabella seguente elenca i servizi per cui è necessario ignorare la convalida:

Servizio Ignorare la convalida richiesta?
Archivio BLOB di Azure
Condivisione file di Azure
Azure Data Lake Store Gen1 No
Azure Data Lake Store Gen2 No
Database SQL di Azure
PostgreSQL

Nota

Azure Data Lake Store Gen1 e Azure Data Lake Store Gen2 ignorano la convalida per impostazione predefinita, quindi non è necessario eseguire alcuna operazione.

L'esempio di codice seguente crea un nuovo archivio dati BLOB di Azure e imposta 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

Usare i set di dati

La sintassi per ignorare la convalida del set di dati è simile per i tipi di set di dati seguenti:

  • File delimitato
  • JSON
  • Parquet
  • SQL
  • file

Il codice seguente crea un nuovo set di dati JSON e imposta validate=False.

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

validate=False) 

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, seguire questa procedura:

  1. Aprire la risorsa di Application Insights nel portale di Azure. La scheda Panoramica può avere o meno una proprietà Workspace. Se la proprietà non è disponibile, eseguire il passaggio 2. In caso affermativo, è 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 Eseguire la migrazione alle risorse di Application Insights basate sull'area di lavoro.

  3. Creare un collegamento privato ambito di Monitoraggio di Azure e aggiungere l'istanza di Application Insights dal passaggio 1 all'ambito. Per informazioni su come eseguire questa operazione, 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, usare 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 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 nell'area di lavoro da studio di Azure Machine Learning o Python SDK. Dopo l'esecuzione della diagnostica, viene restituito un elenco di eventuali problemi rilevati. Questo elenco include collegamenti a possibili soluzioni. Per altre informazioni, vedere Come usare la diagnostica dell'area di lavoro.

Passaggi successivi

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