Condividi tramite


Considerazioni sulla sicurezza per Istanze di Azure Container

Questo articolo presenta considerazioni sulla sicurezza per l'uso di Istanze di Azure Container per l'esecuzione di applicazioni contenitore. Gli argomenti includono:

  • Consigli sulla sicurezza per la gestione di immagini e segreti per Istanze di Azure Container
  • Considerazioni per l'ecosistema di contenitori durante tutto il ciclo di vita del contenitore, per qualsiasi piattaforma contenitore

Per consigli utili per migliorare la postura di sicurezza della distribuzione, vedere la baseline di sicurezza di Azure per Istanze di Container.

Consigli sulla sicurezza per Istanze di Azure Container

Usare un registro privato

I contenitori sono costituiti da immagini archiviati in una o più repository. Questi repository possono appartenere a un registro pubblico, come Docker Hub, o a un registro privato. Un esempio di un registro privato è il registro attendibile Docker, che può essere installato in locale o in un cloud privato virtuale. Sono inoltre disponibili servizi di registro contenitori privati basati sul cloud, tra cui Registro Azure Container.

Un'immagine del contenitore disponibile a livello pubblico non garantisce sicurezza. Le immagini dei contenitori sono costituite da più livelli di software, ciascuno dei quali può avere vulnerabilità. Per contribuire a ridurre la minaccia di attacchi, è necessario archiviare e recuperare immagini da un registro privato, ad esempio Registro Azure Container o Docker Trusted Registry. Oltre a offrire un registro privato gestito, Registro Azure Container supporta l'autenticazione basata su entità servizio tramite Microsoft Entra ID per i flussi di autenticazione di base. Questa autenticazione include l'accesso basato sui ruoli per la sola lettura (pull), la scrittura (push) e le autorizzazioni del proprietario.

Monitorare e analizzare le immagini dei contenitori

Sfruttare le soluzioni per analizzare le immagini dei contenitori in un registro privato e identificare potenziali vulnerabilità. È importante comprendere il livello di analisi delle minacce offerto dalle diverse soluzioni.

Ad esempio, Registro Azure Container facoltativamente si integra con Microsoft Defender for Cloud per analizzare automaticamente tutte le immagini Linux di cui viene eseguito il push in un registro. Lo scanner Qualys integrato in Microsoft Defender for Cloud rileva le vulnerabilità delle immagini, le classifica e fornisce indicazioni su come correggerle.

Le soluzioni di monitoraggio della sicurezza e analisi delle immagini, ad esempio Twistlock e Aqua Security sono disponibili anche tramite Azure Marketplace.

Proteggere le credenziali

I contenitori possono essere distribuiti tra diversi cluster e aree di Azure. È pertanto necessario proteggere le credenziali necessarie per gli account di accesso o l'accesso alle API, ad esempio password o token. Verificare che solo gli utenti con privilegi possano accedere a tali contenitori in transito e in stato di inattività. Inventariare tutti i segreti delle credenziali e richiedere agli sviluppatori di usare strumenti avanzati di gestione dei segreti progettati per le piattaforme per contenitori. Assicurarsi che la soluzione includa database crittografati, crittografia TLS per i dati segreti in transito e privilegi minimi controllo degli accessi in base al ruolo di Azure. Azure Key Vault è un servizio cloud che consente di proteggere le chiavi di crittografia e i segreti (ad esempio, certificati, stringhe di connessione e password) per le applicazioni in contenitori. Poiché questi dati sono riservati e importanti per l'azienda, proteggere gli insiemi di credenziali delle chiavi in modo da consentire l'accesso solo ad applicazioni e utenti autorizzati.

Considerazioni per l'ecosistema di contenitori

Le misure di sicurezza seguenti, implementate in modo efficace e gestito, consentono di proteggere l'ecosistema di contenitori. Queste misure si applicano durante tutto il ciclo di vita dei contenitori, dallo sviluppo alla distribuzione di produzione e a una gamma di agenti di orchestrazione, host e piattaforme di contenitori.

Usare la gestione delle vulnerabilità come parte del ciclo di vita dello sviluppo dei contenitori

Usando una gestione efficace delle vulnerabilità nel ciclo di vita dello sviluppo del contenitore, si migliorano le probabilità di identificare e risolvere le questioni di sicurezza prima che diventino un problema più grave.

Individuare le vulnerabilità

Poiché vengono scoperte vulnerabilità sempre nuove, le ricerca e l'identificazione delle vulnerabilità fanno parte di un processo continuo. Incorporare l'analisi delle vulnerabilità nel ciclo di vita dei contenitori:

  • Come controllo finale nella pipeline di sviluppo, è opportuno eseguire un'analisi delle vulnerabilità nei contenitori prima di eseguire il push delle immagini in un registro pubblico o privato.
  • Continuare a analizzare le immagini dei contenitori nel registro sia per identificare eventuali errori che in qualche modo sono sfuggiti durante lo sviluppo sia per risolvere eventuali vulnerabilità appena scoperte, che potrebbero essere presenti nel codice usato nelle immagini dei contenitori.

Eseguire il mapping delle vulnerabilità delle immagini ai contenitori in esecuzione

È necessario disporre di un mezzo per eseguire il mapping delle vulnerabilità identificate nelle immagini del contenitore ai contenitori in esecuzione, in modo che i problemi di sicurezza possano essere mitigati o risolti.

Verificare che nell'ambiente vengano usate solo immagini approvate

Un ecosistema di contenitori presenta di per sé un livello sufficiente di modifiche e volatilità anche senza consentire contenitori sconosciuti. Consentire solo immagini di contenitore approvate. Implementare strumenti e processi per monitorare e impedire l'uso di immagini di contenitore non approvate.

Un modo efficace per ridurre la superficie di attacco e impedire agli sviluppatori di commettere errori di sicurezza critici consiste nel controllare il flusso delle immagini del contenitore nell'ambiente di sviluppo. È ad esempio possibile approvare una singola distribuzione Linux come immagine di base, preferibilmente di tipo lean (Alpine o CoreOS anziché Ubuntu), in modo da ridurre al minimo la superficie per potenziali attacchi.

La firma o l'impronta digitale sull'immagine possono costituire un valido sistema di rintracciabilità per verificare l'integrità dei contenitori. Ad esempio, Registro Azure Container supporta il modello di attendibilità del contenuto di Docker, che consente agli editori di immagini per firmare le immagini di cui viene eseguito il push in un registro e al consumer di immagini di eseguire il pull solo delle immagini firmate.

Consentire solo registri approvati

Un'estensione per garantire che l'ambiente usi solo immagini approvate è consentire solo l'uso di registri contenitori approvati. La richiesta dell'uso di registri contenitori approvati riduce l'esposizione al rischio limitando il potenziale per l'introduzione di vulnerabilità sconosciute o problemi di sicurezza.

Assicurarsi l'integrità delle immagini nel ciclo di vita

Parte della gestione della sicurezza nell'ambito del ciclo di vita del contenitore è rappresentata dalla garanzia dell'integrità delle immagini del contenitore nel registro quando vengono modificate o distribuite in produzione.

  • Le immagini con le vulnerabilità, anche secondarie, non dovrebbero essere eseguite in un ambiente di produzione. Idealmente, tutte le immagini distribuite nell'ambiente di produzione devono essere salvate in un registro privato accessibile a pochi utenti. Limitare il numero di immagini di produzione per assicurarsi che possano essere gestite in modo efficace.

  • Poiché è difficile individuare l'origine del software da un'immagine del contenitore disponibile pubblicamente, creare immagini dall'origine per garantire la conoscenza dell'origine del livello. Quando una vulnerabilità emerge in un'immagine del contenitore generata automaticamente, i clienti possono trovare un percorso più rapido per la risoluzione. Con un'immagine pubblica, i clienti devono trovare la radice di un'immagine pubblica per correggerla o ottenere un'altra immagine sicura dall'editore.

  • Per un'immagine digitalizzata completamente distribuita nell'ambiente di produzione non viene garantito l'aggiornamento per la durata dell'applicazione. È possibile che vengano segnalate vulnerabilità della sicurezza per i livelli dell'immagine precedentemente ignoti o che sono stati introdotti dopo la distribuzione in produzione.

    È necessario controllare periodicamente le immagini distribuite nell'ambiente di produzione per identificare le immagini obsolete o che non vengono aggiornate da un determinato periodo di tempo. È possibile usare metodologie di distribuzione blu-verde e meccanismi di aggiornamento in sequenza per aggiornare le immagini del contenitore senza tempi di inattività. È possibile analizzare le immagini usando gli strumenti descritti nella sezione precedente.

  • Usare una pipeline di integrazione continua (CI) con l'analisi integrata della sicurezza per creare immagini sicure ed eseguirne il push nel registro privato. L'analisi delle vulnerabilità incorporata nella soluzione CI garantisce che le immagini che passano tutti i test vengano inserite nel registro privato dalla produzione da cui vengono distribuiti i carichi di lavoro della produzione.

    Un errore di pipeline CI garantisce che le immagini vulnerabili non vengano inserite nel registro privato usato per le distribuzioni del carico di lavoro di produzione. Automatizza anche l'analisi della sicurezza delle immagini se è presente un numero significativo di immagini. Altrimenti il controllo manuale delle immagini per le vulnerabilità di sicurezza può risultare lungo e dettagliato e tendente all'errore.

Applicare i privilegi minimi in fase di runtime

Il concetto di privilegi minimi è alla base di una procedura consigliata per la sicurezza che si applica anche ai contenitori. Quando una vulnerabilità viene sfruttata, in genere offre all'utente malintenzionato l'accesso e i privilegi uguali a quelli dell'applicazione o del processo compromesso. Se si fa in modo che i contenitori funzionino con l'accesso e i privilegi minimi necessari per completare il lavoro, si riduce l'esposizione al rischio.

Ridurre la superficie di attacco dei contenitori rimuovendo i privilegi non necessari

È anche possibile ridurre al minimo la potenziale superficie di attacco rimuovendo eventuali processi o privilegi inutilizzati o non necessari dal runtime dei contenitori. I contenitori con privilegi vengono eseguiti come root. Se un utente malintenzionato o un carico di lavoro dannoso riesce ad accedere a un contenitore con privilegi, quest'ultimo verrà eseguito come root nel sistema.

Preapprovare file ed eseguibili a cui è consentito l'accesso o l'esecuzione del contenitore

La riduzione del numero di variabili o sconosciute consente di mantenere un ambiente stabile e affidabile. La limitazione dei contenitori in modo da poter accedere o eseguire solo file preapprovati o sicuri elencati ed eseguibili è un metodo collaudato per limitare l'esposizione al rischio.

È molto più facile gestire un elenco sicuro quando viene implementato fin dall'inizio. Un elenco sicuro fornisce una misura del controllo e della gestibilità man mano che si apprenderà quali file ed eseguibili sono necessari per il corretto funzionamento dell'applicazione.

Un elenco sicuro non solo riduce la superficie di attacco, ma può anche fornire una linea di base per le anomalie e prevenire i casi d'uso degli scenari di interruzione del contenitore e del "vicino rumoroso".

Applicare la segmentazione di rete ai contenitori in esecuzione

Per proteggere i contenitori in una subnet dai rischi per la sicurezza in un'altra subnet, mantenere la segmentazione di rete (o la nano segmentazione) o la separazione tra contenitori in esecuzione. La gestione della segmentazione di rete può anche essere necessaria per usare i contenitori nei settori necessari per soddisfare i requisiti di conformità.

Ad esempio, lo strumento partner Aqua offre un approccio automatizzato per la segmentazione nanometrica. Aqua monitora le attività di rete dei contenitori in fase di esecuzione. Identifica tutte le connessioni di rete in ingresso e in uscita da/verso altri contenitori, servizi, indirizzi IP e Internet pubblico. La segmentazione nano viene creata automaticamente in base al traffico monitorato.

Monitorare l'attività relativa al contenitore e l'accesso degli utenti

Come per qualsiasi ambiente IT, è consigliabile eseguire un costante monitoraggio dell'attività e dell'accesso degli utenti all'ecosistema del contenitore, in modo da poter identificare rapidamente qualsiasi attività sospetta o dannosa. Azure offre soluzioni di monitoraggio dei contenitori, tra cui:

  • Monitoraggio di Azure per contenitori monitora le prestazioni dei carichi di lavoro distribuiti negli ambienti Kubernetes ospitati nel servizio Azure Kubernetes. Monitoraggio di Azure per contenitori assicura la visibilità sulle prestazioni raccogliendo metriche sulla memoria e sul processore da controller, nodi e contenitori disponibili in Kubernetes tramite l'API per le metriche.

  • La soluzione Monitoraggio contenitori di Azure consente di visualizzare e gestire altri host contenitore Docker e Windows in un'unica posizione. Ad esempio:

    • Visualizzare informazioni dettagliate sul controllo, in cui sono riportati i comandi usati con i contenitori.
    • Risolvere i problemi relativi ai contenitori visualizzando i log centralizzati ed eseguendo ricerche al loro interno senza dover visualizzare gli host Docker o Windows in remoto.
    • Trovare contenitori che potrebbero essere rumorosi e consumare risorse in eccesso in un host.
    • Visualizzare centralmente informazioni sull’utilizzo di CPU, memoria, archiviazione e rete e sulle prestazioni dei contenitori.

    La soluzione supporta agenti di orchestrazione dei contenitori, tra cui Docker Swarm, DC/OS, Kubernetes non gestito, Service Fabric e Red Hat OpenShift.

Monitorare l'attività delle risorse del contenitore

Monitorare l'attività delle risorse, ad esempio file, rete e altre risorse a cui accedono i contenitori. Il monitoraggio dell'attività e dell'utilizzo delle risorse è utile sia per il monitoraggio delle prestazioni che per la misura di sicurezza.

Monitoraggio di Azure permette il monitoraggio di base per i servizi di Azure consentendo la raccolta di metriche, log attività e log di diagnostica. Il log attività, ad esempio, indica quando vengono create nuove risorse o quando vengono modificate risorse esistenti.

Sono disponibili metriche che forniscono statistiche sulle prestazioni per diverse risorse, nonché per il sistema operativo all'interno di una macchina virtuale. È possibile visualizzare questi dati con una delle utilità di esplorazione disponibili nel portale di Azure e creare avvisi basati su queste metriche.

Registrare tutti gli accessi di amministratore ai contenitori per il controllo

Gestire un audit trail accurato degli accessi di amministratore all'ecosistema di contenitori, tra cui il cluster Kubernetes, il registro contenitori e le immagini dei contenitori. Questi log possono risultare necessari a scopo di controllo e saranno utili come prova in caso di eventi imprevisti della sicurezza. Le soluzioni di Azure includono:

Passaggi successivi