Gestione delle vulnerabilità per Azure Machine Learning
La gestione delle vulnerabilità comporta il rilevamento, la valutazione, la mitigazione e la creazione di report su eventuali vulnerabilità di sicurezza presenti nei sistemi e nel software di un'organizzazione. La gestione delle vulnerabilità è una responsabilità condivisa tra l'utente e Microsoft.
Questo articolo illustra tali responsabilità e descrive i controlli di gestione delle vulnerabilità forniti da Azure Machine Learning. Si apprenderà come mantenere aggiornata l'istanza del servizio e le applicazioni con gli aggiornamenti della sicurezza più recenti e come ridurre al minimo la finestra di opportunità per gli utenti malintenzionati.
Immagini della VM gestite da Microsoft
Azure Machine Learning gestisce le immagini delle macchine virtuali (VM) del sistema operativo host per le istanze di ambiente di calcolo di Azure Machine Learning, i cluster di elaborazione di Azure Machine Learning e le Data Science Virtual Machine. La frequenza di aggiornamento è mensile e include i dettagli seguenti:
Per ogni nuova versione dell'immagine della VM, gli aggiornamenti più recenti vengono originati dal server di pubblicazione originale del sistema operativo. L'uso degli aggiornamenti più recenti consente di ottenere tutte le patch relative al sistema operativo applicabili. Per Azure Machine Learning, il server di pubblicazione è Canonical per tutte le immagini di Ubuntu. Queste immagini vengono usate per le istanze di ambiente di calcolo di Azure Machine Learning, i cluster di elaborazione e le Data Science Virtual Machine.
Le immagini della VM vengono aggiornate ogni mese.
Oltre alle patch applicate dal server di pubblicazione originale, Azure Machine Learning aggiorna i pacchetti di sistema quando sono disponibili gli aggiornamenti.
Azure Machine Learning controlla e convalida ogni pacchetto di machine learning che potrebbe richiedere un aggiornamento. Nella maggior parte dei casi, le nuove immagini della VM contengono le versioni più recenti del pacchetto.
Tutte le immagini della VM si basano su sottoscrizioni sicure che eseguono regolarmente l'analisi delle vulnerabilità. Azure Machine Learning contrassegna eventuali vulnerabilità non risolte e le corregge entro la versione successiva.
La frequenza è un intervallo mensile per la maggior parte delle immagini. Per le istanze di ambiente di calcolo, la versione dell'immagine è allineata alla frequenza di rilascio di Azure Machine Learning SDK preinstallata nell'ambiente.
Oltre alla regolare cadenza di rilascio di versioni, Azure Machine Learning applica gli hotfix in caso di vulnerabilità. Microsoft implementa gli hotfix entro 72 ore per i cluster di elaborazione di Azure Machine Learning e entro una settimana per le istanze di ambiente di calcolo.
Nota
Il sistema operativo host non è la versione del sistema operativo che è possibile specificare per un ambiente durante il training o la distribuzione di un modello. Gli ambienti vengono eseguiti all'interno di Docker. Docker viene eseguito nel sistema operativo host.
Immagini del contenitore gestite da Microsoft
Le immagini Docker di base gestite da Azure Machine Learning ottengono spesso le patch di sicurezza per risolvere le vulnerabilità appena individuate.
Azure Machine Learning rilascia gli aggiornamenti per le immagini supportate ogni due settimane, al fine di risolvere le vulnerabilità. Ci impegniamo a non avere vulnerabilità precedenti a 30 giorni nella versione più recente delle immagini supportate.
Le immagini con patch vengono rilasciate con un nuovo tag non modificabile e un tag :latest
aggiornato. L'uso del tag :latest
o l'aggiunta a una determinata versione dell'immagine potrebbe essere un compromesso tra la riproducibilità della sicurezza e dell'ambiente per il processo di apprendimento automatico.
Gestione di ambienti e immagini del contenitore
La riproducibilità è un aspetto fondamentale dello sviluppo software e della sperimentazione di apprendimento automatico. L'obiettivo principale del componente dell'ambiente di Azure Machine Learning è garantire la riproducibilità dell'ambiente in cui viene eseguito il codice dell'utente. Per garantire la riproducibilità per qualsiasi processo di apprendimento automatico, le immagini compilate in precedenza vengono estratte nei nodi di calcolo senza la necessità di rimaterializzazione.
Anche se Azure Machine Learning applica patch alle immagini di base con ogni versione, l'eventuale uso dell'immagine più recente potrebbe essere un compromesso tra riproducibilità e gestione delle vulnerabilità. È responsabilità dell'utente scegliere la versione dell'ambiente usata per i processi o le distribuzioni di modelli.
Per impostazione predefinita, le dipendenze vengono sovrapposte alle immagini di base fornite da Azure Machine Learning durante la creazione di ambienti. È anche possibile usare immagini di base personalizzate quando si usano ambienti in Azure Machine Learning. Dopo aver installato diverse dipendenze sulle immagini fornite da Microsoft o aver installato le proprie immagini di base, la gestione delle vulnerabilità diventa responsabilità dell'utente.
All'area di lavoro di Machine Learning è associata un'istanza di Registro Azure Container usata come cache per le immagini del contenitore. Qualsiasi immagine materializzata viene inserita nel registro contenitori. L'area di lavoro la usa se viene attivata la sperimentazione o la distribuzione per l'ambiente corrispondente.
Azure Machine Learning non elimina alcuna immagine dal registro contenitori. L'utente è responsabile della valutazione della necessità di un'immagine nel tempo. Per monitorare e gestire l'igiene dell'ambiente, è possibile usare Microsoft Defender per Registro Azure Container per consentire l'analisi delle immagini per le vulnerabilità. Per automatizzare i processi in base ai trigger di Microsoft Defender, vedere Automatizzare le risposte di correzione.
Uso di un repository di pacchetti privati
Azure Machine Learning usa Conda e Pip per installare i pacchetti Python. Per impostazione predefinita, Azure Machine Learning scarica i pacchetti dai repository pubblici. Se l'organizzazione richiede di creare pacchetti di origine solo da repository privati come i feed di Azure DevOps, è possibile eseguire l'override della configurazione Conda e Pip come parte delle immagini di base e delle configurazioni dell'ambiente per le istanze di ambiente di calcolo.
La configurazione di esempio seguente illustra come rimuovere i canali predefiniti e aggiungere i propri feed Conda e Pip privati. Prendere in considerazione l'uso degli script di configurazione dell'istanza di ambiente di calcolo per l'automazione.
RUN conda config --set offline false \
&& conda config --remove channels defaults || true \
&& conda config --add channels https://my.private.conda.feed/conda/feed \
&& conda config --add repodata_fns <repodata_file_on_your_server>.json
# Configure Pip private indexes and ensure that the client trusts your host
RUN pip config set global.index https://my.private.pypi.feed/repository/myfeed/pypi/ \
&& pip config set global.index-url https://my.private.pypi.feed/repository/myfeed/simple/
# In case your feed host isn't secured through SSL
RUN pip config set global.trusted-host http://my.private.pypi.feed/
Per informazioni su come specificare le proprie immagini di base in Azure Machine Learning, vedere Creare un ambiente da un contesto di compilazione Docker. Per altre informazioni sulla configurazione degli ambienti Conda, vedere Creazione manuale di un file di ambiente nel sito Conda.
Gestione delle vulnerabilità negli host di calcolo
I nodi di calcolo gestiti in Azure Machine Learning usano immagini della VM del sistema operativo gestite da Microsoft. Quando si effettua il provisioning di un nodo, esegue il pull dell'immagine della VM aggiornata più di recente. Questo comportamento si applica all'istanza di ambiente di calcolo, al cluster di elaborazione, all'elaborazione serverless (anteprima) e alle opzioni di calcolo dell'inferenza gestita.
Anche se alle immagini delle VM del sistema operativo vengono regolarmente applicate delle patch, Azure Machine Learning non analizza attivamente i nodi di calcolo per individuare le vulnerabilità durante l'uso. Per un livello di protezione aggiuntivo, prendere in considerazione l'isolamento della rete del calcolo.
Assicurarsi che l'ambiente sia aggiornato e che i nodi di calcolo usino la versione più recente del sistema operativo è una responsabilità condivisa tra l'utente e Microsoft. I nodi che non sono inattivi non possono essere aggiornati all'immagine più recente della macchina virtuale. Le considerazioni sono leggermente diverse per ogni tipo di calcolo, come illustrato nelle sezioni seguenti.
Istanza di calcolo
Le istanze di calcolo ottengono le immagini della macchina virtuale più recenti al momento del provisioning. Microsoft rilascia nuove immagini di macchine virtuali mensilmente. Dopo la distribuzione di un'istanza di ambiente di calcolo, la suddetta non viene aggiornata attivamente. È possibile eseguire una query sulla versione del sistema operativo di un'istanza. Per mantenersi al passo con gli aggiornamenti software e le patch di sicurezza più recenti, è possibile usare uno dei seguenti metodi:
Ricreare un'istanza di ambiente di calcolo per ottenere l'immagine del sistema operativo più recente (scelta consigliata).
Se si usa questo metodo, si perderanno i dati e le personalizzazioni (ad esempio i pacchetti installati) archiviati nel sistema operativo dell'istanza e nei dischi temporanei.
Quando si ricrea l'istanza:
- Archiviare i notebook nella directory File utente per renderli persistenti.
- Montare i dati per rendere persistenti i file.
Per altre informazioni sulle versioni delle immagini, vedere Note sulla versione dell'immagine dell'istanza di ambiente di calcolo di Azure Machine Learning.
Aggiornare regolarmente i pacchetti del sistema operativo e Python.
Usare gli strumenti di gestione dei pacchetti Linux per aggiornare l'elenco di pacchetti alle versioni più recenti:
sudo apt-get update
Usare gli strumenti di gestione dei pacchetti Linux per aggiornare i pacchetti alle versioni più recenti. Quando si usa questo approccio possono insorgere conflitti tra pacchetti.
sudo apt-get upgrade
Usare gli strumenti di gestione dei pacchetti Python per aggiornare i pacchetti e verificare la disponibilità di aggiornamenti:
pip list --outdated
È possibile installare ed eseguire software di analisi aggiuntivo nell'istanza di ambiente di calcolo per eseguire la ricerca di problemi di sicurezza:
- Usare Trivy per individuare le vulnerabilità a livello di pacchetto del sistema operativo e Python.
- Usare ClamAV per individuare il malware. Viene preinstallato nelle istanze di ambiente di calcolo.
L'installazione dell'agente di Microsoft Defender per server non è attualmente supportata.
È consigliabile usare script di personalizzazione per l'automazione. Per un esempio di script di configurazione che combina Trivy e ClamAV, vedere Script di configurazione di esempio dell'istanza di calcolo.
Cluster di elaborazione
I cluster di elaborazione aggiornano automaticamente i nodi all'immagine più recente della VM. Se si configura il cluster con min nodes = 0
, i nodi vengono aggiornati automaticamente alla versione più recente dell'immagine della VM al termine di tutti i processi e il cluster si riduce a zero nodi.
Nelle condizioni seguenti, i nodi del cluster non vengono ridimensionati, per cui non sono in grado di ottenere l'immagine più recente della VM:
- Il numero minimo di nodi del cluster è impostato su un valore maggiore di zero.
- I processi vengono pianificati in modo continuo nel cluster.
L'utente è responsabile del ridimensionamento dei nodi del cluster non inattivi per ottenere gli aggiornamenti più recenti delle immagini della VM del sistema operativo. Azure Machine Learning non arresta i carichi di lavoro in esecuzione nei nodi di calcolo per rilasciare gli aggiornamenti delle VM. Impostare temporaneamente i nodi minimi su zero e consentire al cluster di ridurre a zero nodi.
Endpoint online gestiti
Gli endpoint online gestiti ricevono automaticamente gli aggiornamenti delle immagini dell'host del sistema operativo che includono correzioni di vulnerabilità. La frequenza di aggiornamento delle immagini è almeno di una volta al mese.
I nodi di calcolo vengono aggiornati automaticamente alla versione più recente dell'immagine della VM quando viene rilasciata tale versione. Non è necessario eseguire alcuna azione.
Cluster Kubernetes gestiti dal cliente
Il calcolo Kubernetes consente di configurare i cluster Kubernetes per eseguire il training, eseguire l'inferenza e gestire i modelli in Azure Machine Learning.
Poiché si gestisce l'ambiente con Kubernetes, la gestione delle vulnerabilità delle VM del sistema operativo e delle vulnerabilità dell'immagine del contenitore è responsabilità dell'utente.
Azure Machine Learning pubblica spesso nuove versioni delle immagini del contenitore di estensioni di Azure Machine Learning in Registro artefatti Microsoft. È responsabilità di Microsoft assicurarsi che le nuove versioni delle immagini siano prive di vulnerabilità. Ogni versione corregge le vulnerabilità.
Quando i cluster eseguono processi senza interruzioni, l'esecuzione di processi potrebbe eseguire versioni obsolete dell'immagine del contenitore. Dopo aver aggiornato l'estensione amlarc
a un cluster in esecuzione, i processi appena inviati iniziano a usare la versione più recente dell'immagine. Quando si aggiorna l'estensione amlarc
alla versione più recente, eliminare le versioni precedenti dell'immagine del contenitore dai cluster come necessario.
Per osservare se il cluster Azure Arc esegue la versione più recente di amlarc
, usare il portale di Azure. Nella risorsa di Azure Arc del tipo Kubernetes - Azure Arcandare a Estensioni per trovare la versione dell'estensione amlarc
.
Ambienti AutoML e Designer
Per le esperienze di training basate su codice, è possibile controllare l'ambiente di Azure Machine Learning da usare. Con AutoML e la finestra di progettazione, l'ambiente viene incapsulato come parte del servizio. È possibile eseguire questi tipi di processi nei calcoli configurati, per consentire controlli aggiuntivi, come l'isolamento della rete.
I processi AutoML vengono eseguiti in ambienti di livello superiore alle immagini Docker di base di Azure Machine Learning.
I processi della finestra di progettazione sono suddivisi in compartimenti in componenti. Ogni componente ha un proprio ambiente che si basa sulle immagini Docker di base di Azure Machine Learning. Per altre informazioni sui componenti, vedere i riferimenti sui componenti.