Files
Thesis/Chapters/2.Background.tex

756 lines
58 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
\chapter{Υπόβαθρο} \label{background}
Προκειμένου να κατανοήσουμε πλήρως το πρόβλημα που επιλύει η παρούσα εργασία
πρέπει να αναλύσουμε μερικές βασικές έννοιες. Σε πρώτη φάση θα δούμε παρακάτω
τι είναι το υπολογιστικό νέφος, τι μας προσφέρει και ποια μοντέλα παράδοσης
παρέχονται μέσω αυτού. Έπειτα θα μιλήσουμε για την έννοια της εικονικοποίησης
και τις διάφορες υποκατηγορίες της που χρησιμοποιούνται στις μέρες μας. Αμέσως
μετά, θα αναλυθούν τα πλεονεκτήματα της και θα μπορέσουμε να εντοπίσουμε τον
λόγο που προτιμάται η αρχιτεκτονική δοχείων. Τέλος, θα εμβαθύνουμε στην
τεχνολογία δοχείων, θα δούμε διάφορες υλοποιήσεις της και θα πραγματοποιήσουμε
μια ανάλυση της ασφάλειας του \textlatin{Docker}.
\section{\textlatin{Cloud Computing Definition}} \label{cloudComputingDefinition}
Σύμφωνα με το \cite{mell2011nist} το \textlatin{Cloud Computing} είναι ένα
μοντέλο που επιτρέπει την ανά πάσα στιγμή διαδικτυακή πρόσβαση σε μια κοινή
δεξαμενή ρυθμιζόμενων υπολογιστικών πόρων που μπορούν να παρέχονται και να
απελευθερώνονται γρήγορα και με ελάχιστη προσπάθεια διαχείρισης ή
αλληλεπίδρασης με τον πάροχο υπηρεσιών. Στους υπολογιστικούς αυτούς πόρους
περιλαμβάνονται δίκτυα, διακομιστές, χώρος αποθήκευσης, εφαρμογές και
υπηρεσίες. Αυτό το μοντέλο νέφους αποτελείται από πέντε βασικά χαρακτηριστικά,
τρία μοντέλα υπηρεσιών και τέσσερα μοντέλα παράδοσης.
\pagebreak
\subsection{Χαρακτηριστικά} \label{cloucComputingCharacteristics}
Τα πέντε βασικά χαρακτηριστικά του \textlatin{Cloud Computing} είναι τα εξής:
\begin{itemize}
\item \textbf{Αυτοεξυπηρέτηση κατά παραγγελία}:
Ένας καταναλωτής μπορεί να προμηθευτεί υπολογιστικούς πόρους όπως
αποθηκευτικό χώρο δικτύου και χρόνο χρήσης ισχυρών επεξεργαστών δίχως
την απαίτηση ανθρώπινης αλληλεπίδρασης με κάθε πάροχο υπηρεσιών.
\item \textbf{Ευρεία διαδικτυακή πρόσβαση}:
Οι υπηρεσίες που παρέχονται είναι διαθέσιμες μέσω του διαδικτύου και
είναι προσβάσιμες από οποιαδήποτε συσκευή διαθέτει πρόσβαση σε αυτό
είτε μέσω γραφικού περιβάλλοντος είτε μέσω ειδικά σχεδιασμένων
\textlatin{API}.
\item \textbf{Οργανωμένη συγκέντρωση πόρων}:
Οι υπολογιστικοί πόροι του παρόχου είναι σχεδιασμένοι με τέτοιο τρόπο
ώστε να μπορούν να εξυπηρετήσουν πολλούς καταναλωτές χρησιμοποιώντας
ένα \textlatin{multi-tenant} μοντέλο με διαφορετικούς φυσικούς και
εικονικούς πόρους που εκχωρούνται και ανακατανέμονται ανάλογα με τη
ζήτηση των καταναλωτών. Το μοντέλο αυτό διακατέχεται από μια αίσθηση
ανεξαρτησίας θέσης διότι είθισται να μην υπάρχει έλεγχος ή ακριβής
γνώση της τοποθεσίας τους αλλά δίδεται πολλές φορές η δυνατότητα
καθορισμού της χώρας ή περιοχής τους εάν το επιθυμεί ο χρήστης.
Παραδείγματα πόρων που παρέχονται αποτελούν μεταξύ άλλων το εύρος ζώνης
δικτύου, η διαθέσιμη μνήμη και ο αριθμός επεξεργαστών.
\item \textbf{Ταχεία ευελιξία}:
Οι δυνατότητες μπορούν να παρέχονται και να απελευθερώνονται ελαστικά
και σε ορισμένες περιπτώσεις αυτόματα, με σκοπό την οριζόντια ή κάθετη
κλιμάκωση υπηρεσιών αναλόγως την παρούσα ζήτηση. Από την οπτική γωνία
του καταναλωτή, οι παρεχόμενες δυνατότητες μοιάζουν απεριόριστες και
μπορούν να κατανεμηθούν ανά πάσα στιγμή σε οποιαδήποτε ποσότητα.
\item \textbf{Μετρούμενη υπηρεσία}:
Τα συστήματα νέφους ελέγχουν και βελτιστοποιούν αυτόματα τη χρήση των
πόρων αξιοποιώντας δυνατότητες μέτρησης κατάλληλες για τον τύπο της
υπηρεσίας (π.χ, αποθήκευση, επεξεργασία, εύρος ζώνης και λογαριασμοί
ενεργών χρηστών). Η χρήση των πόρων μπορεί να παρακολουθείται, να
ελέγχεται και να αναγράφεται, παρέχοντας διαφάνεια τόσο στον πάροχο όσο
και στον καταναλωτή της υπηρεσίας που χρησιμοποιείται.
\end{itemize}
\pagebreak
\subsection{Μοντέλα Υπηρεσιών} \label{cloudComputingServiceModels}
Τα τρία μοντέλα υπηρεσιών του \textlatin{Cloud Computing} είναι τα παρακάτω:
\begin{itemize}
\item \textbf{\textlatin{Software as a Service (SaaS)}}:
Η δυνατότητα που παρέχεται στον καταναλωτή είναι η χρήση εφαρμογών
εκτελούμενες σε μια υποδομή νέφους. Οι εφαρμογές αυτές είναι
προσβάσιμες από διάφορες συσκευές ικανές να συνδεθούν στο διαδίκτυο
ή μέσω διεπαφής προγράμματος. Δεν προσφέρεται έλεγχος ή δυνατότητα
διαχείρισης της υποκείμενης υποδομής νέφους ή των δυνατοτήτων της
υπηρεσίας, με εξαίρεση περιορισμένη χρήση συγκεκριμένων
ρυθμίσεων διαμόρφωσης της εφαρμογής.
\item \textbf{\textlatin{Platform as a Service (PaaS)}}:
Η παρεχόμενη δυνατότητα είναι η χρήση ή η ανάπτυξη εφαρμογών σε μια
υποδομή νέφους. Οι εφαρμογές αυτές μπορεί να δημιουργήθηκαν ή να
αποκτήθηκαν από τον καταναλωτή και έχουν κατασκευαστεί χρησιμοποιώντας
γλώσσες προγραμματισμού, βιβλιοθήκες, υπηρεσίες και εργαλεία που
υποστηρίζονται από τον πάροχο. Ο καταναλωτής δεν έχει τον έλεγχο της
υποκείμενης υποδομής νέφους, αλλά έχει τον έλεγχο των εφαρμογών που
εκτελούνται σε αυτήν, καθώς και των ρυθμίσεων διαμόρφωσης τους και του
περιβάλλοντος εκτέλεσης τους.
\item \textbf{\textlatin{Infrastructure as a Service (IaaS)}}:
Η παρεχόμενη δυνατότητα είναι η χρήση επεξεργαστικών, αποθηκευτικών,
δικτυακών και άλλων υπολογιστικών πόρων όπου ο καταναλωτής μπορεί να
εκτελέσει και να εγκαταστήσει λογισμικό της επιλογής του,
συμπεριλαμβανομένων λειτουργικών συστημάτων και εφαρμογών. Ο
καταναλωτής δεν έχει τον έλεγχο της υποκείμενης υποδομής νέφους, αλλά
έχει τον έλεγχο των λειτουργικών συστημάτων, του αποθηκευτικού χώρου,
των εγκατεστημένων εφαρμογών και των ρυθμίσεων διαμόρφωσης τους.
\end{itemize}
\pagebreak
\subsection{Μοντέλα Παράδοσης} \label{cloudComputingDeploymentModels}
Τα τέσσερα μοντέλα παράδοσης του υπολογιστικού νέφους είναι:
\begin{itemize}
\item \textbf{Ιδιωτικό νέφος}:
Το νέφος υποδομής είναι αποκλειστικά αφιερωμένο σε έναν μόνο οργανισμό
αποτελούμενο από πολλαπλούς καταναλωτές (π.χ. επιχειρησιακές μονάδες).
Ενδεχομένως να ανήκει, να διαχειρίζεται και να λειτουργεί από τον
οργανισμό, από μια τρίτη οντότητα, ή έναν συνδυασμό των δύο και μπορεί
να βρίσκεται εντός ή εκτός του οργανισμού.
\item \textbf{Κοινό νέφος}:
Είναι διαθέσιμο για μια ευρύτερη κοινότητα καταναλωτών ή οργανισμών με
κοινές ανησυχίες όπως οι απαιτήσεις ασφαλείας και ζητήματα πολιτικής
και συμμόρφωσης. Μπορεί να ανήκει, να διαχειρίζεται και να λειτουργεί
από έναν ή περισσότερους οργανισμούς της κοινότητας, μια τρίτη οντότητα
ή έναν συνδυασμό των δύο και να βρίσκεται εντός ή εκτός του οργανισμού.
\item \textbf{Δημόσιο νέφος}:
Εδώ, το νέφος υποδομής είναι διαθέσιμο για το γενικό κοινό. Μπορεί να
ανήκει και να διαχειρίζεται από μια επιχείρηση, έναν ακαδημαϊκό ή
κυβερνητικό οργανισμό ή έναν συνδυασμό των παραπάνω. Λειτουργεί εντός
των υποδομών του παρόχου νέφους.
\item \textbf{Υβριδικό νέφος}:
Είναι συνδυασμός δύο ή περισσότερων νεφών (ιδιωτικού, κοινού ή
δημοσίου) που διατηρούνται ως ξεχωριστές οντότητες αλλά συνδέονται
μεταξύ τους με τεχνολογίες που επιτρέπουν τη μεταφορά δεδομένων και
εφαρμογών.
\end{itemize}
\pagebreak
\section{\textlatin{Virtualization Definition}} \label{virtualizationDefinition}
Σύμφωνα με τον ορισμό της \textlatin{Red Hat}
\cite{redhatVirtualizationDefinition}, η εικονικοποίηση είναι μια τεχνολογία
που μας επιτρέπει να δημιουργήσουμε πολλαπλά εικονικά περιβάλλοντα ή
αποκλειστικούς πόρους από ένα μόνο, φυσικό σύστημα υλικού. Ένα λογισμικό
ονόματι \textlatin{hypervisor} συνδέεται απευθείας στο υλικό αυτό και δίνει τη
δυνατότητα διαμερισμού ενός συστήματος σε ξεχωριστά, διακριτά και ασφαλή
περιβάλλοντα, γνωστά και ως εικονικές μηχανές (\textlatin{VM}). Αυτές οι
εικονικές μηχανές βασίζονται στην ικανότητα του \textlatin{hypervisor} να
διαχωρίζει τους πόρους της μηχανής από το υλικό και να τους κατανέμει
κατάλληλα.
Το φυσικό υλικό, εξοπλισμένο με έναν \textlatin{hypervisor}, ονομάζεται
\textlatin{host}, ενώ τα πολλά \textlatin{VM} που χρησιμοποιούν τους πόρους του
είναι οι \textlatin{guests}. Αυτοί, αντιμετωπίζουν τους υπολογιστικούς πόρους
όπως είναι η κεντρική μονάδα επεξεργασίας, η μνήμη και ο αποθηκευτικός χώρος,
ως μια δεξαμενή πόρων που μπορεί εύκολα να ανακατανεμηθεί. Οι χειριστές μπορούν
να ελέγχουν εικονικά στιγμιότυπα της μνήμης, της κεντρικής μονάδας επεξεργασίας
και άλλων πόρων, ούτως ώστε οι \textlatin{guest} να λαμβάνουν τους πόρους που
χρειάζονται όταν είναι απαραίτητο.
Η εικονικοποίηση καθιστά δυνατή τη δημιουργία χρήσιμων υπηρεσιών ΤΠ
χρησιμοποιώντας πόρους στους οποίους παραδοσιακά μπορούσαμε να έχουμε πρόσβαση
μονάχα με την ιδιοκτησία φυσικών μηχανημάτων. Μας επιτρέπει να αξιοποιήσουμε
όλες τις δυνατότητες ενός φυσικού μηχανήματος διανέμοντας τις σε πολλούς
χρήστες και περιβάλλοντα.
\pagebreak
Ας φανταστούμε πως έχουμε τρεις διακομιστές, στον καθένα από τους οποίους έχει
ανατεθεί ένας συγκεκριμένος σκοπός. Ένας διακομιστής ηλεκτρονικού ταχυδρομείου,
ένας διακομιστής ιστού και ένας που εκτελεί εσωτερικές εταιρικές εφαρμογές οι
οποίες σταμάτησαν να διατηρούνται αλλά είναι ακόμα λειτουργικές. Στο
συγκεκριμένο παράδειγμα κάθε ένας από τους διακομιστές χρησιμοποιεί το μονάχα
το 30\% των δυνατοτήτων του.
\begin{center}
\includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_virtualization_server_usage1.png}
\captionof{figure}{Χρήση διακομιστών χωρίς εικονικοποίηση}
\label{fig:virtualizationServerUsage1}
\end{center}
Παραδοσιακά, αυτή η αρχιτεκτονική όπου εκτελούνται μεμονωμένες εργασίες σε
μεμονωμένους διακομιστές ήταν ευκολότερη και πιο αξιόπιστη αλλά δεν παύει να
μην είναι η πιο αποδοτική λύση. Με την άφιξη της τεχνολογίας της εικονικοποίησης
όμως ήταν πλέον εφικτό να χωριστεί ένας διακομιστής σε περισσότερα κομμάτια
έχοντας πλέον δύο εικονικά μηχανήματα με τη χρήση ενός.
\begin{center}
\includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_virtualization_server_usage2.png}
\captionof{figure}{Χρήση διακομιστών με εικονικοποίηση}
\label{fig:virtualizationServerUsage2}
\end{center}
Ο χωρισμός των διακομιστών σε μικρότερους μπορεί να πραγματοποιηθεί
περισσότερες από μια φορές αυξάνοντας την αξιοποίηση των δυνατοτήτων τους
παραδείγματος χάριν από 30\% σε 60\% και έπειτα σε 90\% αφήνοντας μας με
διακομιστές που είτε μπορούν μετά να χρησιμοποιηθούν για νέους σκοπούς είτε να
αποσυρθούν μειώνοντας έτσι και το κόστος λειτουργίας και συντήρησης τους.
\pagebreak
\section{Ιστορική αναδρομή της εικονικοποίησης} \label{virtualizationHistory}
Ενώ η τεχνολογία εικονικοποίησης χρονολογείται από τη δεκαετία του 1960, δεν
υιοθετήθηκε ευρέως μέχρι τις αρχές της δεκαετίας του 2000. Οι τεχνολογίες που
την έκαναν πραγματικότητα όπως οι \textlatin{hypervisors} αναπτύχθηκαν πριν από
δεκαετίες για να δώσουν σε πολλούς χρήστες ταυτόχρονη πρόσβαση σε υπολογιστές
που επεξεργαζόντουσαν πολλά δεδομένα ταυτόχρονα. Κάτι ιδιαίτερα δημοφιλές στον
τομέα των επιχειρήσεων για καθήκοντα ρουτίνας που έπρεπε να εκτελεστούν
χιλιάδες φορές πολύ γρήγορα όπως η μισθοδοσία υπαλλήλων.
Ωστόσο, μέσα στις επόμενες δεκαετίες, ήρθαν στο προσκήνιο άλλες λύσεις στο
πρόβλημα διαμοιρασμού ενός μηχανήματος σε πολλούς χρήστες, μειώνοντας έτσι το
ενδιαφέρον για την τεχνολογία εικονικοποίησης. Μία από αυτές ήταν ο διαμοιρασμός
χρόνου (\textlatin{time-sharing}) όπου ένας χρήστης μπορούσε να χρησιμοποιεί το
λειτουργικό σύστημα απομονωμένα από του υπόλοιπους. Κάτι που οδήγησε στη
δημιουργία λειτουργικών συστημάτων όπως το \textlatin{UNIX} το οποίο με τη
σειρά του άνοιξε δρόμο για την άφιξη του \textlatin{Linux}. Καθ'' όλη τη
διάρκεια αυτή, η εικονικοποίηση παρέμεινε σε μεγάλο βαθμό μη διαδεδομένη.
Προχωρώντας στη δεκαετία του 1990, οι περισσότερες επιχειρήσεις διέθεταν
φυσικούς διακομιστές και στοίβες μηχανημάτων ενός προμηθευτή, οι οποίες δεν
επέτρεπαν την εκτέλεση παλαιών εφαρμογών σε υλικό διαφορετικού προμηθευτή.
Καθώς οι εταιρείες αναβάθμιζαν τα περιβάλλοντα πληροφορικής τους με λιγότερο
δαπανηρούς διακομιστές, λειτουργικά συστήματα και εφαρμογές από διάφορους
προμηθευτές, ήταν υποχρεωμένες να υπολειτουργούν το φυσικό υλικό αφού κάθε
διακομιστής μπορούσε να εκτελέσει μόνο 1 εργασία που αφορούσε συγκεκριμένο
προμηθευτή.
Από εκείνο το σημείο και έπειτα άρχισε να γίνεται εμφανής η ανάγκη της
εικονικοποίησης και να ανεβαίνει η δημοτικότητα της. Οι εταιρείες μπορούσαν
πλέον να διαμερίσουν τους διακομιστές τους και να εκτελούν παλαιές εφαρμογές σε
πολλούς τύπους και εκδόσεις λειτουργικών συστημάτων. Οι διακομιστές άρχισαν να
χρησιμοποιούνται πιο αποδοτικά ή και καθόλου μειώνοντας το απαιτούμενο κόστος
αγοράς, εγκατάστασης, συντήρησης και ψύξης τους.
Η ευρεία εφαρμογή της εικονικοποίησης συνέβαλε στη μείωση του εγκλωβισμού σε
έναν μόνο προμηθευτή και την κατέστησε το θεμέλιο του υπολογιστικού νέφους.
Σήμερα είναι τόσο διαδεδομένη σε όλες τις επιχειρήσεις που συχνά απαιτείται
εξειδικευμένο λογισμικό διαχείρισης των εικονικών πόρων για να μπορέσει κανείς
να παρακολουθεί τα δρώμενα της επιχείρησής.
\section{Τι είναι ένας \textlatin{hypervisor}} \label{hypervisors}
Προτού έρθουν στο προσκήνιο, οι περισσότεροι φυσικοί υπολογιστές μπορούσαν να
εκτελέσουν ένα λειτουργικό σύστημα τη φορά. Αυτό συνέβαλε στη σταθερότητα τους
μιας και δε χρειαζόταν να διαχειριστούν αιτήματα από άλλα λειτουργικά συστήματα
αλλά αυτή η προσέγγιση είχε ένα μειονέκτημα. Μεγάλο κομμάτι των πόρων του
συστήματος έμενε ανεκμετάλλευτο.
Τη λύση σε αυτό το πρόβλημα την έφερε η εισαγωγή των \textlatin{hypervisors}.
Πρόκειται για μια στρώση λογισμικού που καθιστά δυνατή την εκτέλεση πολλαπλών
λειτουργικών συστημάτων το ένα δίπλα στο άλλο μοιράζοντας τους ίδιους φυσικούς
πόρους σε κάθε ένα από αυτά. Η πράξη αυτή ονομάζεται εικονικοποίηση και τα
στιγμιότυπα των λειτουργικών συστημάτων λέγονται εικονικές μηχανές οι οποίες
αντιπροσωπεύουν προσομοιώσεις φυσικών υπολογιστών.
Οι \textlatin{hypervisors} είναι υπεύθυνοι για τη διαχείριση των εικονικών
μηχανών χωρίζοντας τις και αναθέτοντας σε κάθε μια ένα κομμάτι της διαθέσιμης
υπολογιστικής ισχύος, μνήμης και χώρου αποθήκευσης. Αυτή η διαδικασία τις
αποτρέπει από την αλληλεπίδραση μεταξύ τους και στην περίπτωση κατάρρευσης μιας
εικονικής μηχανής, οι υπόλοιπες παραμένουν ανεπηρέαστες.
\pagebreak
\section{Είδη \textlatin{hypervisor}} \label{hypervisorTypes}
Οι \textlatin{hypervisors} χωρίζονται σε δύο κατηγορίες ανάλογα με το
περιβάλλον στο οποίο εκτελούνται. Αυτές είναι:
\begin{itemize}
\item \textbf{\textlatin{Type 1 (Bare Metal)}}:
Ένας \textlatin{hypervisor} τύπου 1 εκτελείται απευθείας στο φυσικό
υλικό του υποκείμενου υπολογιστή, αλληλεπιδρώντας άμεσα με την κεντρική
μονάδα επεξεργασίας, τη μνήμη και τη φυσικό αποθηκευτικό χώρο. Για το
λόγο αυτό, οι \textlatin{hypervisors} τύπου 1 αναφέρονται επίσης ως
\textlatin{bare-metal hypervisors} και αντικαθιστούν το λειτουργικό
σύστημα του κεντρικού υπολογιστή. Η άμεση πρόσβαση στο φυσικό υλικό
τους καθιστά ιδιαίτερα αποδοτικούς. Συχνά απαιτείται μια ξεχωριστή
μηχανή διαχείρισης για τον έλεγχο των εικονικών μηχανών και του υλικού
του κεντρικού υπολογιστή.
\pagebreak
\item \textbf{\textlatin{Type 2 (Hosted)}}:
Ένας \textlatin{hypervisor} τύπου 2 δεν εκτελείται απευθείας στο
υποκείμενο υλικό. Αντ'' αυτού, εκτελείται ως εφαρμογή σε ένα υπάρχον
λειτουργικό σύστημα. Η χρήση τους δε συνηθίζεται σε περιβάλλοντα με
πολλούς διακομιστές. Αντίθετα, είναι καταλληλότεροι για μεμονωμένους
τελικούς χρήστες υπολογιστών που έχουν την ανάγκη να εκτελέσουν
πολλαπλά λειτουργικά συστήματα. Μερικοί από αυτούς είναι μηχανικοί,
επαγγελματίες ασφαλείας που αναλύουν κακόβουλο λογισμικό και υπάλληλοι
επιχειρήσεων που χρειάζονται πρόσβαση σε εφαρμογές που είναι διαθέσιμες
αποκλειστικά σε διαφορετικές πλατφόρμες λογισμικού από τη δική τους.
Διατίθενται συχνά πρόσθετες εργαλειοθήκες για τους χρήστες οι οποίες
μπορούν να εγκατασταθούν στο λειτουργικό σύστημα προκειμένου να
παρέχουν βελτιωμένες συνδέσεις μεταξύ του υποκείμενου λειτουργικού
συστήματος και εκείνου της εικονικής μηχανής. Οι πρόσθετες δυνατότητες
που υποστηρίζονται μετά την παραπάνω διαδικασία μπορεί να είναι η
αποκοπή και επικόλληση μεταξύ των δύο συστημάτων ή η κοινή πρόσβαση
στον αποθηκευτικό χώρο.
Επιτρέπει τη γρήγορη εναλλαγή σε διαφορετικά λειτουργικά συστήματα
πέραν του ήδη υπάρχοντος, πράγμα που αυξάνει την παραγωγικότητα του
τελικού χρήστη, αφού μπορεί να έχει πρόσβαση σε εργαλεία που δεν
υποστηρίζονται στο δικό του.
Εξαιτίας της αρχιτεκτονικής τους, οι \textlatin{hypervisors} τύπου 2
εισάγουν προβλήματα καθυστέρησης που μπορεί να επηρεάσουν την απόδοση
διότι η πρόσβαση στους πόρους υπολογισμού, μνήμης και δικτύου
πραγματοποιείται μέσω του κεντρικού λειτουργικού συστήματος.
Επιπροσθέτως, εισάγει πιθανούς κινδύνους ασφάλειας εάν ένας εισβολέας
παραβιάσει το κεντρικό λειτουργικό σύστημα, επειδή θα μπορούσε στη
συνέχεια να χειραγωγήσει οποιοδήποτε φιλοξενούμενο λειτουργικό σύστημα
που εκτελείται σε αυτόν.
\end{itemize}
\pagebreak
\section{Χαρακτηριστικά των \textlatin{hypervisor}} \label{hypervisorCharacteristics}
Αν και υπάρχουν διαφορετικά είδη \textlatin{hypervisor}, όλοι έχουν κάποια
χαρακτηριστικά που πρέπει να λάβει κανείς υπόψιν όταν επιλέγει ποιον θα
χρησιμοποιήσει. Μερικά σημαντικά αυτών είναι:
\begin{itemize}
\item \textbf{Απόδοση}:
Βασικό χαρακτηριστικό ενός \textlatin{hypervisor} είναι η απόδοση του.
Διαφέρει από τον ένα στον άλλο αναλόγως την κατασκευή και τον τύπο του.
Οι \textlatin{bare-metal hypervisors} θα πρέπει να παρέχουν απόδοση
κοντά στην εγγενή.
\item \textbf{Οικοσύστημα}:
Για τη διαχείριση \textlatin{hypervisor} σε διάφορες κλίμακες πρέπει να
υπάρχει καλή τεκμηρίωση και διάφορα εργαλεία είτε επίσημα είτε από την
κοινότητα που να επιτρέπουν δυνατότητες όπως δημιουργία αντιγράφων
ασφαλείας, ανάλυση χωρητικότητας και διαχείριση εναλλαγής εικονικών
μηχανών σε περιπτώσεις σφάλματος του λειτουργικού συστήματος.
\item \textbf{Εργαλεία διαχείρισης}:
Η εκτέλεση εικονικών μηχανών δεν αποτελεί το μοναδικό καθήκον ενός
διαχειριστή κατά τη χρήση ενός \textlatin{hypervisor}. Απαραίτητες
πρόσθετες ενέργειες είναι η συντήρηση και η ανάλυση τους, καθώς και ο
καθαρισμός όσων δε χρησιμοποιούνται πλέον. Επομένως, η ύπαρξη εργαλείων
που να καθιστούν δυνατές αυτές τις ενέργειες αποτελεί σημαντικό
παράγοντα κατά την επιλογή λογισμικού \textlatin{hypervisor}.
\item \textbf{Μεταφορά κατά τη λειτουργία}:
Πρέπει να υπάρχει η δυνατότητα μεταφοράς εικονικών μηχανών από έναν
\textlatin{hypervisor} σε έναν δεύτερο σε διαφορετική φυσική μηχανή
χωρίς την ανάγκη διακοπής της λειτουργίας τους. Ένα χαρακτηριστικό που
χρησιμεύει τόσο για την ανατροπή αποτυχίας όσο και για την εξισορρόπηση
του φόρτου εργασίας.
\item \textbf{Κόστος}:
Το κόστος είναι ένας παράγοντας που πρέπει να ληφθεί υπόψιν κατά την
επιλογή ενός \textlatin{hypervisor}. Οι περισσότεροι είναι δωρεάν αλλά
υπάρχουν και εμπορικές εκδόσεις που προσφέρουν περισσότερες
δυνατότητες. Όπως επίσης και ύπαρξη ή μη, λογισμικού διαχείρισης του
που να επιτρέπει την εύκολη κλιμάκωση με βάση τις απαιτήσεις της
επιχείρησης.
\end{itemize}
\section {Τρόπος λειτουργίας της εικονικοποίησης} \label{virtualizationOperation}
Για να πραγματοποιηθεί η εικονικοποίηση, χρειαζόμαστε έναν
\textlatin{hypervisor}. Δηλαδή ενός λογισμικό που διαχωρίζει τους φυσικούς
πόρους από τα εικονικά περιβάλλοντα, τα οποία τους χρειάζονται. Ένας
\textlatin{hypervisor} μπορεί να τοποθετηθεί πάνω σε ένα λειτουργικό σύστημα ή
να εγκατασταθεί απευθείας στο υλικό. Κάτι που κάνουν οι περισσότερες
επιχειρήσεις για λόγους αποδοτικότητας αφού θα βρίσκεται μια στρώση πιο κοντά
στο υλικό το οποίο θα διαχειρίζεται. Η δουλειά ενός \textlatin{hypervisor}
είναι ουσιαστικά να πάρουν τους φυσικούς μας πόρους και να τους χωρίσουν με
τέτοιο τρόπο ώστε να μπορούν να χρησιμοποιηθούν από τα εικονικά μας
περιβάλλοντα.
\begin{center}
\includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_virtualization_architecture.png}
\captionof{figure}{\textlatin{hypervisor} πάνω σε διακομιστές}
\label{fig:hypervisorOnServers}
\end{center}
Μετά τη δημιουργία μιας εικονικής μηχανής, οι χρήστες αλληλεπιδρούν με αυτήν
όπως θα αλληλεπιδρούσαν με μια φυσική. Οι εικονικές μηχανές έχουν τη μορφή ενός
ενιαίου αρχείου, πράγμα που καθιστά εύκολη τη μεταφορά και ανάγνωση τους από
οποιονδήποτε υπολογιστή αναμένοντας τον ίδιο τρόπο λειτουργίας. Κατά την
εκτέλεση του εικονικού περιβάλλοντος, όταν ένας χρήστης ή ένα πρόγραμμα εκδώσει
μία εντολή που απαιτεί περισσότερους πόρους από τους διαθέσιμους του, ο
\textlatin{hypervisor} αναμεταδίδει το αίτημα αυτό στο φυσικό σύστημα και
μπορεί να διαθέσει τους απαραίτητους για την εκτέλεση πόρους. Όλα αυτά
συμβαίνουν με σχεδόν εγγενή ταχύτητα, ιδίως αν αποστέλλεται μέσω ενός
\textlatin{hypervisor} ανοιχτού κώδικα βασισμένου στο \textlatin{KVM}, το
\textlatin{(Kernel-based Virtual Machine)}.
\pagebreak
\section{Τύποι εικονικοποίησης} \label{virtualizationTypes}
Υπάρχουν πολλοί τύποι εικονικοποίησης. Πέντε βασικοί αυτών είναι οι παρακάτω:
\begin{itemize}
\item \textbf{\textlatin{Data Virtualization}}:
\begin{center}
\includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_data_virtualization.png}
\captionof{figure}{\textlatin{Data Virtualization}}
\label{fig:dataVirtualization}
\end{center}
Διασκορπισμένα δεδομένα μπορούν να ενοποιηθούν σε μια ενιαία πηγή. Με
την εικονικοποίηση δεδομένων, οι εταιρείες μπορούν να οργανώσουν και να
επεξεργαστούν διασκορπισμένες πληροφορίες με γνώμονα τις ανάγκες των
χρηστών με μεγαλύτερη ευκολία και αποδοτικότητα. Τομείς οι οποίοι
επωφελούνται από την εικονικοποίηση δεδομένων είναι η λήψη αποφάσεων, η
επιχειρηματική αναλυτική και η αξιολόγηση των κινδύνων.
\pagebreak
\item \textbf{\textlatin{Desktop Virtualization}}:
\begin{center}
\includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_desktop_virtualization.png}
\captionof{figure}{\textlatin{Desktop Virtualization}}
\label{fig:desktopVirtualization}
\end{center}
Επιτρέπει σε έναν κεντρικό διαχειριστή να μοιράζει προσομοιωμένα
περιβάλλοντα εργασίας σε εκατοντάδες φυσικές μηχανές ταυτοχρόνως. Εν
αντιθέσει με τα παραδοσιακά περιβάλλοντα εργασίας που χρήζουν
εγκατάστασης, διαμόρφωσης και ενημέρωσης σε κάθε υπολογιστή, η
εικονικοποίηση επιφάνειας εργασίας καθιστά δυνατή τη μαζική διαμόρφωση,
ενημέρωση και έλεγχο ασφαλείας σε όλα τα εικονικά περιβάλλοντα
εργασίας.
\item \textbf{\textlatin{Server Virtualization}}:
\begin{center}
\includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_server_virtualization.png}
\captionof{figure}{\textlatin{Server Virtualization}}
\label{fig:serverVirtualization}
\end{center}
Οι διακομιστές είναι υπολογιστές σχεδιασμένοι με σκοπό να
επεξεργάζονται πολύ καλά έναν μεγάλο όγκο συγκεκριμένων εργασιών, ώστε
οι κύριοι υπολογιστές να μπορούν να δίνουν προτεραιότητα σε άλλες
εργασίες. Η εικονικοποίηση ενός διακομιστή του επιτρέπει να εκτελεί
περισσότερες λειτουργίες από αυτές που σχεδιάστηκε αρχικά να
πραγματοποιεί. Για την επίτευξη αυτού απαιτείται η κατάτμησή του με
τέτοιο τρόπο ώστε τα οι πόροι του να μπορούν να χρησιμοποιηθούν για την
εξυπηρέτηση πολλαπλών λειτουργιών.
\pagebreak
\item \textbf{\textlatin{Operating System Virtualization}}:
\begin{center}
\includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_os_virtualization.png}
\captionof{figure}{\textlatin{Operating System Virtualization}}
\label{fig:operatingSystemVirtualization}
\end{center}
Η εικονικοποίηση λειτουργικού συστήματος είναι κάτι που συμβαίνει στον
πυρήνα. Αποτελεί έναν χρήσιμο τρόπο εκτέλεσης \textlatin{Linux} και
\textlatin{Windows} συστημάτων στο ίδιο μηχάνημα. Πολλές επιχειρήσεις
προωθούν τα εικονικά λειτουργικά συστήματα σε υπολογιστές, προκειμένου
να μειωθεί το κόστος μηχανημάτων, να αυξηθεί η ασφάλεια και να μειωθεί
ο χρόνος συντήρησης τους.
\pagebreak
\item \textbf{\textlatin{Network Function Virtualization}}:
\begin{center}
\includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_network_function_virtualization.png}
\captionof{figure}{\textlatin{Network Function Virtualization}}
\label{fig:networkFunctionVirtualization}
\end{center}
Η εικονικοποίηση λειτουργιών δικτύου (\textlatin{NFV}) διαχωρίζει τις
βασικές λειτουργίες ενός δικτύου (όπως ο διαμοιρασμός αρχείων, και η
διαμόρφωση \textlatin{IP}), ώστε να μπορούν να διανεμηθούν σε διάφορα
περιβάλλοντα. Από τη στιγμή που οι λειτουργίες λογισμικού είναι
ανεξάρτητες από τα φυσικά μηχανήματα στα οποία εκτελούνται,
συγκεκριμένες λειτουργίες μπορούν να πακεταριστούν μαζί σε ένα νέο
δίκτυο και να ανατεθούν σε ένα ξεχωριστό περιβάλλον. Η εικονικοποίηση
των δικτύων μειώνει τον αριθμό των φυσικών εξαρτημάτων όπως οι
μεταγωγείς, δρομολογητές, διακομιστές, καλώδια και κόμβοι που
απαιτούνται για τη δημιουργία πολλαπλών, ανεξάρτητων δικτύων και είναι
ιδιαίτερα δημοφιλής στον κλάδο των τηλεπικοινωνιών.
\end{itemize}
\pagebreak
\section{Πλεονεκτήματα της εικονικοποίησης} \label{virtualizationAdvantages}
Η εικονικοποίηση προσφέρει πολλά πλεονεκτήματα στις επιχειρήσεις. Τα πιο
αξιοσημείωτα αυτών με βάση την
\textlatin{\citeauthor{ibmVirtualizationDefinition}} είναι τα εξής:
\begin{itemize}
\item \textbf{Αποδοτικότητα πόρων}:
Προτού η εικονικοποίηση γίνει δημοφιλής, κάθε διακομιστής εφαρμογής
απαιτούσε τη δική αποκλειστική μονάδα κεντρικής επεξεργασίας. Το
προσωπικό της επιχείρησης έπρεπε να αγοράσει και να ρυθμίσει έναν
ξεχωριστό διακομιστή για κάθε εφαρμογή που έπρεπε να εκτελέσει. Η
προτιμώμενη αρχιτεκτονική για λόγους αξιοπιστίας ήταν να υπάρχει μια
εφαρμογή και ένα μόνο λειτουργικό σύστημα για κάθε υπολογιστή. Αυτό
είχε ως αποτέλεσμα την υποχρησιμοποίηση κάθε διακομιστή. Η λύση ήρθε με
τη μορφή της εικονικοποίησης διακομιστών η οποία επέτρεπε την εκτέλεση
πολλαπλών εφαρμογών σε έναν φυσικό υπολογιστή δίχως την ελάττωση της
αξιοπιστίας.
\item \textbf{Ευκολότερη διαχείριση}:
Αντικαθιστώντας φυσικούς υπολογιστές με προγραμματιστικά καθορισμένες
εικονικές μηχανές δύναται η χρήση αυτοματοποιημένων ροών διαχείρισης
εργασιών. Οι διαχειριστές συστημάτων μπορούν να χρησιμοποιούν εργαλεία
για τον καθορισμό εικονικών μηχανών χρησιμοποιώντας πρότυπα κατάλληλα
για την υποδομή κάθε επιχείρησης. Με αυτόν τον τρόπο η εγκατάσταση και
η ρύθμισή τους μπορεί να γίνεται επανειλημμένα δίχως το ρίσκο
ανθρώπινου λάθους και γλιτώνοντας τον χρόνο εγκατάστασης και ρύθμισης
τους χειροκίνητα. Ένας συνδυασμός εργαλείων που κάνει αυτή τη
διαδικασία πραγματικότητα είναι το \textlatin{Ansible} \cite{ansible}
και \textlatin{Terraform} \cite{terraform}.
\item \textbf{Ελάχιστος χρόνος διακοπής λειτουργίας}:
Οι καταρρεύσεις λειτουργικών συστημάτων και εφαρμογών μπορεί να
προκαλέσουν διακοπή λειτουργίας και να διαταράξουν την παραγωγικότητα
των χρηστών. Οι διαχειριστές μπορεί να έχουν πλεονάζουσες εικονικές
μηχανές και να πραγματοποιούν εναλλαγή σε αυτές εάν εμφανιστούν
προβλήματα, κάτι που θα δε θα ήταν αποδοτικό για την επιχείρηση
διαθέτοντας μονάχα φυσικούς διακομιστές.
\item \textbf{Ταχύτερη παροχή}:
Η αγορά, εγκατάσταση και διαμόρφωση του υλικού για κάθε εφαρμογή είναι
χρονοβόρα. Εφόσον το υλικό είναι ήδη στη θέση του, η παροχή εικονικών
μηχανών για την εκτέλεση όλων των εφαρμογών είναι σημαντικά ταχύτερη.
\end{itemize}
\section{Τεχνολογίες εικονικοποίησης} \label{virtualizationTechnologies}
Όταν αναφερόμαστε στην εικονικοποίηση συνήθως μιλάμε για την πιο συνηθισμένη
μορφή της η οποία είναι η πλήρης εικονικοποίηση. Με την πάροδο του χρόνου και
την αύξηση της δημοτικότητας της εικονικοποίησης αναπτύχθηκαν πολλοί
\textlatin{hypervisors} μπορεί να διαφέρουν όχι μόνο στα χαρακτηριστικά τους
αλλά και στις διάφορες τεχνικές που χρησιμοποιούν για να κάνουν την
εικονικοποίηση πραγματικότητα. Μια από αυτές ονομάζεται
\textlatin{para-virtualization}.
\subsection{\textlatin{Para-virtualization}} \label{paraVirtualization}
Η \textlatin{para-virtualization} \cite{suseParavirtualizationDefinition} είναι
μια τεχνική εικονικοποίησης που αναπτύχθηκε προκειμένου να ξεπεραστούν ορισμένα
προβλήματα επιδόσεων που εισάγει η πλήρης εικονικοποίηση λόγω της συνεχούς
μετάφρασης φυσικών και εικονικών πόρων. Εξαιτίας αυτού, περιορίζεται σημαντικά
ο αριθμός εικονικών μηχανών που μπορεί να υποστηρίξει ένας διακομιστής και τα
είδη εφαρμογών που μπορούν να εκτελεστούν σε μια εικονική μηχανή. Πρόκειται για
μια κατηγορία εικονικοποίησης της κεντρικής μονάδας επεξεργασίας
\cite{geeksforgeeksParavirtualizationDefinition} κατά την οποία, δύναται το
λειτουργικό σύστημα να επικοινωνεί άμεσα με τον \textlatin{hypervisor} με σκοπό
τη διεξαγωγή δραστηριοτήτων που θα ήταν χρονοβόρες για τον διαχειριστή
εικονικών μηχανών, κάνοντας χρήση ειδικών εντολών ονόματι
\textlatin{hypercalls} για τη διαχείριση αιτημάτων κατά τον χρόνο εκτέλεσης.
Προκειμένου να επιτευχθεί αυτό, τα λειτουργικά συστήματα χρειάζονται μια μικρή
τροποποίηση η οποία επιτρέπει την υλοποίηση ενός ειδικού \textlatin{API} μέσω
του οποίου θα πραγματοποιείται η ανταλλαγή \textlatin{hypercall} ανάμεσα σε
αυτά και τον \textlatin{hypervisor}. Οι \textlatin{hypervisors} που το
υποστηρίζουν αυτό απαιτούν την υποστήριξη του λειτουργικού συστήματος και τη
χρήση ειδικών προγραμμάτων οδήγησης τα οποία είναι πλέον ενσωματωμένα στον
πυρήνα του \textlatin{Linux}. Κάνοντας χρήση της τεχνικής αυτής, το λειτουργικό
σύστημα της εικονικής μηχανής δεν είναι πλήρως απομονωμένο αλλά απομονώνεται
μερικώς από το υλικό και το επίπεδο εικονικοποίησης.
\pagebreak
Στην εικόνα \ref{fig:FullVirtualization} παρουσιάζεται η αρχιτεκτονική της
πλήρους εικονικοποίησης όπου το λειτουργικό σύστημα της εικονικής μηχανής
επιβάλλεται να περάσει τα αιτήματα του μέσω του διαχειριστή εικονικών μηχανών.
\begin{center}
\includegraphics[width = .5\textwidth]{Figures/GeeksForGeeksParavirtualization/Full-Virualization.png}
\captionof{figure}{\textlatin{Full Virtualization}}
\label{fig:FullVirtualization}
\end{center}
Αντιθέτως, στην εικόνα \ref{fig:ParaVirtualization} όπου και απεικονίζεται η
αρχιτεκτονική της τεχνικής \textlatin{para-virtualization}, βλέπουμε πως μέσω
των \textlatin{hypercall} όλα τα αιτήματα προορίζονται στη στρώση
εικονικοποίησης και από εκεί στο κύριο σύστημα.
\begin{center}
\includegraphics[width = .5\textwidth]{Figures/GeeksForGeeksParavirtualization/Paravirtualization.png}
\captionof{figure}{\textlatin{Para Virtualization}}
\label{fig:ParaVirtualization}
\end{center}
\pagebreak
Οι διαφορές της πλήρους εικονικοποίησης με την \textlatin{para-virtualization} είναι οι εξής:
\begin{table}[h!]
\centering
\begin{tabular}{|| c | p{6cm} | p{6cm} ||}
\hline
Νούμερο & Πλήρης εικονικοποίηση & \textlatin{Paravirtualization} \\ [0.5ex]
\hline\hline
1 &
Πλήρης απομόνωση της εικονικής μηχανής. &
Μερική απομόνωση και χρήση \textlatin{API} για αμεσότερη επικοινωνία. \\
\hline
2 &
Λιγότερο ασφαλής. &
Υπάρχει επίγνωση του εικονικού περιβάλλοντος και δε γίνεται εκκίνηση του
\textlatin{BIOS} \cite{ParavirtualizationSecurity}, πράγμα που την καθιστά
ασφαλέστερη. \\
\hline
3 &
Χρήση δυαδικής μετάφρασης. &
Χρήση \textlatin{hypercall} κατά την εκτέλεση. \\
\hline
4 &
Πιο αργές ταχύτητες. &
Γρηγορότερη εκτέλεση. \\
\hline
5 &
Μεγαλύτερη συμβατότητα και φορητότητα. &
Λόγω της αρχιτεκτονικής της είναι δυσκολότερη η μεταφορά εικονικών μηχανών. \\
\hline
6 &
Υποστήριξη όλων των συστημάτων χωρίς την απαίτηση τροποποιήσεων. &
Απαιτείται τροποποίηση του λειτουργικού συστήματος της εικονικής μηχανής για να
κάνει χρήση \textlatin{hypercalls}. \\
\hline
\end{tabular}
\caption{Διαφορές πλήρους εικονικοποίησης και παρα-εικονικοποίησης}
\label{table:virtualizationTechniquesDifference}
\end{table}
\pagebreak
\section{Ασφάλεια στο \textlatin{Cloud Computing} Στις Μέρες Μας} \label{cloudComputingSecurityNowadays}
Πλέον όλοι γνωρίζουμε τη σημασία της ασφάλειας.
\subsection{\textlatin{Attack Vector Mitigation}} \label{attackVectorMitigation}
Με βάση το μοντέλο που περιγράφει το \cite{reshetova2014security} όπως
αναφέρεται στο \cite{bui2015analysis} όπου έχουμε ένα μηχάνημα στο οποίο
εκτελούνται διάφορα δοχεία, από τα οποία ένα υποσύνολο έχει τεθεί υπό τον
έλεγχο ενός κακόβουλου χρήστη. Για να προστατευτούμε από επιθέσεις, όπως άρνηση
υπηρεσίας και κλιμάκωση δικαιωμάτων πρέπει να πραγματοποιηθεί απομόνωση των
διεργασιών, αρχείων, της συσκευής, του \textlatin{IPC}, δικτύου και τέλος, των
πόρων.
Αυτά επιτυγχάνονται κατά σειρά με την χρήση \textlatin{namespaces} όπου
οριοθετείται η ορατότητα των διεργασιών ανάμεσα στα δοχεία και το σύστημα όπως
επίσης, τα δικαιώματά τους. Χρήση \textlatin{mount namespaces}, με τα οποία οι
διεργασίες κάθε δοχείου βλέπουν διαφορετικά το αρχείο του συστήματος. Όλες οι
δράσεις \textlatin{mount}, που γίνονται στο εκάστοτε δοχείο, περιορίζονται σε
αυτό όπως επίσης, οριοθετούνται τα δικαιώματα των αρχείων του πυρήνα σε μονάχα
ανάγνωσης και αποτρέπονται περαιτέρω \textlatin{remountings}. Ο περιορισμός
συσκευών επιτυγχάνεται με το χαρακτηριστικό \textlatin{Device Whitelist
Controller} των \textlatin{cgroups} που αναφέρεται στο
\cite{deviceWhitelistController} με την βοήθεια του οποίου περιορίζεται το
σύνολο τον συσκευών στις οποίες έχει πρόσβαση ένα δοχείο και αποτρέπει αυτό από
το να δημιουργήσει καινούριες αναπαραστάσεις συσκευών. Επιπροσθέτως επειδή τα
\textlatin{mount} γίνονται με την χρήση του \textlatin{nodev}, στην περίπτωση
που μια αναπαράσταση συσκευής είχε δημιουργηθεί σε προηγούμενο χρόνο στο
στιγμιότυπου που χρησιμοποιήθηκε για να κατασκευαστεί το δοχείο, οι διεργασίες
του δεν δύνανται να την χρησιμοποιήσουν για να επικοινωνήσουν με τον πυρήνα.
Επιπλέον επειδή η προεπιλεγμένη συνθήκη είναι να μην δίνονται εκτεταμένα
προνόμια σε ένα δοχείο, δεν υπάρχει πρόσβαση σε καμία συσκευή παρά μόνο εάν
γίνει εκτέλεση δοχείου ως χρήστης με ανώτατα δικαιώματα όπου υπάρχει πρόσβαση
σε όλες. Ο περιορισμός \textlatin{IPC}, δηλαδή της επικοινωνίας των διεργασιών
μεταξύ τους, επιτυγχάνεται με την χρήση \textlatin{IPC namespaces} που
καθιστούν δυνατή την δημιουργία ξεχωριστών συνόλων αυτών, οι διεργασίες των
οποίων επικοινωνούν μόνο μεταξύ τους. Μία από τις σημαντικότερες απομονώσεις
είναι αυτή του δικτύου. Χωρίς δικτυακή απομόνωση υπάρχει κίνδυνος επιθέσεων
όπως \textlatin{Man in the middle}, \textlatin{ARP, DNS spoofing} και άλλες.
Για να απομονωθεί η κίνηση δικτύου που λαμβάνει μέρος σε ένα δοχείο από αυτήν
των υπολοίπων και του συστήματος πρέπει να γίνει χρήση των \textlatin{network
namespaces}. Κάθε δοχείο θα έχει δικές του διευθύνσεις \textlatin{IP}, συσκευές
και ό,τι χρειάζεται, προκειμένου να γίνεται αλληλεπίδραση μεταξύ των δοχείων
μέσω την διεπαφή δικτύου του καθενός σαν να είναι εξωτερικές οντότητες. Τέλος,
επιβάλλεται η οριοθέτηση των υπολογιστικών πόρων προκειμένου να αποφευχθεί μια
επίθεση τύπου άρνησης υπηρεσίας όπου μια διεργασία ή ένα σύνολο αυτών προσπαθεί
να καταναλώσει όλους τους πόρους του συστήματος. Με την βοήθεια των
\textlatin{cgroup}, επιτυγχάνεται ο έλεγχος του ποσοστού πόρων όπως
\textlatin{CPU}, μνήμη, και χωρητικότητα που μπορεί να έχει κάθε δοχείο στην
διάθεση του.