Istruttore: per ottenere i risparmi
sui costi e l'efficienza previsti, il cloud computing
si basa in larga misura sulla virtualizzazione.
Ora, utilizzando la virtualizzazione,
è possibile collocare numerosi server logici
su un singolo server fisico.
Questo a sua volta riduce la quantità fisica di spazio, energia e raffreddamento
necessaria all'interno dei nostri data center.
Inoltre, utilizzando la virtualizzazione possiamo
ottenere livelli più elevati di disponibilità, avviando server
virtuali aggiuntivi ogni volta che ne abbiamo bisogno.
Questa capacità di fornire dinamicamente
risorse di memoria e CPU è uno dei vantaggi
principali del cloud computing.
Sebbene i vantaggi del cloud computing
siano molteplici, ci sono ancora numerosi
problemi di sicurezza da considerare.
La maggior parte degli stessi problemi
di sicurezza che si riscontrano con i server
fisici vengono trasferiti anche nell'ambiente cloud.
Spesso i dirigenti pensano che il passaggio al cloud
risolverà tutti i loro problemi,
ma non è mai davvero così.
Quando si utilizza la virtualizzazione, uno o più server logici
risiedono su un singolo server fisico.
A tal fine, utilizziamo un software specializzato,
noto come hypervisor.
L'hypervisor controlla la distribuzione
di tutte le risorse, come il processore, la memoria
e la disponibilità del disco rigido.
In sostanza, l'hypervisor emula una macchina fisica in modo
che il sistema operativo e
tutte le sue applicazioni non si rendano
conto di operare in un ambiente virtuale.
Attualmente gli hypervisor si dividono in due categorie:
hypervisor di tipo uno o bare metal e hypervisor
di tipo due o hosted.
Confrontando i tipi di hypervisor
bare metal con quelli hosted, l'unica differenza
principale dal punto di vista della sicurezza è che con i tipi
hosted dobbiamo assicurarci che anche il sistema
operativo sottostante sia adeguatamente
protetto e patchato.
Dal punto di vista delle prestazioni,
il bare metal sarà più veloce e più efficiente della
sua controparte ospitata.
Un'altra opzione di virtualizzazione è nota
come virtualizzazione basata su container, o containerizzazione.
Con questo tipo, non viene utilizzato alcun hypervisor, ma ogni
container si basa su un sistema operativo comune come base per ciascuno
di essi; mentre ogni container condivide lo stesso
sistema operativo sottostante,
ogni container può avere i propri
binari, librerie e applicazioni che possono
essere personalizzati per le proprie
esigenze.
Attualmente la virtualizzazione basata su container
viene utilizzata quasi esclusivamente con Linux
come sistema operativo sottostante.
La virtualizzazione basata su container utilizza inoltre meno risorse
rispetto a una virtualizzazione di tipo uno o due,
perché non richiede una propria copia
del sistema operativo per ogni singolo container.
Molti fornitori di servizi cloud hanno fatto un ulteriore passo
avanti nella virtualizzazione con l'infrastruttura hyperconverged.
Ciò consente al fornitore di integrare completamente
lo storage, le reti e i server, senza dover apportare
modifiche all'hardware.
Si affidano invece a software e tecnologie
di virtualizzazione per eseguire
tutte le integrazioni.
Possiamo gestire tutto questo da un'unica interfaccia
o da un dispositivo senza doverci preoccupare
di tutte le soluzioni dei fornitori sottostanti.
La virtualizzazione delle applicazioni è un altro
tipo di virtualizzazione comunemente
usato per creare ulteriore sicurezza per l'host sottostante.
La virtualizzazione delle applicazioni è una tecnologia software
che incapsula i programmi informatici
dal sistema operativo sottostante
su cui vengono eseguiti.
Un'applicazione completamente virtualizzata
non è nemmeno installata in senso tradizionale, anche
se viene comunque eseguita come se lo fosse.
Con la virtualizzazione delle applicazioni,
è possibile eseguire applicazioni legacy progettate
per un sistema operativo obsoleto come Windows XP o
Windows 7 su un sistema operativo più moderno, o addirittura eseguire
software multipiattaforma, come le applicazioni Android
su un computer Windows.
Molti fornitori di cloud offrono anche VDI,
o infrastruttura desktop virtuale.
Ora la VDI consente a un provider cloud di offrire un sistema
operativo desktop completo agli utenti finali da
un server centralizzato.
L'utilizzo di questo approccio offre numerosi vantaggi in termini di sicurezza.
Ad esempio, un'organizzazione con cui collaboravo
creava una nuova immagine di desktop virtuale per ogni utente
al momento dell'accesso mattutino.
Questo desktop non era persistente, quindi
anche se veniva sfruttato da un utente malintenzionato, veniva
distrutto non appena l'utente si scollegava, o
a mezzanotte di ogni giorno, distruggendo
di fatto la capacità dell'attaccante di rimanere persistente
sul desktop di quell'utente finale, anche se veniva installato
del malware.
Un altro grande uso della virtualizzazione è quello di creare una sandbox.
Ora, una sandbox consente di
creare un ambiente isolato in cui è possibile analizzare
virus, worm, trojan e altre minacce informatiche all'interno
di un sistema operativo guest.
Ora, poiché si trova in questa sandbox
virtuale che si trova all'interno di una macchina virtuale
isolata, è possibile garantire che non si possa
infettare il proprio computer che la ospita come sistema operativo
host o hypervisor sottostante.
Quando si lavora come analista di cybersicurezza,
si utilizzano spesso le sandbox per l'analisi del malware, soprattutto
quando si effettua un'analisi dinamica del malware,
in cui si prende un pezzo di malware, lo si esegue
e si identifica cosa succede quando il malware viene eseguito su quel particolare
sistema operativo guest.
Un altro buon uso delle macchine virtuali
è la virtualizzazione multipiattaforma.
Ad esempio, utilizzo un MacBook Pro come macchina principale.
Quindi, se volessi testare alcune applicazioni software
per diversi sistemi operativi,
potrei andare a prendere nuove macchine
per ognuno di questi sistemi operativi,
ad esempio avere un portatile per Windows,
uno per Linux e uno per Mac.
Ma se utilizzo la virtualizzazione,
posso invece effettuare la virtualizzazione
cross-platform utilizzando un sistema ospitato sul
mio MacBook Pro con un software come
VMware, Parallels o VirtualBox per poter installare
questi sistemi operativi guest
sopra il mio ambiente Mac OS esistente.
Questo mi permetterà di testare tutti
i software, indipendentemente dal sistema
operativo di cui hanno bisogno, e
di vedere come interagiranno.
Questo è ottimo soprattutto per gli sviluppatori
web, perché quando creo il mio sito
web voglio essere sicuro che funzioni su Windows 10,
Windows 11, Mac, Chromebook, iPhone, Android o qualsiasi altro dispositivo,
e poter testare tutto questo in un'unica macchina utilizzando
la virtualizzazione è una grande risorsa per
noi sviluppatori.
Un altro grande utilizzo della virtualizzazione è la formazione.
È possibile creare ambienti di laboratorio che sono
impostati in modo che le persone possano
andare a fare pratica su un sistema operativo reale utilizzando queste macchine virtuali.
Ad esempio, quando si studiano le
varie certificazioni CompTIA, se si acquista
il corso diontraining. com, sono dotati
di laboratori pratici integrati.
Questi laboratori consentono di accedere al nostro
ambiente basato sul cloud e di eseguire azioni su
sistemi Linux, sistemi Windows 10, sistemi Windows
Server e altro in modo sicuro e protetto, senza alcun
impatto sull'ambiente di produzione
perché tutto è isolato in quest'area di formazione,
o sandbox di formazione.
Un altro aspetto positivo dell'utilizzo di macchine
virtuali per un ambiente di formazione o di
laboratorio è la possibilità di eseguire istantanee in vari
punti e poi riprendere proprio da dove si era creata l'istantanea.
Ad esempio, quando tenevo i miei corsi di persona, creavo
delle macchine non funzionanti con Windows 7 e proponevo
ai miei studenti A+ diversi
problemi da risolvere.
Gli davo la macchina virtuale, la accendevo, la ripristinavo
dall'ultimo punto sicuro, che era quello in
cui l'avevo rotta, e poi gli facevo
cercare di capire cosa non andava
e come potevano risolverlo.
Questo è un ottimo utilizzo delle macchine virtuali
nella formazione.
E man mano che si prosegue negli studi e si inizia
a conoscere Linux, Windows, gli ambienti server,
Mac OS e altre cose del genere, è possibile avviare
diverse macchine virtuali che contengono
questi sistemi operativi guest ed esercitarsi
in un ambiente sicuro e protetto.
L'ultima cosa da discutere
è il concetto di emulazione, perché
molti confondono l'emulazione con la virtualizzazione.
L'emulazione comporta l'utilizzo di un
sistema che imita un altro sistema.
Con la virtualizzazione, viene creata e utilizzata
un'istanza virtuale di un particolare hardware.
Quindi, in realtà, si utilizza una nuova macchina fisica
rappresentata da un software.
Con un emulatore, invece, un software traduce
l'ambiente in tempo reale per fingere che si
tratti di qualcos'altro.
Ad esempio, se volessi giocare a un
vecchio gioco del Super Nintendo sul mio MacBook
Pro, potrei scaricare un emulatore del Super Nintendo come OpenEmu,
che tradurrà il codice del gioco in tempo
reale in istruzioni comprensibili al mio Mac.
Con la virtualizzazione, il software in esecuzione
può accedere fisicamente all'hardware della macchina, il
che lo rende molto, molto più veloce rispetto all'uso di un emulatore.
Quando conviene usare un emulatore invece
della virtualizzazione?
Se avete bisogno di eseguire un sistema operativo
destinato a un altro tipo di hardware, come
ad esempio un Super Nintendo su un computer Mac o Windows, allora
dovrete usare un emulatore.
Se si desidera eseguire un software
destinato a un sistema operativo diverso, come un Android
progettato per funzionare su un processore ARM,
ma si dispone di un processore Intel e di un sistema
operativo Windows, anche in questo
caso gli emulatori saranno la scelta giusta perché si ha a che fare con
un hardware sottostante diverso.
D'altra parte, se avete bisogno di alta velocità
e migliori prestazioni, è meglio
utilizzare una soluzione di virtualizzazione.
Ricordate però che con la virtualizzazione
si limita l'esecuzione di software codificato
per il particolare hardware sottostante del processore.
Normalmente, la maggior parte di noi utilizza processori basati su x86 o x64, per cui si esegue
Windows, Linux o Mac, o uno qualsiasi di questi tre sistemi
operativi su questo tipo di sistemi con la virtualizzazione
funzionerà benissimo.
Ma se si cerca di eseguire un sistema operativo
progettato per un processore ARM,
non funzionerà con la virtualizzazione e si
dovrà usare un emulatore.
In generale, la maggior parte delle volte si usa la
virtualizzazione invece di un emulatore,
perché è più veloce ed efficiente
e la maggior parte delle cose sono
scritte per funzionare su un processore x86 o x64.
Ma ancora una volta, se avete bisogno
di eseguire qualcosa per un processore
diverso, dovrete usare un emulatore.