Proteggere un'area di lavoro di Azure Machine Learning con reti virtuali (v1)
SI APPLICA A:estensione per interfaccia della riga di comando di Azure ml v1Python SDK azureml v1
Questo articolo illustra come proteggere un'area di lavoro di Azure Machine Learning e le risorse associate in una rete virtuale di Azure.
Suggerimento
È possibile 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 gli ambienti di calcolo gestito. È 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. Vedi gli altri articoli di questa serie:
- Panoramica della rete virtuale
- Proteggere l'ambiente di training
- Proteggere l'ambiente di inferenza
- Abilitare la funzionalità di Studio
- Usare DNS personalizzato
- Utilizzare un firewall
- Isolamento rete della piattaforma API
Per un'esercitazione sulla creazione di un'area di lavoro sicura, vedere Esercitazione: Creare un'area di lavoro sicura, Modello Bicep o Terraform template (Modello Terraform).
Questo articolo illustra come abilitare le seguenti risorse delle aree di lavoro 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
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, se usato per la rete virtuale, genererà errori. 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, l'utente deve 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 (Azure RBAC):
- "Microsoft.Network/*/read" nella risorsa della rete virtuale. Questa autorizzazione non è necessaria per le distribuzioni di modelli di Azure Resource Manager (ARM).
- "Microsoft.Network/virtualNetworks/join/action" nella risorsa della rete virtuale.
- "Microsoft.Network/virtualNetworks/subnets/join/action" nella risorsa della 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, 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 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 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
Se il Registro Azure Container (ACR) si trova dietro una rete virtuale, Azure Machine Learning non può usarlo per compilare direttamente le immagini Docker. In questo caso viene usato il cluster di elaborazione per compilare le immagini.
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, utilizzare pacchetti Python privati o usare immagini Docker personalizzate 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 privato rispetto ad Aperto.
Accesso a Internet pubblico obbligatorio
Azure Machine Learning richiede l'accesso in ingresso e in uscita alla rete Internet pubblica. Le tabelle seguenti offrono una panoramica dell’accesso obbligatorio e del relativo scopo. 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 Obbligatorio elenca la configurazione in ingresso e in uscita obbligatoria. La scheda Situazionale elenca le configurazioni in ingresso e in uscita facoltative richieste da configurazioni specifiche che si desidera 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 usa la porta 5831. |
In uscita | ANY: 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 dall'esfiltrazione di 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 dall'esfiltrazione di dati in uscita vedere Protezione dall'esfiltrazione di dati. |
In uscita | TCP: 443 | MicrosoftContainerRegistry.region Nota: 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 al posto dei tag di servizio, scegliere una delle opzioni seguenti:
- Scaricare un elenco da Intervalli IP e tag di servizio di Azure.
- Usare il comando az network list-service-tags dell'interfaccia della riga di comando di Azure.
- Usare il comando Get-AzNetworkServiceTag di Azure PowerShell.
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 apprendimento automatico. La tabella seguente elenca i repository comunemente usati per l'apprendimento automatico:
Nome host | Scopo |
---|---|
anaconda.com *.anaconda.com |
Usato per installare i pacchetti predefiniti. |
*.anaconda.org |
Usato per ricevere i dati del repository. |
pypi.org |
Usato per elencare le dipendenze dall'indice predefinito, se presenti e se l'indice non viene sovrascritto dalle impostazioni utente. Se l'indice viene sovrascritto, è necessario consentire anche *.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 per desktop. Questa operazione non è obbligatoria per Visual Studio Code per il Web. |
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 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 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 alla rete virtuale del servizio Azure Kubernetes:
- Requisiti generali in ingresso/in uscita per il servizio Azure Kubernetes come descritti nell'articolo Limitare il traffico in uscita nel servizio Azure Kubernetes.
- In uscita verso mcr.microsoft.com.
- Quando si distribuisce un modello in un cluster del servizio Azure Kubernetes, utilizzare le linee guida nell'articolo Distribuire modelli di apprendimento automatico nel 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 tramite gli indirizzi IP privati. Un endpoint privato contribuisce a 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 nella parte restante 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.
Nel portale di Azure, selezionare l'account di Archiviazione di Azure.
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 ParallelRunStep in una pipeline di Azure Machine Learning.
- Tabella: necessaria solo se si prevede di utilizzare ParallelRunStep in una pipeline di Azure Machine Learning.
Suggerimento
Quando si configura un account di archiviazione che non è l'archiviazione predefinita, selezionare il tipo di Risorsa secondaria di destinazione che corrisponde all'account di archiviazione che si desidera aggiungere.
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.
Scegliere Reti selezionate, quindi, in Istanze di risorse selezionare
Microsoft.MachineLearningServices/Workspace
come Tipo di risorsa. Selezionare l'area di lavoro usando Nome 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 permettere un accesso più ampio da parte dei servizi affidabili. Per altre informazioni, vedere Configurare i firewall e le reti virtuali di Archiviazione di Azure.
Seleziona Salva per salvare la configurazione.
Suggerimento
Se 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 di Azure 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 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 utilizzi un endpoint privato o un endpoint di servizio, il Key Vault 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 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:
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 v1
Se è stata installata l'estensione Machine Learning v1 per l'interfaccia della riga di comando di Azure, è possibile usare il comando
az ml workspace show
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.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.
Configurare il Registro Azure Container per l'area di lavoro al fine di Consentire l'accesso da parte di servizi attendibili.
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.
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 si usa un cluster di elaborazione non 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 contenitori di Microsoft, nei pacchetti installati in Pypi, Conda e così via. È necessario configurare il routing definito dall'utente (UDR) per raggiungere un indirizzo IP pubblico per l'accesso a Internet. Ad esempio, è possibile utilizzare l'indirizzo IP pubblico del firewall oppure il NAT di rete virtuale 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, sia per l'apprendimento automatico. Nel comando seguente sostituiremyworkspace
con il nome dell'area di lavoro,myresourcegroup
con il gruppo di risorse che contiene l'area di lavoro emycomputecluster
con il nome del cluster di elaborazione: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 a esso.
Archivi dati e set di dati
La tabella seguente elenca i servizi per cui è necessario ignorare la convalida:
Servizio | Ignorare la convalida richiesta? |
---|---|
Archiviazione BLOB di Azure | Sì |
Condivisione file di Azure | Sì |
Azure Data Lake Store Gen1 | No |
Azure Data Lake Store Gen2 | No |
Database SQL di Microsoft Azure | Sì |
PostgreSQL | Sì |
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 rete per Monitoraggio di Azure e l'istanza di Application Insights per l'area di lavoro, procedere con i passaggi seguenti:
Aprire la risorsa Application Insights nel portale di Azure. La scheda Panoramica può avere o meno una proprietà Area di lavoro. Se non ha tale proprietà, eseguire il passaggio 2. Se invece è presente, 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.
Aggiornare l'istanza di Application Insights per l'area di lavoro. Per informazioni su come eseguire l'aggiornamento, vedere Eseguire la migrazione a risorse di Application Insights basate sull'area di lavoro.
Creare un ambito collegamento privato 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, 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 utilizzo di una jump box, vedere Esercitazione - Creare un'area di lavoro sicura.
Importante
Quando si utilizza 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.
Passaggi successivi
Il presente articolo fa parte di una serie di articoli sulla protezione del flusso di lavoro di Azure Machine Learning. Vedi gli altri articoli di questa serie: