Instruktor: Aby chmura obliczeniowa
mogła przynieść zamierzone oszczędności i wydajność,
opiera się w dużej mierze na wirtualizacji.
Teraz dzięki wirtualizacji na jednym
serwerze fizycznym można umieścić wiele
serwerów logicznych.
To z kolei zmniejsza fizyczną ilość miejsca, energii i chłodzenia,
które są wymagane w naszych centrach danych.
Dodatkowo, korzystając z wirtualizacji, możemy
osiągnąć wyższy poziom dostępności, uruchamiając dodatkowe
serwery wirtualne, gdy tylko ich potrzebujemy.
Możliwość dynamicznego udostępniania zasobów
pamięci i procesora jest jedną z kluczowych
zalet chmury obliczeniowej.
Choć chmura obliczeniowa niesie ze sobą wiele różnych
korzyści, nadal istnieje wiele kwestii związanych z bezpieczeństwem,
które należy wziąć pod uwagę.
Większość tych samych kwestii bezpieczeństwa,
z którymi mamy do czynienia w przypadku serwerów
fizycznych, jest również przenoszona do środowiska chmury.
Dyrektorzy często myślą, że przejście do chmury rozwiąże
wszystkie ich problemy, ale
tak naprawdę nigdy tak nie jest.
Podczas korzystania z wirtualizacji jeden lub więcej serwerów logicznych
znajduje się na jednym serwerze fizycznym.
Aby to osiągnąć, używamy specjalistycznego oprogramowania
znanego jako hypervisor.
Hiperwizor kontroluje dystrybucję
wszystkich zasobów, takich jak procesor, pamięć
i dostępność dysku twardego.
Zasadniczo hiperwizor emuluje maszynę fizyczną, dzięki czemu
system operacyjny i wszystkie
jego aplikacje nawet nie zdają sobie sprawy,
że działają w środowisku wirtualnym.
Obecnie hiperwizory dzielą się na dwie kategorie: hiperwizory
typu pierwszego (bare metal hypervisor) oraz hiperwizory
typu drugiego (hosted hypervisor).
Porównując goły metal z hostowanymi
typami hiperwizorów, jedyną główną różnicą
z punktu widzenia bezpieczeństwa jest to, że w przypadku
typów hostowanych musimy upewnić się, że bazowy
system operacyjny jest również
odpowiednio zabezpieczony i załatany.
Z punktu widzenia wydajności,
bare metal będzie szybszy i bardziej wydajny
niż jego hostowany odpowiednik.
Inną dostępną opcją wirtualizacji jest
wirtualizacja oparta na kontenerach lub konteneryzacja.
W tym typie hiperwizor nie jest w ogóle wykorzystywany, zamiast
tego każdy kontener opiera się na wspólnym systemie operacyjnym jako
podstawie dla każdego z tych kontenerów, podczas
gdy każdy kontener ma ten sam
podstawowy system operacyjny, każdy
kontener może mieć własne binaria, biblioteki
i aplikacje, które można dostosować
do własnych potrzeb.
Obecnie wirtualizacja oparta na kontenerach
jest prawie wyłącznie używana z Linuksem
jako bazowym systemem operacyjnym.
Wirtualizacja oparta na kontenerach zużywa również mniej zasobów
niż wirtualizacja typu pierwszego lub drugiego,
ponieważ nie wymaga własnej kopii
systemu operacyjnego dla każdego kontenera.
Wielu dostawców usług w chmurze poszło o krok dalej w wirtualizacji
dzięki infrastrukturze hiperkonwergentnej.
Pozwala to dostawcy na pełną integrację
pamięci masowej, sieci i serwerów, bez konieczności
dokonywania zmian sprzętowych.
Zamiast tego polegają na oprogramowaniu
i technologii wirtualizacji, aby
wykonać wszystkie integracje.
Możemy zarządzać tym wszystkim za pomocą jednego interfejsu
lub urządzenia, bez konieczności martwienia
się o wszystkie podstawowe rozwiązania dostawców.
Wirtualizacja aplikacji to kolejny rodzaj wirtualizacji,
który jest powszechnie używany do tworzenia
dodatkowych zabezpieczeń dla naszego hosta bazowego.
Wirtualizacja aplikacji to technologia oprogramowania,
która hermetyzuje programy komputerowe
z bazowego systemu operacyjnego,
na którym są wykonywane.
W pełni zwirtualizowana aplikacja
nie jest nawet instalowana w tradycyjnym sensie,
chociaż nadal jest wykonywana tak, jakby była.
Dzięki wirtualizacji aplikacji można uruchamiać
starsze aplikacje, które zostały zaprojektowane dla
wycofanego z użytku systemu operacyjnego, takiego jak Windows
XP lub Windows 7, na bardziej nowoczesnym systemie operacyjnym, a nawet uruchamiać
oprogramowanie wieloplatformowe, takie jak aplikacje Android
na komputerze z systemem Windows.
Wielu dostawców usług w chmurze oferuje również VDI,
czyli wirtualną infrastrukturę desktopową.
Obecnie VDI umożliwia dostawcy usług w chmurze oferowanie pełnego
systemu operacyjnego dla użytkowników końcowych ze scentralizowanego
serwera.
Takie podejście zapewnia wiele korzyści w zakresie bezpieczeństwa.
Przykładem może być organizacja, z którą współpracowałem
i która tworzyła nowy obraz wirtualnego pulpitu dla każdego użytkownika,
gdy ten logował się rano.
Ten pulpit nie był trwały, więc nawet jeśli
został wykorzystany przez atakującego, został zniszczony,
gdy tylko użytkownik się wylogował lub o północy
każdego dnia, co skutecznie uniemożliwiło
atakującemu pozostanie na pulpicie użytkownika
końcowego, nawet jeśli zainstalowano złośliwe oprogramowanie.
Innym świetnym zastosowaniem wirtualizacji jest stworzenie piaskownicy.
Piaskownica umożliwia stworzenie
odizolowanego środowiska, w którym można analizować
wirusy, robaki, trojany i inne złośliwe oprogramowanie
w systemie operacyjnym gościa.
Teraz, ponieważ znajduje się w tej wirtualnej
piaskownicy, która znajduje się wewnątrz izolowanej maszyny
wirtualnej, możesz upewnić się, że nie możesz zainfekować
własnego komputera, na którym jest hostowany jako bazowy system operacyjny
hosta lub bazowy hiperwizor.
Kiedy pracujesz jako analityk cyberbezpieczeństwa,
często korzystasz z piaskownic do analizy złośliwego oprogramowania, zwłaszcza
gdy przeprowadzasz dynamiczną analizę złośliwego oprogramowania,
w której bierzesz fragment złośliwego oprogramowania,
uruchamiasz go, a następnie identyfikujesz, co się dzieje, gdy złośliwe oprogramowanie
działa w tym konkretnym systemie operacyjnym gościa.
Innym dobrym zastosowaniem maszyn wirtualnych
jest wirtualizacja międzyplatformowa.
Na przykład, używam MacBooka Pro jako mojego głównego komputera.
Jeśli więc chciałbym przetestować jakieś aplikacje
dla różnych systemów operacyjnych,
mógłbym albo pójść i wziąć nowe maszyny dla
każdego z tych systemów operacyjnych,
na przykład jeden laptop dla Windows,
jeden laptop dla Linuksa, jeden laptop dla Maca.
Jeśli jednak korzystam z wirtualizacji,
mogę zamiast tego przeprowadzić wirtualizację międzyplatformową,
korzystając z hostowanego systemu na moim MacBooku Pro z oprogramowaniem takim jak VMware, Parallels
lub VirtualBox, aby móc zainstalować te systemy operacyjne gościa na moim istniejącym
środowisku Mac OS.
Pozwoli mi to przetestować wszystkie elementy
oprogramowania, niezależnie od tego, jakiego systemu
operacyjnego potrzebują, i zobaczyć,
jak będą ze sobą współdziałać.
Jest to świetne rozwiązanie zwłaszcza dla twórców
stron internetowych, ponieważ jako twórca
stron internetowych chcę mieć pewność, że gdy tworzę swoją stronę
internetową, działa ona na Windows 10, Windows 11, Mac, Chromebooku, iPhonie, urządzeniu
z Androidem lub czymkolwiek innym, a możliwość
przetestowania tego wszystkiego
na jednej maszynie za pomocą wirtualizacji jest świetnym
źródłem informacji dla nas jako programistów.
Kolejnym świetnym zastosowaniem wirtualizacji są szkolenia.
Możesz tworzyć środowiska laboratoryjne, które
są skonfigurowane tak, aby ludzie mogli
ćwiczyć na żywym systemie operacyjnym przy użyciu tych maszyn wirtualnych.
Na przykład, podczas nauki do różnych certyfikatów
CompTIA, jeśli kupisz kurs diontraining.
com,
mają wbudowane praktyczne laboratoria.
Laboratoria te umożliwiają zalogowanie się do naszego
środowiska opartego na chmurze, a następnie wykonywanie
działań na systemach Linux, Windows 10, Windows Server
i innych w bezpieczny sposób, a to nie wpłynie na nasze środowisko
produkcyjne, ponieważ wszystko jest odizolowane
w tym obszarze szkoleniowym lub tej piaskownicy szkoleniowej.
Kolejną wspaniałą rzeczą w korzystaniu z maszyn wirtualnych
w środowisku szkoleniowym lub laboratoryjnym
jest możliwość wykonywania migawek w różnych punktach, a następnie
wznawiania pracy w miejscu, w którym znajdowała się migawka.
Na przykład, kiedy prowadziłem moje kursy osobiście,
tworzyłem uszkodzone maszyny z systemem Windows 7
i rozwiązywałem różne
problemy dla moich studentów A+.
Dałbym im maszynę wirtualną, włączyłbym ją, przywróciłbym
z ostatniego bezpiecznego punktu, w którym ją zepsułem,
a następnie poprosiłbym ich, aby
spróbowali dowiedzieć się, co jest
z nią nie tak i jak mogą to naprawić.
Jest to świetny sposób na wykorzystanie maszyn wirtualnych
podczas szkolenia.
W miarę kontynuowania nauki i zdobywania wiedzy
na temat systemów Linux i Windows, środowisk serwerowych,
systemów Mac OS i innych podobnych rzeczy, można uruchamiać
różne maszyny wirtualne zawierające
te systemy operacyjne gościa i ćwiczyć swoje
umiejętności w bezpiecznym środowisku.
Ostatnią rzeczą, którą
musimy omówić, jest koncepcja emulacji,
ponieważ wiele osób myli emulację z wirtualizacją.
Teraz emulacja polega na użyciu systemu,
który imituje inny system.
Dzięki wirtualizacji tworzona i używana
jest wirtualna instancja określonego sprzętu.
W rzeczywistości więc używasz nowej fizycznej maszyny, która jest
reprezentowana przez oprogramowanie.
Jednak w przypadku emulatora oprogramowanie
tłumaczy środowisko w czasie rzeczywistym,
udając, że jest czymś innym.
Na przykład, jeśli chciałbym zagrać
w starą grę Super Nintendo na moim MacBooku
Pro, mógłbym pobrać emulator Super Nintendo, taki jak OpenEmu, a następnie
przetłumaczyć kod gry w czasie rzeczywistym
na instrukcje zrozumiałe dla mojego Maca.
Dzięki wirtualizacji uruchamiane oprogramowanie
ma fizyczny dostęp do sprzętu komputera, dzięki czemu
jest znacznie, znacznie szybsze niż przy użyciu emulatora.
Kiedy więc warto skorzystać z emulatora
zamiast wirtualizacji?
Cóż, jeśli chcesz uruchomić system operacyjny
przeznaczony dla innego typu sprzętu, takiego
jak Super Nintendo na komputerze Mac lub Windows, będziesz musiał
użyć emulatora.
Jeśli chcesz uruchomić oprogramowanie
przeznaczone dla innego systemu operacyjnego, na
przykład Androida zaprojektowanego do działania
na procesorze ARM, ale masz procesor Intel
i system operacyjny Windows, to ponownie
emulatory będą właściwym wyborem, ponieważ masz do czynienia z
innym sprzętem bazowym.
Z drugiej strony, jeśli potrzebujesz dużej
szybkości i lepszej wydajności,
chcesz użyć rozwiązania do wirtualizacji.
Pamiętaj jednak, że w przypadku wirtualizacji
jesteś ograniczony do uruchamiania oprogramowania,
które jest zakodowane dla konkretnego sprzętu bazowego procesora.
Zwykle większość z nas korzysta z procesorów opartych na architekturze x86 lub x64, więc uruchomienie
systemu Windows, Linux lub Mac lub dowolnego z tych trzech
systemów operacyjnych na tego typu systemach
z wirtualizacją będzie działać dobrze.
Ale jeśli próbujesz uruchomić system operacyjny
zaprojektowany dla procesora ARM,
nie będzie on działał z wirtualizacją, będziesz
musiał użyć emulatora.
Ogólnie rzecz biorąc, przez większość czasu będziesz
używać wirtualizacji zamiast emulatora,
ponieważ jest to szybsze i bardziej
wydajne, a większość rzeczy jest
napisana do pracy na procesorze x86 lub x64.
Ale znowu, jeśli chcesz uruchomić
coś dla innego procesora,
wtedy będziesz musiał użyć emulatora.