This commit is contained in:
2024-01-25 17:30:43 +02:00
parent e12955a852
commit c9a9fdab18
2 changed files with 42 additions and 47 deletions

View File

@@ -130,37 +130,13 @@ MySQL \footfullcite{mysql} και το διακομιστή ιστού Nginx \fo
η μηχανή δοχείων θα πρέπει να ανακτήσει, να αποθηκεύσει και με βάση αυτήν να
δημιουργήσει το αντιστοιχούμενο δοχείο που αυτή περιγράφει.
Τα δοχεία αποτελούν μια ελαφρύτερη εναλλακτική λύση σε σύγκριση με τις
εικονικές μηχανές και είθισται να προτιμώνται για την ανάπτυξη και διάθεση
εφαρμογών. Αυτό οφείλεται στο γεγονός ότι η μεταφορά και αναδημιουργία τους
μπορεί να πραγματοποιηθεί σε κάθε περιβάλλον και νέφος, καθώς και στο γεγονός
ότι απαιτούν λιγότερους πόρους σε σχέση με τις εικονικές μηχανές διότι οι
υποκείμενοι πόροι του συστήματος μπορούν να μοιραστούν μεταξύ των διαφορετικών
δοχείων.
\subsection{Μηχανές δοχείων και εικονικοποίηση σε επίπεδο ΛΣ} \label{osVirtualization}
Πολλά λειτουργικά συστήματα, ειδικά αυτά που κάνουν χρήση του πυρήνα Linux
διαθέτουν μηχανισμούς απομόνωσης διεργασιών και δυνατότητες εικονικοποίησης
(λειτουργικού συστήματος), όπως είναι οι ομάδες ελέγχου (control groups) με τις
οποίες μπορεί να επιτευχθεί ο περιορισμός πόρων σε ένα υποσύνολο διεργασιών,
καθώς και οι χώροι ονομάτων χρηστών (user namespaces) που προσφέρουν την
δυνατότητα περιορισμού των δικαιωμάτων που έχει μια διεργασία στο σύστημα
αρχείων. Με την βοήθεια των εργαλείων που έχουν οι μηχανές δοχείων στην διάθεσή
τους, δύναται να πραγματοποιηθεί εικονικοποίηση σε επίπεδο ΛΣ. Μια μέθοδος
εικονικοποίησης διακομιστών όπου ο πυρήνας ενός ΛΣ επιτρέπει την ύπαρξη
πολλαπλών απομονωμένων περιβαλλόντων \cite{teimouriOsVirtualizationDefinition},
τα οποία συμπεριφέρονται ως ξεχωριστοί διακομιστές
\cite{webopediaOsVirtualizationDefinition}.
Μια από τις υποχρεώσεις της μηχανής δοχείων είναι η επικοινωνία με τον πυρήνα
του λειτουργικού συστήματος φιλοξενίας για να επιτευχθεί αυτή η εικονικοποίηση.
Πρόκειται για μια διαδικασία κατά την οποία ένα λειτουργικό σύστημα επιτρέπει
την απομόνωση των διεργασιών που εκτελούνται σε χώρους ονομάτων και την ανάθεση
αποκλειστικών πόρων συστήματος σε αυτές. Με αυτό τον τρόπο, οι διεργασίες είναι
ανεξάρτητες μεταξύ τους και απομονωμένες ενώ διαμοιράζονται με ασφαλή τρόπο (σε
ένα βαθμό) τους πόρους του συστήματος. Ένα δοχείο μπορεί να θεωρηθεί πως
αντιστοιχεί σε μια τέτοια απομονωμένη διεργασία.
Η δοχειοποίηση αποτελεί μια ελαφρύτερη εναλλακτική λύση σε σύγκριση με την
εικονικοποίηση και είθισται να προτιμάται για την ανάπτυξη και διάθεση
εφαρμογών. Αυτό οφείλεται στο γεγονός ότι η μεταφορά και αναδημιουργία των
δοχείων μπορεί να πραγματοποιηθεί σε κάθε περιβάλλον και νέφος, καθώς και στο
γεγονός ότι αυτά απαιτούν λιγότερους πόρους σε σχέση με τις εικονικές μηχανές
διότι οι υποκείμενοι πόροι του συστήματος μπορούν να μοιραστούν μεταξύ των
διαφορετικών δοχείων.
\subsection{Πλεονεκτήματα δοχείων έναντι εικονικών μηχανών} \label{containerAdvantages}
@@ -189,8 +165,6 @@ MySQL \footfullcite{mysql} και το διακομιστή ιστού Nginx \fo
λειτουργικό σύστημα ούτως ώστε κάθε δοχείο να περιέχει μόνο την εφαρμογή, τις
βιβλιοθήκες και τις εξαρτήσεις της \cite{ibmContainerVsVm}.
\clearpage
\noindent Το Σχήμα \ref{fig:containerVsVm} παρουσιάζει τις διαφορές ανάμεσα
στην αρχιτεκτονική της εικονικοποίησης και των δοχείων.

View File

@@ -1635,6 +1635,30 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ
μηχανές, όπου κάθε νέο στιγμιότυπό τους απαιτεί την επαναληπτική εκτέλεση των
βημάτων δημιουργίας τους.
\subsection{Μηχανές δοχείων και εικονικοποίηση σε επίπεδο ΛΣ} \label{osVirtualization}
Πολλά λειτουργικά συστήματα, ειδικά αυτά που κάνουν χρήση του πυρήνα Linux
διαθέτουν μηχανισμούς απομόνωσης διεργασιών και δυνατότητες εικονικοποίησης
(λειτουργικού συστήματος), όπως είναι οι ομάδες ελέγχου (control groups) με τις
οποίες μπορεί να επιτευχθεί ο περιορισμός πόρων σε ένα υποσύνολο διεργασιών,
καθώς και οι χώροι ονομάτων χρηστών (user namespaces) που προσφέρουν την
δυνατότητα περιορισμού των δικαιωμάτων που έχει μια διεργασία στο σύστημα
αρχείων. Με την βοήθεια των εργαλείων που έχουν οι μηχανές δοχείων στην διάθεσή
τους, δύναται να πραγματοποιηθεί εικονικοποίηση σε επίπεδο ΛΣ. Μια μέθοδος
εικονικοποίησης διακομιστών όπου ο πυρήνας ενός ΛΣ επιτρέπει την ύπαρξη
πολλαπλών απομονωμένων περιβαλλόντων \cite{teimouriOsVirtualizationDefinition},
τα οποία συμπεριφέρονται ως ξεχωριστοί διακομιστές
\cite{webopediaOsVirtualizationDefinition}.
Μια από τις υποχρεώσεις της μηχανής δοχείων είναι η επικοινωνία με τον πυρήνα
του λειτουργικού συστήματος φιλοξενίας για να επιτευχθεί αυτή η εικονικοποίηση.
Πρόκειται για μια διαδικασία κατά την οποία ένα λειτουργικό σύστημα επιτρέπει
την απομόνωση των διεργασιών που εκτελούνται σε χώρους ονομάτων και την ανάθεση
αποκλειστικών πόρων συστήματος σε αυτές. Με αυτό τον τρόπο, οι διεργασίες είναι
ανεξάρτητες μεταξύ τους και απομονωμένες ενώ διαμοιράζονται με ασφαλή τρόπο (σε
ένα βαθμό) τους πόρους του συστήματος. Ένα δοχείο μπορεί να θεωρηθεί πως
αντιστοιχεί σε μια τέτοια απομονωμένη διεργασία.
\section{Δοχειοποίηση} \label{containerizationDefinition}
Πέραν της πλήρους εικονικοποίησης και της παρα-εικονικοποίησης, εδώ και αρκετά
@@ -1707,6 +1731,8 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ
\begin{itemize}
\clearpage
\item \textbf{Mεταφερσιμότητα}:
Τα δοχεία είναι ανεξάρτητα από το λειτουργικό σύστημα και το περιβάλλον
@@ -1736,8 +1762,6 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ
εφαρμογών σε περιβάλλοντα νέφους όπου η αποδοτικότητα αξιοποίησης των
υπολογιστικών πόρων αντανακλάται σε άμεση εξοικονόμηση κόστους.
\clearpage
\item \textbf{Απομόνωση σφαλμάτων}:
Εφόσον κάθε δοχείο είναι απομονωμένο και λειτουργεί ανεξάρτητα από τα
@@ -1750,6 +1774,8 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ
αποσφαλμάτωση και εν τέλει στην πιο γρήγορη ανάπτυξη και συντήρηση
προγραμμάτων.
\clearpage
\item \textbf{Αποδοτικότητα}:
Το γεγονός ότι τα δοχεία μοιράζονται το ίδιο ΛΣ και κοινά κομμάτια μιας
@@ -1861,8 +1887,6 @@ Docker να δουλεύουν ευκολότερα σε διαφορετικέ
τον πυρήνα του Linux προκειμένου να χρησιμοποιήσει χαρακτηριστικά όπως οι
ομάδες ελέγχου (control groups) για να δημιουργήσει δοχεία.
\clearpage
\subsection{Ασφάλεια στο Docker} \label{dockerSecurityMore}
Οι εφαρμογές σε δοχεία έχουν ένα εγγενές επίπεδο ασφαλείας αφού μπορούν να
@@ -1876,8 +1900,9 @@ Docker να δουλεύουν ευκολότερα σε διαφορετικέ
δυνητικά να επηρεάσει όλα τα δοχεία.
Σχετικά με τις εικόνες δοχείων που αναφέρθηκαν στο
\ref{virtualizationTechnologiesIntroduction}, τα κομμάτια δηλαδή από τα οποία
μια εφαρμογή σε μορφή δοχείου αποτελείται και αντιστοιχούν σε καλούπια μέσω των
\ref{virtualizationTechnologiesIntroduction} και το
\ref{containersAndContainerImages}, τα κομμάτια δηλαδή από τα οποία μια
εφαρμογή σε μορφή δοχείου αποτελείται και αντιστοιχούν σε καλούπια μέσω των
οποίων παράγονται τα δοχεία της εφαρμογής, η ασφάλεια δεν είναι πάντα
εγγυημένη. Αυτό είναι κάτι που συμβαίνει διότι ο καθένας έχει την δυνατότητα να
ανεβάσει μια εικόνα δοχείου προς χρήση από τρίτους. Σε περίπτωση που δεν
@@ -1900,8 +1925,6 @@ Docker να δουλεύουν ευκολότερα σε διαφορετικέ
περιορισμό χρήσης πόρων και του εύρους του συστήματος στο οποίο έχει πρόσβαση η
μηχανή δοχείων \cite{ibmContainerizationDefinition}.
\clearpage
\subsubsection{Μετριασμός επιθέσεων στο Docker με χρήση χώρων ονομάτων} \label{dockerAttackVectorMitigation}
Με βάση το μοντέλο που περιγράφει το \cite{reshetova2014security}, όπως
@@ -1981,8 +2004,6 @@ Linux capabilities, που θα μπορούσαν να εισάγουν ένα
να χρησιμοποιήσουν όσες δυνατότητες είναι απαραίτητες προκειμένου να
ανταπεξέλθουν σε κάθε επίθεση ανάλογα με το περιβάλλον και τις ανάγκες τους.
\clearpage
\subsubsection{Συχνά είδη επιθέσεων σε δοχεία και μέθοδοι πρόληψής τους} \label{commonAttacksAndPrevention}
Μερικά είδη επιθέσεων σε δοχεία με τους τρόπους αντιμετώπισής τους, όπως
@@ -2007,6 +2028,8 @@ Linux capabilities, που θα μπορούσαν να εισάγουν ένα
αρχείων, να απενεργοποιηθεί η επικοινωνία μεταξύ δοχείων και να
αποφευχθεί η εγκατάσταση περιττών προγραμμάτων σε αυτά.
\clearpage
\item \textbf{Άρνηση υπηρεσίας}:
Μια από τις πιο συνηθισμένες επιθέσεις σε πόρους διαθέσιμους μέσω
@@ -2022,8 +2045,6 @@ Linux capabilities, που θα μπορούσαν να εισάγουν ένα
καθορισμό διαθέσιμων πόρων για κάθε δοχείο εξ αρχής, δεν υπάρχει
κίνδυνος να προσπαθήσει κάποιο δοχείο να διεκδικήσει περισσότερους.
\clearpage
\item \textbf{Αποδράσεις Δοχείων (Container Breakouts)}:
Σε τέτοιου είδους επιθέσεις, ένας επιτιθέμενος προσπαθεί αφού απέκτησε
@@ -2050,6 +2071,8 @@ Linux capabilities, που θα μπορούσαν να εισάγουν ένα
εγκεκριμένους προμηθευτές και επιπρόσθετα να τις ελέγχουν με κατάλληλα
εργαλεία ανίχνευσης τρωτοτήτων προτού τις χρησιμοποιήσουν.
\clearpage
\item \textbf{Απόκτηση μυστικών κωδικών/κλειδιών}:
Η απόκτηση επιχειρησιακών ή προσωπικών μυστικών ελλοχεύει πολλούς
@@ -2063,8 +2086,6 @@ Linux capabilities, που θα μπορούσαν να εισάγουν ένα
αποθήκευση κωδικών. Χρήσιμη επίσης θα ήταν και η εσκεμμένη παράλειψη
της παραμέτρου \textquote{privileged}.
\clearpage
\item \textbf{Ενδιάμεσου (Man-in-the-Middle - MitM)}:
Σε μια τέτοια επίθεση ένας κακόβουλος χρήστης προσπαθεί να μπει ανάμεσα