diff --git a/Abbreviations/abbreviations.tex b/Abbreviations/abbreviations.tex index 5fe730f..b28f287 100644 --- a/Abbreviations/abbreviations.tex +++ b/Abbreviations/abbreviations.tex @@ -3,71 +3,91 @@ \lhead{\textgreek{Συντομογραφίες}} % Set the left side page header to "Abbreviations" \listofsymbols{ll} % Include a list of Abbreviations (a table of two columns) { -\textbf{IaaS} & \textbf{I}nfrastructure \textbf{a}s \textbf{a} \textbf{S}ervice \\ -\textbf{PaaS} & \textbf{P}latform \textbf{a}s \textbf{a} \textbf{S}ervice \\ -\textbf{SaaS} & \textbf{S}oftware \textbf{a}s \textbf{a} \textbf{S}ervice \\ -\textbf{AWS} & \textbf{A}mazon \textbf{W}eb \textbf{S}ervices \\ -\textbf{GCE} & \textbf{G}oogle \textbf{C}ompute \textbf{E}ngine \\ -\textbf{OWASP} & \textbf{O}pen \textbf{W}eb \textbf{A}pplication \textbf{S}ecurity \textbf{P}roject \\ -\textbf{EC2} & \textbf{E}lastic \textbf{C}ompute \textbf{C}loud \\ -\textbf{IAM} & \textbf{I}dentity and \textbf{A}ccess \textbf{M}anagement \\ -\textbf{IaC} & \textbf{I}nfrastructure \textbf{a}s \textbf{C}ode \\ +\textbf{AMI} & \textbf{A}mazon \textbf{M}achine \textbf{I}mage \\ \textbf{API} & \textbf{A}pplication \textbf{P}rogramming \textbf{I}nterface \\ -\textbf{SDK} & \textbf{S}oftware \textbf{D}evelopment \textbf{K}it \\ -\textbf{OS} & \textbf{O}perating \textbf{S}ystem \\ +\textbf{AppArmor} & \textbf{App}lication \textbf{Armor} \\ +\textbf{ARP} & \textbf{A}ddress \textbf{R}esolution \textbf{P}rotocol \\ +\textbf{ATT\&CK} & \textbf{A}dversarial \textbf{T}actics, \textbf{T}echniques \textbf{\&} \textbf{C}ommon \textbf{K}nowledge \\ +\textbf{AWS} & \textbf{A}mazon \textbf{W}eb \textbf{S}ervices \\ + \textbf{BIOS} & \textbf{B}asic \textbf{I}nput/\textbf{O}utput \textbf{S}ystem \\ -\textbf{UEFI} & \textbf{U}nified \textbf{E}xtensible \textbf{F}irmware \textbf{I}nterface \\ -\textbf{MAC} & \textbf{M}andatory \textbf{A}ccess \textbf{C}ontrol \\ -\textbf{MAC} & \textbf{M}edium \textbf{A}ccess \textbf{C}ontrol \\ -\textbf{XSS} & \textbf{C}ross \textbf{S}ite \textbf{S}cripting \\ -\textbf{cgroups} & \textbf{c}ontrol \textbf{groups} \\ -\textbf{CI/CD} & \textbf{C}ontinuous \textbf{I}ntegration / \textbf{C}ontinuous \textbf{D}elivery \\ -\textbf{DevOps} & \textbf{Dev}elopment \textbf{Op}eration\textbf{s} \\ -\textbf{LXC} & \textbf{L}inu\textbf{x} \textbf{C}ontainers \\ -\textbf{OCI} & \textbf{O}pen \textbf{C}ontainer \textbf{I}nitiative \\ -\textbf{TPM} & \textbf{T}rusted \textbf{P}latform \textbf{M}odule \\ -\textbf{VM} & \textbf{V}irtual \textbf{M}achine \\ -\textbf{VBS} & \textbf{V}irtualization-\textbf{B}ased \textbf{S}ecurity \\ -\textbf{KVM} & \textbf{K}ernel-based \textbf{V}irtual \textbf{M}achine \\ -\textbf{VMM} & \textbf{V}irtual \textbf{M}achine \textbf{M}onitor \\ -\textbf{NFV} & \textbf{N}etwork \textbf{F}unction \textbf{V}irtualization \\ -\textbf{IPC} & \textbf{I}nter \textbf{P}rocess \textbf{C}ommunication \\ -\textbf{Vuls} & \textbf{VUL}nerability \textbf{S}canner \\ -\textbf{LUNAR} & \textbf{L}ockdown \textbf{UN}ix \textbf{A}uditing and \textbf{R}eporting \\ -\textbf{CVE} & \textbf{C}ommon \textbf{V}ulnerabilities and \textbf{E}xposures \\ -\textbf{CVRF} & \textbf{C}ommon \textbf{V}ulnerability \textbf{R}eporting \textbf{F}ramework \\ -\textbf{NVD} & \textbf{N}ational \textbf{V}ulnerability \textbf{D}atabase \\ -\textbf{CVSS} & \textbf{C}ommon \textbf{V}ulnerability \textbf{S}coring \textbf{S}ystem \\ -\textbf{CPE} & \textbf{C}ommon \textbf{P}latform \textbf{E}numeration \\ -\textbf{CWE} & \textbf{C}ommon \textbf{W}eakness \textbf{E}numeration \\ -\textbf{NIST} & \textbf{N}ational \textbf{I}nstitute of \textbf{S}tandards and \textbf{T}echnology \\ -\textbf{OVAL} & \textbf{O}pen \textbf{V}ulnerability and \textbf{A}ssessment \textbf{L}anguage \\ -\textbf{CISA} & \textbf{C}ybersecurity \& \textbf{I}nfrastructure \textbf{S}ecurity \textbf{A}gency \\ -\textbf{CERT} & \textbf{C}omputer \textbf{E}mergency \textbf{R}esponse \textbf{T}eam \\ + \textbf{CAPEC} & \textbf{C}ommon \textbf{A}ttack \textbf{P}attern \textbf{E}numeration and \textbf{C}lassification \\ \textbf{CCE} & \textbf{C}ommon \textbf{C}onfiguration \textbf{E}numeration \\ -\textbf{ATT\&CK} & \textbf{A}dversarial \textbf{T}actics, \textbf{T}echniques \textbf{\&} \textbf{C}ommon \textbf{K}nowledge \\ -\textbf{PoC} & \textbf{P}roof \textbf{o}f \textbf{C}oncept \\ -\textbf{SSH} & \textbf{S}ecure \textbf{SH}ell \\ -\textbf{AMI} & \textbf{A}mazon \textbf{M}achine \textbf{I}mage \\ -\textbf{GiB} & \textbf{Gi}bi\textbf{B}yte \\ -\textbf{EBS} & \textbf{E}lastic \textbf{B}lock \textbf{S}tore \\ -\textbf{GHz} & \textbf{G}iga\textbf{H}ert\textbf{z} \\ -\textbf{Gbps} & \textbf{G}iga\textbf{b}its \textbf{p}er \textbf{s}econd \\ +\textbf{CERT} & \textbf{C}omputer \textbf{E}mergency \textbf{R}esponse \textbf{T}eam \\ +\textbf{cgroups} & \textbf{c}ontrol \textbf{groups} \\ +\textbf{CI/CD} & \textbf{C}ontinuous \textbf{I}ntegration / \textbf{C}ontinuous \textbf{D}elivery \\ \textbf{CIS} & \textbf{C}enter for \textbf{I}nternet \textbf{S}ecurity \\ -\textbf{ARP} & \textbf{A}ddress \textbf{R}esolution \textbf{P}rotocol \\ -\textbf{DNS} & \textbf{D}omain \textbf{N}ame \textbf{S}ystem \\ -\textbf{MitM} & \textbf{M}an-\textbf{i}n-\textbf{t}he-\textbf{M}iddle \\ +\textbf{CISA} & \textbf{C}ybersecurity \& \textbf{I}nfrastructure \textbf{S}ecurity \textbf{A}gency \\ +\textbf{CPE} & \textbf{C}ommon \textbf{P}latform \textbf{E}numeration \\ \textbf{CPU} & \textbf{C}entral \textbf{P}rocessing \textbf{U}nit \\ -\textbf{SELinux} & \textbf{S}ecurity-\textbf{E}nhanced \textbf{Linux} \\ -\textbf{SecComp} & \textbf{Sec}ure \textbf{Comp}uting \\ -\textbf{AppArmor} & \textbf{App}lication \textbf{Armor} \\ +\textbf{CVE} & \textbf{C}ommon \textbf{V}ulnerabilities and \textbf{E}xposures \\ +\textbf{CVSS} & \textbf{C}ommon \textbf{V}ulnerability \textbf{S}coring \textbf{S}ystem \\ +\textbf{CVRF} & \textbf{C}ommon \textbf{V}ulnerability \textbf{R}eporting \textbf{F}ramework \\ +\textbf{CWE} & \textbf{C}ommon \textbf{W}eakness \textbf{E}numeration \\ + +\textbf{DevOps} & \textbf{Dev}elopment \textbf{Op}eration\textbf{s} \\ +\textbf{DNS} & \textbf{D}omain \textbf{N}ame \textbf{S}ystem \\ + +\textbf{EBS} & \textbf{E}lastic \textbf{B}lock \textbf{S}tore \\ +\textbf{EC2} & \textbf{E}lastic \textbf{C}ompute \textbf{C}loud \\ + +\textbf{Gbps} & \textbf{G}iga\textbf{b}its \textbf{p}er \textbf{s}econd \\ +\textbf{GCE} & \textbf{G}oogle \textbf{C}ompute \textbf{E}ngine \\ +\textbf{GHz} & \textbf{G}iga\textbf{H}ert\textbf{z} \\ +\textbf{GiB} & \textbf{Gi}bi\textbf{B}yte \\ + +\textbf{IaaS} & \textbf{I}nfrastructure \textbf{a}s \textbf{a} \textbf{S}ervice \\ +\textbf{IAM} & \textbf{I}dentity and \textbf{A}ccess \textbf{M}anagement \\ +\textbf{IaC} & \textbf{I}nfrastructure \textbf{a}s \textbf{C}ode \\ \textbf{IP} & \textbf{I}nternet \textbf{P}rotocol \\ +\textbf{IPC} & \textbf{I}nter \textbf{P}rocess \textbf{C}ommunication \\ \textbf{IPv4} & \textbf{I}nternet \textbf{P}rotocol \textbf{v}ersion \textbf{4} \\ + +\textbf{KVM} & \textbf{K}ernel-based \textbf{V}irtual \textbf{M}achine \\ + \textbf{LAN} & \textbf{L}ocal \textbf{A}rea \textbf{N}etwork \\ +\textbf{LUNAR} & \textbf{L}ockdown \textbf{UN}ix \textbf{A}uditing and \textbf{R}eporting \\ +\textbf{LXC} & \textbf{L}inu\textbf{x} \textbf{C}ontainers \\ + +\textbf{MAC} & \textbf{M}andatory \textbf{A}ccess \textbf{C}ontrol \\ +\textbf{MAC} & \textbf{M}edium \textbf{A}ccess \textbf{C}ontrol \\ +\textbf{MitM} & \textbf{M}an-\textbf{i}n-\textbf{t}he-\textbf{M}iddle \\ + +\textbf{NFV} & \textbf{N}etwork \textbf{F}unction \textbf{V}irtualization \\ +\textbf{NIST} & \textbf{N}ational \textbf{I}nstitute of \textbf{S}tandards and \textbf{T}echnology \\ +\textbf{NVD} & \textbf{N}ational \textbf{V}ulnerability \textbf{D}atabase \\ + +\textbf{OCI} & \textbf{O}pen \textbf{C}ontainer \textbf{I}nitiative \\ +\textbf{OS} & \textbf{O}perating \textbf{S}ystem \\ +\textbf{OVAL} & \textbf{O}pen \textbf{V}ulnerability and \textbf{A}ssessment \textbf{L}anguage \\ +\textbf{OWASP} & \textbf{O}pen \textbf{W}eb \textbf{A}pplication \textbf{S}ecurity \textbf{P}roject \\ + +\textbf{PaaS} & \textbf{P}latform \textbf{a}s \textbf{a} \textbf{S}ervice \\ +\textbf{PoC} & \textbf{P}roof \textbf{o}f \textbf{C}oncept \\ + \textbf{RAM} & \textbf{R}andom \textbf{A}ccess \textbf{M}emory \\ + +\textbf{SaaS} & \textbf{S}oftware \textbf{a}s \textbf{a} \textbf{S}ervice \\ +\textbf{SDK} & \textbf{S}oftware \textbf{D}evelopment \textbf{K}it \\ +\textbf{SecComp} & \textbf{Sec}ure \textbf{Comp}uting \\ +\textbf{SecDep} & \textbf{Sec}ure \textbf{Dep}loyment \\ +\textbf{SELinux} & \textbf{S}ecurity-\textbf{E}nhanced \textbf{Linux} \\ +\textbf{SSH} & \textbf{S}ecure \textbf{SH}ell \\ + +\textbf{TPM} & \textbf{T}rusted \textbf{P}latform \textbf{M}odule \\ + +\textbf{UEFI} & \textbf{U}nified \textbf{E}xtensible \textbf{F}irmware \textbf{I}nterface \\ + +\textbf{VBS} & \textbf{V}irtualization-\textbf{B}ased \textbf{S}ecurity \\ +\textbf{VM} & \textbf{V}irtual \textbf{M}achine \\ +\textbf{VMM} & \textbf{V}irtual \textbf{M}achine \textbf{M}onitor \\ +\textbf{Vuls} & \textbf{VUL}nerability \textbf{S}canner \\ + +\textbf{XSS} & \textbf{C}ross \textbf{S}ite \textbf{S}cripting \\ + \textbf{ΛΣ} & \textbf{Λ}ειτουργικό \textbf{Σ}ύστημα \\ -\textbf{ΤΠ} & \textbf{Τ}εχνολογίες \textbf{Π}ληροφορικής \\ +\textbf{ΤΠ} & \textbf{Τ}εχνολογίες \textbf{Π}ληροφοριών \\ } \lhead{} diff --git a/Abstract/abstract.tex b/Abstract/abstract.tex index 602fc2a..7262e23 100644 --- a/Abstract/abstract.tex +++ b/Abstract/abstract.tex @@ -6,27 +6,27 @@ \hyphenation{αυτές νέφος} \noindent Τη σημερινή εποχή, όλο και περισσότερος κόσμος βασίζεται πλέον σε -υπηρεσίες τύπου IaaS έναντι των παραδοσιακών επιτόπιων υποδομών για την παροχή -υπολογιστικής υποστήριξης σε εφαρμογές, υπηρεσίες και επιχειρησιακές -διαδικασίες. Αυτό συμβαίνει διότι κατ' αυτό τον τρόπο μειώνονται τα έξοδα ενός -οργανισμού ή μιας επιχείρησης εφόσον δεν υπάρχει ανάγκη δαπάνης/επένδυσης για -την αγορά εξοπλισμού και το λειτουργικό κόστος χρήσης υπηρεσιών IaaS βασίζεται -σε ευέλικτα μοντέλα χρέωσης με βάση την χρήση (των πόρων υποδομής που -προσφέρονται). Επιπλέον, είναι δυνατή η κλιμάκωση της προσφερόμενης -απομακρυσμένης υποδομής ανάλογα με τις ανάγκες του οργανισμού και του τρέχοντος -φόρτου εργασίας των υπηρεσιών και εφαρμογών προς υποστήριξη. Με αυτόν τον -τρόπο, μεταβιβάζεται η ευθύνη της διάθεσης και συντήρησης του εξοπλισμού σε -τρίτους ενώ ταυτόχρονα εισάγεται ένα καινούριο μοντέλο εμπιστοσύνης ανάμεσα -στον χρήστη/οργανισμό και τον πάροχο νέφους. Η αύξηση ενδιαφέροντος από τις -επιχειρήσεις προς τις τεχνολογίες εικονικοποίησης, οι οποίες αποτελούν τα -θεμέλια των υπηρεσιών IaaS, αλλά και η ραγδαία άνοδος της δημοτικότητας των -τεχνολογιών δοχείων (containers) όπως είναι το Docker, άρχισαν με την σειρά -τους να ενισχύουν την υιοθέτηση της αρχιτεκτονικής μικρο-υπηρεσιών για την -ανάπτυξη εφαρμογών. Μιας αρχιτεκτονικής που βασίζεται τόσο στις τεχνολογίες -εικονικοποίησης για την στέγαση των εφαρμογών σε υποδομές νέφους όσο και στις -τεχνολογίες δοχείων για την διαμέριση των λειτουργιών τους σε ένα σύνολο από -συστατικά/δοχεία, προσφέροντας ένα κατάλληλο επίπεδο απόδοσης και -κλιμακωσιμότητας \footfullcite{awsMicroservices}. Ωστόσο, οι εφαρμογές αυτές +υπηρεσίες τύπου IaaS (Infrastructure-as-a-Service) έναντι των παραδοσιακών +επιτόπιων υποδομών για την παροχή υπολογιστικής υποστήριξης σε εφαρμογές, +υπηρεσίες και επιχειρησιακές διαδικασίες. Αυτό συμβαίνει διότι κατ' αυτό τον +τρόπο μειώνονται τα έξοδα ενός οργανισμού ή μιας επιχείρησης εφόσον δεν υπάρχει +ανάγκη δαπάνης/επένδυσης για την αγορά εξοπλισμού και το λειτουργικό κόστος +χρήσης υπηρεσιών IaaS βασίζεται σε ευέλικτα μοντέλα χρέωσης με βάση την χρήση +(των πόρων υποδομής που προσφέρονται). Επιπλέον, είναι δυνατή η κλιμάκωση της +προσφερόμενης απομακρυσμένης υποδομής ανάλογα με τις ανάγκες του οργανισμού και +του τρέχοντος φόρτου εργασίας των υπηρεσιών και εφαρμογών προς υποστήριξη. Με +αυτόν τον τρόπο, μεταβιβάζεται η ευθύνη της διάθεσης και συντήρησης του +εξοπλισμού σε τρίτους ενώ ταυτόχρονα εισάγεται ένα καινούριο μοντέλο +εμπιστοσύνης ανάμεσα στον χρήστη/οργανισμό και τον πάροχο νέφους. Η αύξηση +ενδιαφέροντος από τις επιχειρήσεις προς τις τεχνολογίες εικονικοποίησης, οι +οποίες αποτελούν τα θεμέλια των υπηρεσιών IaaS, αλλά και η ραγδαία άνοδος της +δημοτικότητας των τεχνολογιών δοχείων (containers) όπως είναι το Docker, +άρχισαν με την σειρά τους να ενισχύουν την υιοθέτηση της αρχιτεκτονικής +μικρο-υπηρεσιών για την ανάπτυξη εφαρμογών. Μιας αρχιτεκτονικής που βασίζεται +τόσο στις τεχνολογίες εικονικοποίησης για την στέγαση των εφαρμογών σε υποδομές +νέφους όσο και στις τεχνολογίες δοχείων για την διαμέριση των λειτουργιών τους +σε ένα σύνολο από συστατικά/δοχεία, προσφέροντας ένα κατάλληλο επίπεδο απόδοσης +και κλιμακωσιμότητας \cite{awsMicroservices}. Ωστόσο, οι εφαρμογές αυτές παραμένουν άμεσα ευεπηρέαστες σε ζητήματα ασφάλειας που μπορεί να αφορούν το ίδιο το νέφος ή/και τις τεχνολογίες στις οποίες στηρίζεται. @@ -34,7 +34,7 @@ Στην παρούσα εργασία θα αναλύσουμε πρώτα τα ζητήματα ασφαλείας που αφορούν το νέφος και ειδικότερα αυτά που αφορούν τις τεχνολογίες εικονικοποίησης και -δοχείων. Έπειτα, θα αναλύσουμε πως μπορεί να γίνει χρήση αυτών των 2 +δοχείων. Έπειτα, θα αναλύσουμε πως μπορεί να γίνει χρήση αυτών των δύο τεχνολογιών με περισσότερη ασφάλεια. Όμως, ο σκοπός της εργασίας προχωρά πέρα από αυτό και μεταβαίνει σε ένα πρακτικό επίπεδο, προτείνοντας τη λύση ενός εργαλείου που υλοποιεί την προτεινόμενη, ασφαλή χρήση των τεχνολογιών αυτών. @@ -51,7 +51,7 @@ των λειτουργικών συστημάτων. \vskip 60pt -\noindent \textbf{Λέξεις κλειδιά:} Νέφος, Ασφάλεια, Εικονικοποίηση, Δοχεία, Μικρο-υπηρεσίες, Αυτοματοποίηση +\noindent \textbf{Λέξεις κλειδιά:} Νέφος, Ασφάλεια, Εικονικοποίηση, Εικονικές Μηχανές, Δοχεία, Μηχανή Δοχείων, Μικρο-υπηρεσίες, Αυτοματοποίηση, Σκλήρυνση } diff --git a/Abstract/abstractenglish.tex b/Abstract/abstractenglish.tex index 971e6f4..976b80e 100644 --- a/Abstract/abstractenglish.tex +++ b/Abstract/abstractenglish.tex @@ -2,16 +2,17 @@ % skip indentation just for this paragraph \textenglish{ -\noindent Today, more and more people rely on IaaS services over traditional -on-premise infrastructure to provide computational support to applications, -services and business processes. That happens because in this way, the costs of -an organization or business are reduced, since there is no need for an upfront -investment on the purchase of equipment. Also, the operational cost of using -IaaS services is based on flexible billing models according to the usage (of -the offered infrastructure resources). In addition, it is possible to scale the -offered remote infrastructure, depending on the needs of the organization and -the current workload of the services and applications to be supported. In this -way, the responsibility for the equipment and its maintenance is transferred to +\noindent Today, more and more people rely on IaaS +(Infrastructure-as-a-Service) services over a traditional on-premise +infrastructure to provide computational support to applications, services and +business processes. This is due to the fact that the costs of an organization +or business are reduced, since there is no need for an upfront investment on +the purchase of equipment. Also, the operational cost of using IaaS services is +based on flexible billing models according to the usage (of the offered +infrastructure resources). In addition, it is possible to scale the offered +remote infrastructure, depending on the needs of the organization and the +current workload of the services and applications to be supported. In this way, +the responsibility for the equipment and its maintenance is transferred to third parties, while at the same time a new trust model is introduced between the user/organization and the cloud provider. The increased interest shown by enterprises when in comes to virtualization technologies (which are a key @@ -21,9 +22,9 @@ adoption of the microservices architecture for application development. An architecture based on virtualization technologies for hosting applications in cloud infrastructures and container technologies for partitioning their functions into a set of containers and thus, providing an appropriate level of -performance and scalability \footfullcite{awsMicroservices}. However, the -applications in question remain vulnerable to security issues that may be tied -to the cloud and/or the technologies on which it is based on. +performance and scalability \cite{awsMicroservices}. However, such applications +remain vulnerable to security issues that may be tied to the cloud and/or the +technologies on which it is based. } @@ -31,19 +32,19 @@ to the cloud and/or the technologies on which it is based on. \textenglish{ -In this paper we will first analyze the security issues related to the cloud +In this thesis we will first analyze the security issues related to the cloud and in particular, those related to virtualization and container technologies. -Then, we will analyze how these 2 technologies can be used in a more secure -manner. However, the purpose of this paper goes beyond that and moves to a more -practical level by proposing the solution of a tool that can implement the +Then, we will analyze how these two technologies can be used in a more secure +manner. However, the purpose of this thesis goes beyond that and moves to a +more practical level by proposing the solution of a tool that can implement the proposed safe use of these technologies. In particular, this tool can not only create virtual machines across multiple cloud providers but also harden them in -an automated manner. In addition to that, it is capable of installing the -Docker container engine on these virtual machines, which it can also harden. -The main goal of this work is to make it easier for an organization to install -and configure in an automated manner a secure, distributed environment for the +an automated manner. In addition, it is capable of installing the Docker +container engine on these virtual machines, which it can also harden. The main +goal of this work is to make it easier for an organization to install and +configure in an automated manner a secure, distributed environment for the deployment and operation of a microservices application. This automation lies -in the correct configuration of the tool, which does not require any special +in the correct configuration of our tool, which does not require any special knowledge on technical or security issues in regard to infrastructure and operating systems. @@ -52,7 +53,7 @@ operating systems. \vskip 60pt \textenglish{ -\noindent \textbf{Keywords:} Cloud, Security, Virtualization, Containers, Micro-services, Automation +\noindent \textbf{Keywords:} Cloud, Security, Virtualization, Virtual Machines, Containers, Container Engine, Micro-services, Automation, Hardening } } diff --git a/Bibliography.bib b/Bibliography.bib index b481704..4fb4b06 100644 --- a/Bibliography.bib +++ b/Bibliography.bib @@ -1187,3 +1187,17 @@ url = {https://github.com/doxygen/doxygen}, urldate = {2024-01-05}, } + +@online{mysql, + title = {MySQL}, + author = {Oracle}, + url = {https://www.mysql.com/}, + urldate = {2024-01-05}, +} + +@online{nginx, + title = {NGINX}, + author = {NGINX}, + url = {https://nginx.org/en/}, + urldate = {2024-01-05}, +} diff --git a/Chapters/1.Introduction.tex b/Chapters/1.Introduction.tex index a65fbfe..cfdf5d4 100644 --- a/Chapters/1.Introduction.tex +++ b/Chapters/1.Introduction.tex @@ -1,10 +1,12 @@ \chapter{Εισαγωγή} \label{introduction} +\hyphenation{πολλαπλών} + \noindent Παραδοσιακά, όταν ένας χρήστης/εταιρεία επιθυμούσε να διαθέτει μια υπηρεσία στο ευρύ κοινό θα έπρεπε να επενδύσει ένα κατάλληλο κεφάλαιο για την αγορά εξοπλισμού. Σε περίπτωση που η υπηρεσία αυτή τύγχανε ευρείας αποδοχής, καθίστατο επιτακτική η ανάγκη της επέκτασης του υφιστάμενου εξοπλισμού αλλά και -της εγκατάστασης όλων των αναγκαίων πόρων λογισμικού (βάσεις δεδομένων +της εγκατάστασης όλων των αναγκαίων πόρων λογισμικού (βάσεων δεδομένων (Databases), λογισμικό της υπηρεσίας, αρχείων ρυθμίσεων, κ.λπ.) στα νέα κομμάτια εξοπλισμού που αγοράσθηκαν. Η παραπάνω διαδικασία απαιτούσε επιπλέον κεφάλαιο και αρκετές εργατοώρες προκειμένου να γίνει πράξη. Επιπρόσθετα, η @@ -15,31 +17,33 @@ όταν η Amazon, ψάχνοντας τρόπους να κλιμακώσει τις υπηρεσίες που προσέφερε στον τομέα του ηλεκτρονικού εμπορίου (e-commerce), δημιούργησε την θυγατρική της, AWS (Amazon Web Services). Η AWS άρχισε να προσφέρει υπηρεσίες -νεφο-υπολογιστικής και συγκεκριμένα, την EC2 (Elastic Compute Cloud), μια -υπηρεσία τύπου IaaS (Infrastructure as a Service). Πρόκειται για την πρώτη -υπηρεσία ενοικίασης υπολογιστικών πόρων προς αξιοποίηση από οργανισμούς και -επιχειρήσεις προκειμένου να επιταχυνθεί η διαδικασία διάθεσης των δικών τους -υπηρεσιών. Αυτό το μοντέλο λειτουργίας παρέχει πολλά πλεονεκτήματα, όπως το -μικρότερο κόστος εκκίνησης διάθεσης υπηρεσιών, η διευκόλυνση κλιμάκωσής τους -(είτε οριζόντιας όπου μοιράζεται ο φόρτος εργασίας σε παραπάνω διακομιστές είτε -κάθετης κατά την οποία ένας διακομιστής αναβαθμίζεται με ισχυρότερες -προδιαγραφές \footfullcite{cloudzeroScalability}) και η απαλλαγή ευθύνης -σχετικά με την συνεχή λειτουργία του εξοπλισμού στον οποίο στεγάζονται. +νεφο-υπολογιστικής (Cloud Computing Services) και συγκεκριμένα, την EC2 +(Elastic Compute Cloud), μια υπηρεσία τύπου IaaS (Infrastructure as a Service) +(Υποδομή ως Υπηρεσία). Πρόκειται για την πρώτη υπηρεσία ενοικίασης +υπολογιστικών πόρων προς αξιοποίηση από οργανισμούς και επιχειρήσεις +προκειμένου να επιταχυνθεί η διαδικασία διάθεσης των δικών τους υπηρεσιών. Αυτό +το μοντέλο λειτουργίας παρέχει πολλά πλεονεκτήματα, όπως το μικρότερο κόστος +εκκίνησης διάθεσης υπηρεσιών, η διευκόλυνση κλιμάκωσής τους (είτε οριζόντιας +όπου μοιράζεται ο φόρτος εργασίας σε παραπάνω διακομιστές είτε κάθετης κατά την +οποία ένας διακομιστής αναβαθμίζεται με ισχυρότερες προδιαγραφές +\cite{cloudzeroScalability}) και η απαλλαγή ευθύνης σχετικά με την συνεχή +λειτουργία του εξοπλισμού στον οποίο στεγάζονται. -Λόγω της ευρείας αποδοχής της και των πολλών πλεονεκτημάτων που παρέχει, πολλές -άλλες εταιρείες, όπως η Google, IBM και Microsoft, άρχισαν να προσφέρουν και -αυτές υπηρεσίες ιδίου τύπου. Σήμερα, ο μέσος καταναλωτής έχει στην διάθεση του -μια πληθώρα εταιρειών που προσφέρουν υπηρεσίες νεφο-υπολογιστικής και μάλιστα -μερικές από αυτές, όπως η Linode, Vultr και Digital Ocean, προσφέρουν ως την -κύρια υπηρεσία τους τη δυνατότητα διάθεσης υπολογιστικών πόρων στους χρήστες με -τη μορφή ενοικίασης εικονικών μηχανών. +Λόγω της ευρείας αποδοχής των υπηρεσιών IaaS της AWS και των πολλών +πλεονεκτημάτων που αυτές παρέχουν, πολλές άλλες εταιρείες, όπως η Google, IBM +και Microsoft, άρχισαν να προσφέρουν και αυτές υπηρεσίες του ίδιου τύπου. +Σήμερα, ο μέσος καταναλωτής έχει στην διάθεση του μια πληθώρα εταιρειών που +προσφέρουν υπηρεσίες νεφο-υπολογιστικής και μάλιστα μερικές από αυτές, όπως η +Linode, Vultr και Digital Ocean, προσφέρουν ως την κύρια υπηρεσία τους τη +δυνατότητα διάθεσης υπολογιστικών πόρων στους χρήστες με τη μορφή ενοικίασης +εικονικών μηχανών (Virtual Machines). \section{Ασφάλεια Περιβαλλόντων Νέφους} \label{cloudComputingSecurity} Η ασφάλεια των περιβαλλόντων νέφους είναι ένα θέμα που απασχολεί πολύ τους χρήστες και ακόμα περισσότερο τις επιχειρήσεις που βασίζονται σε υπηρεσίες νεφο-υπολογιστικής για την διάθεση των δικών τους υπηρεσιών. Η επίτευξη της -εξαρτάται από 3 βασικούς παράγοντες. Ο πρώτος είναι η ασφάλεια των υποδομών +εξαρτάται από τρεις βασικούς παράγοντες. Ο πρώτος είναι η ασφάλεια των υποδομών νέφους, όπου στην περίπτωση χρήσης υπηρεσιών IaaS υπεύθυνος είναι ο πάροχος νέφους. Ο δεύτερος παράγοντας είναι η ασφάλεια των τεχνολογιών εικονικοποίησης που χρησιμοποιούνται, όπου υπεύθυνος είναι εν μέρει ο πάροχος για τις @@ -47,29 +51,28 @@ AWS (Amazon Web Services). Η AWS άρχισε να προσφέρει υπηρ (εικονικούς) διακομιστές του και ο τελικός χρήστης εφόσον προβεί στην χρήση δοχείων. Ο τρίτος και τελευταίος παράγοντας είναι οι ενέργειες στις οποίες οφείλει να προβεί ο χρήστης προκειμένου να διατηρήσει ή να ενισχύσει την -ασφάλεια σύμφωνα με τις ανάγκες του. +ασφάλεια της υπηρεσίας του (που θα φιλοξενείται από μια υποδομή νέφους) σύμφωνα +με τις ανάγκες του. Όταν επιλέξει ένας χρήστης να δημιουργήσει εικονικές μηχανές μέσω μιας από τις -πλατφόρμες IaaS, προς διευκόλυνσή του η διαδικασία γίνεται και μέσω γραφικού -περιβάλλοντος της μορφής Point and Click. Στις εικονικές μηχανές που +διαθέσιμες πλατφόρμες IaaS, προς διευκόλυνσή του η διαδικασία γίνεται και μέσω +γραφικού περιβάλλοντος της μορφής Point and Click. Στις εικονικές μηχανές που προσφέρονται, τις περισσότερες φορές διατίθενται διάφορες διανομές λειτουργικού συστήματος Linux, οι οποίες ενδέχεται να έχουν εγκατεστημένα και ρυθμισμένα εκ των προτέρων διάφορα λογισμικά, όπως το σύστημα διαχείρισης βάσεων δεδομένων -MySQL και το διακομιστή ιστού Nginx. Με αυτό τον τρόπο, η διαδικασία -δημιουργίας εικονικής μηχανής είναι αρκετά εύκολη για τον χρήστη, ο οποίος δεν -χρειάζεται να έχει ειδικές γνώσεις στο υλικό για να το πετύχει αυτό. Στην -προκειμένη περίπτωση, ενώ υπήρχε μηδενική δυσκολία για την απόκτηση εικονικής -μηχανής εξοπλισμένης με λειτουργικό σύστημα και πιθανότατα απαραίτητα προς -χρήση προγράμματα, η ασφάλειά της δεν είναι πάντοτε εγγυημένη. Πολλά από τα -προγράμματα που θα χρησιμοποιήσει ο χρήστης δεν παρέχουν εξ αρχής -ενεργοποιημένες τις παραμέτρους ασφαλείας που μπορεί να υποστηρίζουν διότι δεν -δύναται να υπάρχει μια ασφαλής ρύθμιση που να καλύπτει όλα τα πιθανά σενάρια -χρήσης. Επιπλέον, η ρύθμιση των παραμέτρων ασφαλείας είναι μια διαδικασία που -απαιτεί εξειδικευμένες γνώσεις και είναι αρκετά εύκολο όχι μόνο να παραλειφθεί -αλλά και να γίνει λανθασμένα λόγω έλλειψης οικειότητας με τα εργαλεία που έχει -στην διάθεση του ο χρήστης. - -\clearpage +MySQL \footfullcite{mysql} και το διακομιστή ιστού Nginx \footfullcite{nginx}. +Με αυτό τον τρόπο, η διαδικασία δημιουργίας εικονικής μηχανής είναι αρκετά +εύκολη για τον χρήστη, ο οποίος δεν χρειάζεται να έχει ειδικές γνώσεις στο +υλικό για να το πετύχει αυτό. Στην προκειμένη περίπτωση, ενώ υπάρχει μηδενική +δυσκολία για την απόκτηση εικονικής μηχανής εξοπλισμένης με λειτουργικό σύστημα +και πιθανότατα απαραίτητα προς χρήση προγράμματα, η ασφάλειά της δεν είναι +πάντοτε εγγυημένη. Πολλά από τα προγράμματα που θα χρησιμοποιήσει ο χρήστης δεν +παρέχουν εξ αρχής ενεργοποιημένες τις παραμέτρους ασφαλείας που μπορεί να +υποστηρίζουν διότι δεν δύναται να υπάρχει μια ασφαλής ρύθμιση που να καλύπτει +όλα τα πιθανά σενάρια χρήσης. Επιπλέον, η ρύθμιση των παραμέτρων ασφαλείας +είναι μια διαδικασία που απαιτεί εξειδικευμένες γνώσεις και είναι αρκετά εύκολο +όχι μόνο να παραλειφθεί αλλά και να γίνει λανθασμένα λόγω έλλειψης οικειότητας +με τα εργαλεία που έχει στην διάθεση του ο χρήστης. Όπως αναφέρεται και στο \citealt{balduzzi2012security}, υπάρχουν υπηρεσίες IaaS που προσφέρουν διανομές λειτουργικού συστήματος Linux με εγκατεστημένα και @@ -81,125 +84,74 @@ MySQL και το διακομιστή ιστού Nginx. Με αυτό τον τ ευαίσθητων προσωπικών δεδομένων. Στην περίπτωση που και ο πάροχος νέφους έχει παραλείψει να εφαρμόσει τις απαραίτητες ενημερώσεις ασφαλείας στις τεχνολογίες εικονικοποίησης που χρησιμοποιεί, είναι πιθανό κάποιο από τα προγράμματα αυτά -να μπορέσει να πραγματοποιήσει μια επίθεση hyperjacking -\footfullcite{Hyperjacking} και να αποκτήσει έλεγχο του υπερ-επόπτη με -αποτέλεσμα να είναι σε θέση να προκαλέσει ζημιές είτε σε διαφορετικές εικονικές -μηχανές είτε στον (φυσικό) διακομιστή στον οποίο εκτελείται. +να μπορέσει να πραγματοποιήσει μια επίθεση hyperjacking \cite{Hyperjacking} και +να αποκτήσει έλεγχο του υπερ-επόπτη με αποτέλεσμα να είναι σε θέση να +προκαλέσει ζημιές είτε σε διαφορετικές εικονικές μηχανές είτε στον (φυσικό) +διακομιστή στον οποίο εκτελείται. -\section{Εικονικοποίηση και τεχνολογίες υλοποίησης της} \label{virtualizationTechnologiesIntroduction} +\section{Εικονικοποίηση και τεχνολογίες υλοποίησής της} \label{virtualizationTechnologiesIntroduction} -Η εικονικοποίηση είναι ένας όρος που χρησιμοποιούμε όταν θέλουμε να αναφερθούμε -στην αναπαράσταση πόρων σε εικονική μορφή με σκοπό την αναδιαμόρφωσή τους ούτως -ώστε να ικανοποιούνται οι ανάγκες ενός συστήματος. Εφαρμόζεται σε μια πληθώρα -πόρων όπως οι διακομιστές, το λειτουργικό σύστημα, ακόμα και τα δεδομένα. Η πιο -συνηθισμένη χρήση εικονικοποίησης είναι αυτή των διακομιστών η οποία αποτελεί -και τον πυλώνα της νεφο-υπολογιστικής. Προκειμένου να επιτευχθεί, απαιτείται η -χρήση ενός υπερ-επόπτη. Ένα λογισμικό υπεύθυνο για την κατάτμηση των φυσικών -πόρων ενός διακομιστή σε μια ή περισσότερες εικονικές αναπαραστάσεις ενός -συνόλου αυτών με σκοπό να χρησιμοποιηθούν ως ξεχωριστοί διακομιστές. +Η εικονικοποίηση αποτελεί μια τεχνολογία που επιτρέπει την διαμέριση πόρων ενός +φυσικού μηχανήματος σε πολλά μικρότερα υποσύνολα αυτών. Με αυτόν τον τρόπο, +καθίσταται ευκολότερη η διαχείρισή τους και αυξάνεται η απόδοση του υποκείμενου +υλικού, αφού μπορεί να χρησιμοποιείται στο έπακρον. Υπάρχουν πολλά είδη +εικονικοποίησης που αναλύονται πιο λεπτομερώς στο +\ref{virtualizationImplementations} αλλά οι δύο βασικότερες υλοποιήσεις της +είναι η εικονικοποίηση διακομιστών και λειτουργικών συστημάτων (δοχειοποίηση). -Για έναν υπερ-επόπτη υπάρχουν δύο κατηγορίες στις οποίες μπορεί να ανήκει. Είτε -πρόκειται για υπερ-επόπτη τύπου 1 στην περίπτωση απευθείας πρόσβασης με το -υλικό, είτε τύπου 2 εάν υπάρχει ήδη λειτουργικό σύστημα εγκατεστημένο στον -υποκείμενο διακομιστή προς κατάτμηση. Η επιλογή τύπου υπερ-επόπτη είναι άμεσα -εξαρτώμενη από τις ανάγκες του κάθε χρήστη. Στην περίπτωση που η ταχύτητα και η -απόδοση είναι υψίστης σημασίας, η άμεση πρόσβαση του υπερ-επόπτη τύπου 1 στο -υλικό συμβάλλει στην επίτευξη της διατήρησης των δύο αυτών προδιαγραφών σε -κατάλληλες τιμές. Από την άλλη, ένας υπερ-επόπτης τύπου 2 δεν έρχεται σε -αντιπαράθεση με το υποκείμενο ΛΣ και επιτρέπει την χρήση προγραμμάτων που το ΛΣ -πιθανόν να μην είναι σε θέση να εκτελέσει. +Στην εικονικοποίηση διακομιστών, ένας φυσικός διακομιστής χωρίζει με την +βοήθεια ενός υπερ-επόπτη τους πόρους του όπως τη μνήμη, τον αποθηκευτικό χώρο +και τον επεξεργαστή του σε πολλά μικρότερα εικονικά μηχανήματα. Κάθε εικονικό +μηχάνημα μπορεί να εκτελεί διαφορετικό λειτουργικό σύστημα και να έχει +διαφορετικές ρυθμίσεις από τα υπόλοιπα. Η διάθεση ενός εικονικού μηχανήματος +δεν περιορίζεται μονάχα σε τοπικούς υπολογιστές και έτσι πολλές φορές +συνηθίζεται η ενοικίαση τέτοιων μηχανημάτων προκειμένου να μπορέσουν να +χρησιμοποιηθούν από τρίτα πρόσωπα για την επίτευξη των δικών τους διεργασιών. -\clearpage +Η δοχειοποίηση αποτελεί μια ειδική περίπτωση εικονικοποίησης όπου αντί για το +υλικό, εικονικοποιείται το λειτουργικό σύστημα. Αυτό, καθιστά την δοχειοποίηση +πιο αποδοτική από την εικονικοποίηση διακομιστών καθώς δεν χρειάζεται να +εκτελεστεί ένας υπερ-επόπτης για την διαχείριση υπολογιστικών πόρων. Επιπλέον, +η δοχειοποίηση επιτρέπει την εκτέλεση περισσότερων εικονικών περιβαλλόντων στον +ίδιο φυσικό διακομιστή και έτσι, η απόδοση του υλικού αυξάνεται ακόμα +περισσότερο. Συνήθως χρησιμοποιείται για την διάθεση προγραμμάτων στο ευρύ +κοινό, τα οποία ακολουθούν την αρχιτεκτονική μικρο-υπηρεσιών (microservices) +και επειδή περιέχουν όλες τις απαραίτητες βιβλιοθήκες για την εκτέλεσή τους, +χωρίς να βασίζονται στο υποκείμενο νέφος στο οποίο στεγάζονται, αποτελούν +αρκετά δημοφιλή επιλογή τεχνολογίας διάθεσης υπηρεσιών. -Η εικονικοποίηση διακομιστών χωρίζεται σε δύο κατηγορίες βάσει της μεθόδου -επίτευξης της. Την πλήρη εικονικοποίηση και την παρα-εικονικοποίηση -\footfullcite{abacusFullParaOSVirtualization}. Στην πρώτη περίπτωση το -λειτουργικό σύστημα που εκτελείται στον εικονικό διακομιστή συμπεριφέρεται όπως -θα συμπεριφερόταν σε έναν φυσικό διακομιστή. Αυτό συμβαίνει διότι από μεριάς -του λειτουργικού συστήματος δεν υπάρχει επίγνωση της εικονικοποίησης που έχει -λάβει μέρος για να δημιουργηθούν οι εικονικοί πόροι στους οποίους στεγάζεται. Η -πλήρης εικονικοποίηση μπορεί να είναι δύο ειδών. Υποβοηθούμενη από το λογισμικό -ή από το υλικό. Στο πρώτο είδος, πραγματοποιείται εικονικοποίηση ολόκληρου του -υλικού μέσω του υπερ-επόπτη που εκτελείται στο ΛΣ ενώ στο δεύτερο όπου δεν -υπάρχει ΛΣ, δύναται το λειτουργικό σύστημα του εικονικού διακομιστή να κάνει -χρήση της φυσικής κεντρικής μονάδας επεξεργασίας του διακομιστή φιλοξενίας εάν -αυτή το υποστηρίζει \footfullcite{geeksforgeeksHardwareAssistedVirtualization}. -Στην περίπτωση της παρα-εικονικοποίησης το λειτουργικό σύστημα αναγνωρίζει την -ύπαρξη του υπερ-επόπτη και απαιτείται η τροποποίηση και των δύο ώστε να μπορούν -να επικοινωνούν με χρήση υπερ-κλήσεων. Αν και το γεγονός αυτό μειώνει την -συμβατότητα σε σχέση με την πλήρη εικονικοποίηση, η άμεση επικοινωνία του -λειτουργικού συστήματος με τον υπερ-επόπτη συμβάλλει στην αύξηση της -αποδοτικότητας. +Τα δοχεία είναι ένα προϊόν της δοχειοποίησης και αποτελούν το αποτέλεσμα της +εικονικοποίησης σε επίπεδο λειτουργικού συστήματος. Με την βοήθεια του +λειτουργικού συστήματος, δημιουργούνται εικονικά περιβάλλοντα στα οποία μπορούν +αυτά να εκτελεστούν. Ουσιαστικά, μια μηχανή δοχείων αιτείται από το λειτουργικό +σύστημα την διάθεση ενός εικονικού περιβάλλοντος για την εκτέλεση των +διεργασιών ενός προγράμματος. Το πρόγραμμα αυτό, καθώς και όλες οι βιβλιοθήκες +που χρειάζεται, καθορίζονται σε μια εικόνα δοχείου (container image) την οποία +η μηχανή δοχείων θα πρέπει να ανακτήσει, να αποθηκεύσει και με βάση αυτήν να +δημιουργήσει το αντιστοιχούμενο δοχείο που αυτή περιγράφει. -\section{Εισαγωγή στα δοχεία και τον τρόπο λειτουργίας τους} \label{containerTechnologies} - -Τα δοχεία αποτελούν και αυτά κομμάτι των τεχνολογιών εικονικοποίησης αλλά σε -επίπεδο λειτουργικού συστήματος. Κατά την περιγραφή της διαδικασίας δημιουργίας -δοχείων δεν χρησιμοποιείται πλέον ο όρος εικονικοποίηση αλλά δοχειοποίηση -(containerization). Σε αντίθεση με τις τεχνολογίες εικονικοποίησης που -αναφέρθηκαν στο \ref{virtualizationTechnologiesIntroduction}, για την -δοχειοποίηση δεν είναι αναγκαία η ύπαρξη υπερ-επόπτη αλλά έναν παρόμοιο ρόλο -παίρνει η μηχανή δοχείων. Επιπλέον, ενώ οι εικονικές μηχανές καταλήγουν να -περιέχουν εικονικό αντίγραφο του υλικού, δικό τους λειτουργικό σύστημα και -εγκατεστημένα πακέτα προς υποστήριξη ενός λογισμικού, τα δοχεία αποτελούνται -μονάχα από το λογισμικό προς εκτέλεση και τις εξαρτήσεις που χρειάζεται -προκειμένου να είναι λειτουργικό. - -\clearpage - -Τα απαραίτητα συστατικά για την επίτευξη της δοχειοποίησης είναι μια εικόνα -δοχείου και μια μηχανή δοχείων. Στην εικόνα δοχείου εμπεριέχονται τα συστατικά -μέρη ενός λογισμικού και οδηγίες συναρμολόγησής του προς ανάγνωση από την -μηχανή δοχείων. Από εκεί και πέρα, για την δημιουργία δοχείων υπάρχει μια -αλληλουχία βημάτων που πρέπει να έρθει εις πέρας. Αρχικά, η μηχανή δοχείων θα -προσπελάσει την εικόνα δοχείου προκειμένου να εξακριβώσει τις προδιαγραφές του. -Έπειτα, με την βοήθεια των μεθόδων απομόνωσης που έχει στην διάθεση της μέσω -των μηχανισμών εικονικοποίησης του πυρήνα του λειτουργικού συστήματος -φιλοξενίας, θα δημιουργήσει ένα εικονικό περιβάλλον απομονωμένο από το φυσικό -ήδη υπάρχον και τέλος, θα πραγματοποιήσει εκκίνηση του δοχείου ως διεργασία του -συστήματος. - -Ορισμένα από αυτά τα βήματα περιλαμβάνουν και άλλες διαδικασίες για τις οποίες -είναι υπεύθυνα συγκεκριμένα προγράμματα με τα οποία συνεργάζεται η μηχανή -δοχείων. Υπάρχουν και μηχανές δοχείων χαμηλού επιπέδου έναντι των πιο γνωστών -υψηλού επιπέδου όπως το Docker, στις οποίες λείπουν λειτουργίες όπως η απόκτηση -εικόνων δοχείων από ένα κεντρικό αποθετήριο και ο έλεγχος εγκυρότητας των -ρυθμίσεων των εικόνων αυτών. Οι μηχανές δοχείων υψηλού επιπέδου είναι -ουσιαστικά μια συλλογή εργαλείων που διευκολύνουν την δοχειοποίηση -απαλλάσσοντας τον χρήστη από την ανάγκη της χειροκίνητης εκτέλεσης των βημάτων -της \footfullcite{sysdigContainerRuntime}. - -Το τελικό επιθυμητό αποτέλεσμα είναι η δημιουργία ενός απομονωμένου -περιβάλλοντος στο οποίο πραγματοποιείται η εκτέλεση ενός λογισμικού με -βιβλιοθήκες και εξαρτήσεις διαφορετικών εκδόσεων συγκριτικά με αυτές που μπορεί -να προϋπάρχουν στο σύστημα. Το περιβάλλον αυτό είναι υποχρεωμένο να -χρησιμοποιήσει ένα υποσύνολο των πόρων του συστήματος που του απονεμήθηκε μέσω -της μηχανής δοχείων. Τα παραπάνω είναι εφικτά και με την χρήση εικονικών -μηχανών αλλά με κόστος την επιβάρυνση του συστήματος φιλοξενίας λόγω της -αδυναμίας διαμοιρασμού των πόρων με τον τρόπο που το επιτυγχάνουν τα δοχεία. -Κάθε δοχείο μοιράζεται τον πυρήνα του λειτουργικού συστήματος φιλοξενίας με τα -υπόλοιπα και κάθε στρώση μιας εικόνας δοχείου αντιστοιχουμένη σε ένα -στιγμιότυπο λογισμικού, δύναται να χρησιμοποιηθεί ταυτοχρόνως από περισσότερα -του ενός δοχεία προς αποφυγή διπλής αποθήκευσης -\footfullcite{codemotionContainerImages}. Επιπλέον, κάθε εικόνα δοχείου δύναται -να χρησιμοποιηθεί ως πρότυπο για την δημιουργία μιας καινούριας, καθιστώντας -έτσι ευκολότερη την επεκτασιμότητα ενός λογισμικού σε αντίθεση με τις εικονικές -μηχανές όπου κάθε νέο στιγμιότυπό τους απαιτεί την επαναληπτική εκτέλεση των -βημάτων δημιουργίας τους. +Τα δοχεία αποτελούν μια ελαφρύτερη εναλλακτική λύση σε σύγκριση με τις +εικονικές μηχανές και είθισται να προτιμώνται για την ανάπτυξη και διάθεση +εφαρμογών. Αυτό οφείλεται στο γεγονός ότι η μεταφορά και αναδημιουργία τους +μπορεί να πραγματοποιηθεί σε κάθε περιβάλλον και νέφος, καθώς και στο γεγονός +ότι απαιτούν λιγότερους πόρους σε σχέση με τις εικονικές μηχανές διότι οι +υποκείμενοι πόροι του συστήματος μπορούν να μοιραστούν μεταξύ των διαφορετικών +δοχείων. \subsection{Μηχανές δοχείων και εικονικοποίηση σε επίπεδο ΛΣ} \label{osVirtualization} Πολλά λειτουργικά συστήματα, ειδικά αυτά που κάνουν χρήση του πυρήνα Linux διαθέτουν μηχανισμούς απομόνωσης διεργασιών και δυνατότητες εικονικοποίησης (λειτουργικού συστήματος), όπως είναι οι ομάδες ελέγχου (control groups) με τις -οποίες μπορεί να επιτευχθεί ο περιορισμός πόρων σε ένα υποσύνολο διεργασιών και -οι χώροι ονομάτων χρηστών (user namespaces) που προσφέρουν την δυνατότητα -περιορισμού των δικαιωμάτων που έχει μια διεργασία στο σύστημα αρχείων. Με την -βοήθεια των εργαλείων που έχουν στην διάθεσή τους, δύναται να πραγματοποιηθεί -εικονικοποίηση σε επίπεδο ΛΣ. Μια μέθοδος εικονικοποίησης διακομιστών όπου ο -πυρήνας ενός ΛΣ επιτρέπει την ύπαρξη πολλαπλών απομονωμένων περιβαλλόντων -\footfullcite{teimouriOsVirtualizationDefinition}, τα οποία συμπεριφέρονται ως -ξεχωριστοί διακομιστές \footfullcite{webopediaOsVirtualizationDefinition}. +οποίες μπορεί να επιτευχθεί ο περιορισμός πόρων σε ένα υποσύνολο διεργασιών, +καθώς και οι χώροι ονομάτων χρηστών (user namespaces) που προσφέρουν την +δυνατότητα περιορισμού των δικαιωμάτων που έχει μια διεργασία στο σύστημα +αρχείων. Με την βοήθεια των εργαλείων που έχουν οι μηχανές δοχείων στην διάθεσή +τους, δύναται να πραγματοποιηθεί εικονικοποίηση σε επίπεδο ΛΣ. Μια μέθοδος +εικονικοποίησης διακομιστών όπου ο πυρήνας ενός ΛΣ επιτρέπει την ύπαρξη +πολλαπλών απομονωμένων περιβαλλόντων \cite{teimouriOsVirtualizationDefinition}, +τα οποία συμπεριφέρονται ως ξεχωριστοί διακομιστές +\cite{webopediaOsVirtualizationDefinition}. Μια από τις υποχρεώσεις της μηχανής δοχείων είναι η επικοινωνία με τον πυρήνα του λειτουργικού συστήματος φιλοξενίας για να επιτευχθεί αυτή η εικονικοποίηση. @@ -235,32 +187,32 @@ MySQL και το διακομιστή ιστού Nginx. Με αυτό τον τ εκτελεστεί μαζί με μια εφαρμογή, τις βιβλιοθήκες και τις εξαρτήσεις της. Από την άλλη, ένα δοχείο αντί να εικονικοποιήσει το υλικό, εικονικοποιεί το λειτουργικό σύστημα ούτως ώστε κάθε δοχείο να περιέχει μόνο την εφαρμογή, τις -βιβλιοθήκες και τις εξαρτήσεις της \footfullcite{ibmContainerVsVm}. +βιβλιοθήκες και τις εξαρτήσεις της \cite{ibmContainerVsVm}. -Το σχήμα \ref{fig:containerVsVm} παρουσιάζει τις διαφορές ανάμεσα στην -αρχιτεκτονική της εικονικοποίησης και των δοχείων: +\clearpage + +\noindent Το Σχήμα \ref{fig:containerVsVm} παρουσιάζει τις διαφορές ανάμεσα +στην αρχιτεκτονική της εικονικοποίησης και των δοχείων. \begin{center} \begin{figure}[!ht] \centering - \includegraphics[width = .8\textwidth]{Figures/RedHat_Virtualization/virtualization-vs-containers_transparent.png} + \includegraphics[width = \textwidth]{Figures/RedHat_Virtualization/virtualization-vs-containers_transparent.png} \captionof{figure}{Χρήση εικονικοποίησης έναντι δοχείων \cite{redhatVirtualizationDefinition}} \label{fig:containerVsVm} \end{figure} \vspace*{-30pt} \end{center} -\clearpage - Η απουσία του εικονικού λειτουργικού υλικού είναι που καθιστά τα δοχεία γρήγορα, φορητά και μικρότερα σε μέγεθος. Για να γίνει πιο εμφανής η διαφορά, -σύμφωνα με τη Red Hat \footfullcite{redhatContainerVsVm}, το μέγεθος των -εικονικών μηχανών είναι της τάξεως των gigabyte ενώ των δοχείων είναι της -τάξεως των megabyte. Πολλές φορές, όπως αναφέρεται και στο -\cite{ibmContainerVsVm} \footfullcite{ibmContainerVsVm}, τα δοχεία +σύμφωνα με τη Red Hat \cite{redhatContainerVsVm}, το μέγεθος των εικονικών +μηχανών είναι της τάξεως των gigabyte ενώ των δοχείων είναι της τάξεως των +megabyte. Πολλές φορές, όπως αναφέρεται και σε μια δημοσίευση +\cite{ibmContainerVsVm} της \citeauthor{ibmContainerVsVm}, τα δοχεία χρησιμοποιούνται για εφαρμογές αρχιτεκτονικής μικρο-υπηρεσιών (microservices), όπου κάθε ξεχωριστό κομμάτι (δηλ. μικρο-υπηρεσία) αντιπροσωπεύει ένα συστατικό -της εφαρμογής που παίρνει την μορφή δοχείου. Με αυτόν τον τρόπο, είναι +της εφαρμογής που παίρνει την μορφή ενός δοχείου. Με αυτόν τον τρόπο, είναι ευκολότερη η κλιμάκωση μιας εφαρμογής απ' ότι θα ήταν με μια μονολιθική αρχιτεκτονική. Αυτό συμβαίνει διότι μπορεί να κλιμακώνεται μόνο το μέρος ή τα μέρη της που έχουν αύξηση του φόρτου εργασίας τους, μέσω της χρήσης @@ -272,15 +224,18 @@ MySQL και το διακομιστή ιστού Nginx. Με αυτό τον τ στιγμιότυπα (δηλ. μεγάλο αριθμό δοχείων) ανά πάσα χρονική στιγμή, απαιτείται η χρήση μιας πλατφόρμας ενορχήστρωσης δοχείων για την αυτοματοποίηση της εγκατάστασης, εκτέλεσης και κλιμάκωσης της εφαρμογής κατά μήκος πολλαπλών πόρων -(δηλ. εικονικών ή φυσικών μηχανών) όπως είναι το Kubernetes ή το Docker Swarm. +(δηλ. εικονικών ή φυσικών μηχανών), όπως είναι το Kubernetes ή το Docker Swarm. +Από την άλλη, αν είναι επιθυμητή η ενορχήστρωση των δοχείων μιας εφαρμογής σε +έναν πόρο (φυσικό ή εικονικό μηχάνημα), τότε είναι δυνατή η χρήση εργαλείων +όπως το Docker Compose. Το μόνο μειονέκτημα της τεχνολογίας των δοχείων, το οποίο δεν επηρεάζει κατά πολύ τη χρήση τους, είναι το γεγονός ότι δοχεία που δημιουργήθηκαν για να εκτελούν προγράμματα που απαιτούν την ύπαρξη του λειτουργικού συστήματος Windows δε μπορούν να εκτελεστούν σε ένα περιβάλλον με τον πυρήνα του Linux και -το ίδιο ισχύει και αντιστρόφως \footfullcite{containerOSlimitations}. +το ίδιο ισχύει και αντιστρόφως \cite{containerOSlimitations}. -Εν γένει τα βασικότερα πλεονεκτήματα των δοχείων σε σχέση με τις εικονικές +Εν γένει, τα βασικότερα πλεονεκτήματα των δοχείων σε σχέση με τις εικονικές μηχανές είναι ο διαμοιρασμός του πυρήνα του λειτουργικού συστήματος φιλοξενίας και η μεταφερσιμότητα τους. Το γεγονός ότι μοιράζονται τον ίδιο πυρήνα έχει ως αποτέλεσμα να μην χρειάζεται να απονεμηθούν πόροι για εικονικοποίηση μηχανών με @@ -297,20 +252,19 @@ Docker) όπου μάλιστα η ταχύτητα δημιουργίας το και Container (δοχείο) αν και είναι διαφορετικοί. Παρ' όλα αυτά, η ιδέα της δημιουργίας απομονωμένων περιβαλλόντων εκτέλεσης λογισμικού υπήρχε προτού βγει το Docker στην αγορά. Ιστορικά, οι πρώτες τεχνολογίες περί δοχείων έκαναν την -είσοδο τους από το 1979, όταν εισήχθη το chroot \footfullcite{chrootCommand} -στην έβδομη έκδοση του Unix \footfullcite{containerHistory}. Πρόκειται για μια -εντολή που περιορίζει την πρόσβαση αρχείων που διαθέτει μια εφαρμογή, σε ένα -συγκεκριμένο φάκελο ο οποίος ορίζεται ως ο καινούριος διαχειριστικός (root). Ο -κύριος σκοπός του chroot ήταν η ενίσχυση της ασφάλειας ούτως ώστε στην -περίπτωση εκμετάλλευσης μιας εσωτερικής ευπάθειας της εφαρμογής, να παραμένουν -ανεπηρέαστα τα μέρη του συστήματος εκτός του φακέλου στον οποίο είχε πρόσβαση. -Εκείνη την εποχή αυτό ήταν αρκετό, αλλά οι απαιτήσεις ασφαλείας με τον καιρό -αυξάνονταν και υπήρχε η ανάγκη διαφορετικών μεθόδων απομόνωσης μιας και από -κατασκευής του, το chroot δεν περιόριζε έναν χρήστη ή μια διεργασία με -διαχειριστικά δικαιώματα \footfullcite{chrootRestrictions}. Μερικά χρόνια -αργότερα, το 2004 δημιουργήθηκαν και ενσωματώθηκαν στον πυρήνα του Linux οι -ομάδες ελέγχου με την βοήθεια των οποίων ήταν πλέον δυνατή η απομόνωση πόρων -του συστήματος σε ένα υποσύνολο διεργασιών. +είσοδο τους από το 1979, όταν εισήχθη το chroot \cite{chrootCommand} στην +έβδομη έκδοση του Unix \cite{containerHistory}. Πρόκειται για μια εντολή που +περιορίζει την πρόσβαση αρχείων που διαθέτει μια εφαρμογή, σε ένα συγκεκριμένο +φάκελο, ο οποίος ορίζεται ως ο καινούριος αρχικός (root). Ο κύριος σκοπός του +chroot ήταν η ενίσχυση της ασφάλειας ούτως ώστε στην περίπτωση εκμετάλλευσης +μιας εσωτερικής ευπάθειας της εφαρμογής, να παραμένουν ανεπηρέαστα τα μέρη του +συστήματος εκτός του φακέλου στον οποίο είχε πρόσβαση. Εκείνη την εποχή αυτό +ήταν αρκετό, αλλά οι απαιτήσεις ασφαλείας με τον καιρό αυξάνονταν και υπήρχε η +ανάγκη διαφορετικών μεθόδων απομόνωσης μιας και από κατασκευής του, το chroot +δεν περιόριζε έναν χρήστη ή μια διεργασία με διαχειριστικά δικαιώματα +\cite{chrootRestrictions}. Μερικά χρόνια αργότερα, το 2004 δημιουργήθηκαν και +ενσωματώθηκαν στον πυρήνα του Linux οι ομάδες ελέγχου με την βοήθεια των οποίων +ήταν πλέον δυνατή η απομόνωση πόρων του συστήματος σε ένα υποσύνολο διεργασιών. Αυτές οι τεχνολογίες σήμαναν της έναρξη της ιδέας της δοχειοποίησης και έτσι το 2008 ήρθε στο προσκήνιο το LXC (Linux Container Technology) \footfullcite{LXC}. @@ -320,58 +274,57 @@ Docker) όπου μάλιστα η ταχύτητα δημιουργίας το εικονικοποίηση ενός στιγμιότυπου Linux σε μορφή δοχείου και παρείχε αρκετές λειτουργίες όπως η δημιουργία, η εκκίνηση και η διαγραφή LXC δοχείων. Παρ' όλα αυτά, επικεντρωνόταν στην δοχειοποίηση λειτουργικών συστημάτων και όχι -εφαρμογών \footfullcite{LXCvsDocker}, καθιστώντας δύσκολη και περίπλοκη την -χρήση του όταν η κύρια ανάγκη ήταν η απομόνωση εφαρμογών. +εφαρμογών \cite{LXCvsDocker}, καθιστώντας δύσκολη και περίπλοκη την χρήση του +όταν η κύρια ανάγκη ήταν η απομόνωση εφαρμογών. -Ενώ λοιπόν προϋπήρχαν εργαλεία διαχείρισης δοχείων τα οποία χρησιμοποιούνται +Ενώ λοιπόν προϋπήρχαν εργαλεία διαχείρισης δοχείων, τα οποία χρησιμοποιούνται ακόμα και στις μέρες μας, λόγω του συνδυασμού της δυσκολίας στην χρήση τους και του εξειδικευμένου σκοπού ύπαρξής τους δεν είχαν υιοθετηθεί αρκετά. Όλα τα παραπάνω οδήγησαν στην δημιουργία του Docker το 2013, με την έλευση του οποίου -η τεχνολογία των δοχείων εκτοξεύτηκε. Το Docker είναι ένα σύνολο προϊόντων -PaaS, παρέχοντας μια πλατφόρμα με μηχανισμούς για συναρμολόγηση, θέση σε -λειτουργία, εκτέλεση, ενημέρωση και διαχείριση προγραμμάτων σε μορφή δοχείων. -Σε αντίθεση με το LXC, αποτελεί μια μηχανή δοχείων υψηλού επιπέδου με κύριο -στόχο την δοχειοποίηση εφαρμογών. Εκτός από τον διαχωρισμό ανάμεσα στον πηγαίο -κώδικα, τις βιβλιοθήκες και εξαρτήσεις ενός λογισμικού από το κύριο σύστημα -(φιλοξενίας) παρέχει και δυνατότητες επικοινωνίας με αποθετήρια εικόνων δοχείωv -όπως είναι το Docker Hub \footfullcite{dockerhub}, το επίσημο αποθετήριο του -Docker, το Quay \footfullcite{quay}, ένα εναλλακτικό αποθετήριο της Red Hat ή -οποιοδήποτε άλλο αποθετήριο συμβατό με τις προδιαγραφές που έχει ορίσει η OCI -(Open Container Initiative) \footfullcite{oci}. Μέσω τέτοιων υπηρεσιών, οι -χρήστες έχουν πρόσβαση και διαμοιράζονται χιλιάδες εικόνες δοχείων που τους -επιτρέπουν να ολοκληρώσουν διάφορα μέρη μιας υπάρχουσας ή νέας εφαρμογής. -Επιπλέον, όντας μια μηχανή δοχείων υψηλού επιπέδου όλες οι λειτουργίες που θα -απαιτούσαν εξειδικευμένες γνώσεις προκειμένου να πραγματοποιηθούν, έχουν -συμπυκνωθεί σε απλές εντολές καθιστώντας έτσι εύκολη την χρήση του για -προγραμματιστές κάθε επιπέδου και απλοποιώντας κατά πολύ την διαδικασία -ανάπτυξης και παράδοσης κατανεμημένων εφαρμογών. Προσφέροντας μια φιλική προς -τον χρήστη διεπαφή, έλεγχο εκδόσεων (version control) για δοχεία -\footfullcite{LXCvsDocker2} και ένα οικοσύστημα γύρω από όλα αυτά, είναι -εμφανής ο λόγος που κατάφερε να επισκιάσει το LXC. - -\clearpage +η τεχνολογία των δοχείων εκτοξεύτηκε. Το Docker είναι ένα σύνολο προϊόντων PaaS +(Platform-as-a-Service) (Πλατφόρμα ως Υπηρεσία), παρέχοντας μια πλατφόρμα με +μηχανισμούς για συναρμολόγηση, θέση σε λειτουργία, εκτέλεση, ενημέρωση και +διαχείριση προγραμμάτων σε μορφή δοχείων. Σε αντίθεση με το LXC, αποτελεί μια +μηχανή δοχείων υψηλού επιπέδου με κύριο στόχο την δοχειοποίηση εφαρμογών. Εκτός +από τον διαχωρισμό ανάμεσα στον πηγαίο κώδικα, τις βιβλιοθήκες και εξαρτήσεις +ενός λογισμικού από το κύριο σύστημα (φιλοξενίας), παρέχει και δυνατότητες +επικοινωνίας με αποθετήρια εικόνων δοχείωv, όπως είναι το Docker Hub +\footfullcite{dockerhub}, το επίσημο αποθετήριο του Docker, το Quay +\footfullcite{quay}, ένα εναλλακτικό αποθετήριο της Red Hat ή οποιοδήποτε άλλο +αποθετήριο συμβατό με τις προδιαγραφές που έχει ορίσει η OCI (Open Container +Initiative) \footfullcite{oci}. Μέσω τέτοιων υπηρεσιών, οι χρήστες έχουν +πρόσβαση και διαμοιράζονται χιλιάδες εικόνες δοχείων που τους επιτρέπουν να +ολοκληρώσουν διάφορα μέρη μιας υπάρχουσας ή νέας εφαρμογής. Επιπλέον, όντας μια +μηχανή δοχείων υψηλού επιπέδου όλες οι λειτουργίες που θα απαιτούσαν +εξειδικευμένες γνώσεις προκειμένου να πραγματοποιηθούν, έχουν συμπυκνωθεί σε +απλές εντολές καθιστώντας έτσι εύκολη την χρήση του για προγραμματιστές κάθε +επιπέδου και απλοποιώντας κατά πολύ την διαδικασία ανάπτυξης και παράδοσης +κατανεμημένων εφαρμογών. Προσφέροντας μια φιλική προς τον χρήστη διεπαφή, +έλεγχο εκδόσεων (version control) για δοχεία \cite{LXCvsDocker2} και ένα +οικοσύστημα γύρω από όλα αυτά, είναι εμφανής ο λόγος που κατάφερε να επισκιάσει +το LXC. \subsection{Χρήση δοχείων στην ανάπτυξη και παράδοση εφαρμογών} \label{containerUsage} Οι μέθοδοι ανάπτυξης και παράδοσης εφαρμογών έχουν αλλάξει δραματικά τα -τελευταία χρόνια. Από τις παραδοσιακές μεθόδους όπως το μοντέλο καταρράκτη -(waterfall) \footfullcite{waterfall} βάσει του οποίου υπήρχε ένα συγκεκριμένο +τελευταία χρόνια. Από τις παραδοσιακές μεθόδους, όπως το μοντέλο καταρράκτη +(waterfall) \cite{waterfall} βάσει του οποίου υπήρχε ένα συγκεκριμένο αμετάβλητο σχέδιο που καλούνταν να ακολουθήσει μια ομάδα ανάπτυξης λογισμικού, έχουμε φτάσει σε μια εποχή όπου οι απαιτήσεις της αγοράς αλλάζουν συνεχώς, με αποτέλεσμα να υπάρχει ανάγκη για καινούριες μεθόδους που να ανταποκρίνονται στις αλλαγές αυτές. Έτσι, έχουν δημιουργηθεί μεθοδολογίες όπως η Agile -\footfullcite{agile} κατά την οποία η ανάπτυξη και η παράδοση λογισμικού +\cite{agile} κατά την οποία η ανάπτυξη και η παράδοση λογισμικού πραγματοποιείται σε πολλές μικρές και ευμετάβλητες φάσεις προκειμένου να προσαρμόζεται στις αλλαγές που ενδέχεται να υπάρξουν στον αρχικό σχεδιασμό. Η -μεθοδολογία αυτή συνεργάζεται με πρακτικές όπως το DevOps \footfullcite{devops} -όπου οι ομάδες υπεύθυνες για την ανάπτυξη και λειτουργία μιας εφαρμογής -επικοινωνούν στενά με σκοπό να υπάρχει μια συνεχής ροή παραγωγής και παράδοσης -λογισμικού. Αυτό επιτυγχάνεται με μια υποκατηγορία του DevOps, το CI/CD -(Continuous Integration/Continuous Delivery) \footfullcite{cicd}. Κατά το -μοντέλο αυτό, δημιουργούνται αυτοματοποιημένες διαδικασίες που εκτελούνται κατά -την διάρκεια της ανάπτυξης και παράδοσης μιας εφαρμογής προκειμένου να -πραγματοποιείται έλεγχος της ποιότητας του κώδικα, να εντοπίζονται σφάλματα και -να παράγονται εκτελέσιμα πακέτα. +μεθοδολογία αυτή συνεργάζεται με πρακτικές όπως το DevOps \cite{devops} όπου οι +ομάδες υπεύθυνες για την ανάπτυξη και λειτουργία μιας εφαρμογής επικοινωνούν +στενά με σκοπό να υπάρχει μια συνεχής ροή παραγωγής και παράδοσης λογισμικού. +Αυτό επιτυγχάνεται με μια υποκατηγορία του DevOps, το CI/CD (Continuous +Integration/Continuous Delivery) (Συνεχής Ενοποίηση/Συνεχής Παράδοση) +\cite{cicd}. Κατά το μοντέλο αυτό, δημιουργούνται αυτοματοποιημένες διαδικασίες +που εκτελούνται κατά την διάρκεια της ανάπτυξης και παράδοσης μιας εφαρμογής +προκειμένου να πραγματοποιείται έλεγχος της ποιότητας του κώδικα, να +εντοπίζονται σφάλματα και να παράγονται εκτελέσιμα πακέτα. Τα δοχεία αποτελούν ιδανική επιλογή για την εφαρμογή των παραπάνω μεθοδολογιών και πρακτικών καθώς επιτρέπουν το γρήγορο και αποτελεσματικό πακετάρισμα @@ -384,19 +337,13 @@ Docker, το Quay \footfullcite{quay}, ένα εναλλακτικό αποθε μειώνει ιδιαίτερα το κόστος λειτουργίας και αυξάνει την κλιμακωσιμότητα. Επιπλέον, λόγω της ταχείας διάθεσης και εκτέλεσής τους, συμβαδίζουν πλήρως με τον ρυθμό ανάπτυξης και παράδοσης που υποστηρίζουν οι παραπάνω μεθοδολογίες. - Έχοντας αυτά υπόψιν, γίνεται εμφανής και ο λόγος που τα δοχεία είναι η προτιμότερη επιλογή για την ανάπτυξη και παράδοση εφαρμογών που ακολουθούν την -αρχιτεκτονική μικρο-υπηρεσιών. Σε αυτήν την περίπτωση, η εφαρμογή αποτελείται -από πολλά δοχεία όπου το κάθε ένα από αυτά είναι υπεύθυνο για μια συγκεκριμένη -λειτουργία της (μικρο-υπηρεσία). Τα δοχεία αυτά είναι ανεξάρτητα μεταξύ τους -και κατά την ανάγκη κλιμάκωσης μιας συγκεκριμένης λειτουργίας της εφαρμογής -αυτό μπορεί να επιτευχθεί δίχως την περιττή κλιμάκωση όλων των υπολοίπων. -Επιπρόσθετα, η ανεξαρτησία των δοχείων μεταξύ τους, καθιστά πιο σταθερή την -εφαρμογή αφού σε περίπτωση που κάποιο από αυτά αποτύχει, η υπόλοιπη εφαρμογή θα -συνεχίσει να λειτουργεί κανονικά και η ανακατασκευή του δοχείου που απέτυχε -μπορεί να επιτευχθεί εύκολα και γρήγορα με μια απλή τροποποίηση της εκάστοτε -εικόνας δοχείου. +αρχιτεκτονική μικρο-υπηρεσιών. Επιπρόσθετα, η ανεξαρτησία των δοχείων μεταξύ +τους, καθιστά πιο σταθερή την εφαρμογή αφού σε περίπτωση που κάποιο από αυτά +αποτύχει, η υπόλοιπη εφαρμογή θα συνεχίσει να λειτουργεί κανονικά και η +ανακατασκευή του δοχείου που απέτυχε μπορεί να επιτευχθεί εύκολα και γρήγορα με +μια απλή τροποποίηση της εκάστοτε εικόνας δοχείου. \subsection{Χρήσεις του Docker στο νέφος} \label{dockerInCloudComputing} @@ -404,30 +351,27 @@ Docker, το Quay \footfullcite{quay}, ένα εναλλακτικό αποθε τόσο για επιχειρήσεις που λειτουργούν αποκλειστικά με ενοικιαζόμενους υπολογιστικούς πόρους όσο και για αυτές που επιλέγουν να λειτουργούν με έναν συνδυασμό ενοικιαζόμενων και ιδιόκτητων φυσικών εγκαταστάσεων. Υπάρχουν δύο -βασικές περιπτώσεις χρήσης του Docker στο νέφος. Συγκεκριμένα αυτές είναι, η +βασικές περιπτώσεις χρήσης του Docker στο νέφος. Συγκεκριμένα αυτές είναι: η εγκατάσταση δοχείων σε εικονικές μηχανές και η εγκατάσταση δοχείων έμμεσα σε πόρους χωρίς την ανάγκη δημιουργίας εικονικής μηχανής. Η δεύτερη περίπτωση -χρήσης εντάσσεται στην κατηγορία υπηρεσιών CaaS (Container as a Service) όπως η -ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία -\footfullcite{caas} των υπηρεσιών IaaS (Infrastructure as a Service) όπου ένας -πάροχος νέφους αντί να παρέχει πρόσβαση σε υπολογιστικούς πόρους γενικού +χρήσης εντάσσεται στην κατηγορία υπηρεσιών CaaS \cite{caas} (Container as a +Service), όπως η ECS (Elastic Container Service) της Amazon. Μια υπηρεσία όπου +ένας πάροχος νέφους αντί να παρέχει πρόσβαση σε υπολογιστικούς πόρους γενικού σκοπού, παρέχει μια ευέλικτη υποδομή έτοιμη για την εκτέλεση δοχείων -\footfullcite{caasVsIaas}. +\cite{caasVsIaas}. -\clearpage - -Από τις δύο αυτές επιλογές, η πιο δημοφιλής είναι η πρώτη καθώς προσφέρει μια -ευελιξία ως προς την διαμόρφωση του περιβάλλοντος εκτέλεσης των δοχείων. Οι -χρήστες έχουν την δυνατότητα να ακολουθήσουν ορισμένες ορθές πρακτικές -ασφαλείας που μπορεί να έχουν θεσπιστεί στην εταιρεία τους, να εγκαταστήσουν -επιπλέον λογισμικό παρακολούθησης και ελέγχου ποιότητας των δοχείων και να -προσαρμόσουν το περιβάλλον εκτέλεσης των δοχείων στις ανάγκες τους. Επιπλέον, η -ύπαρξη μιας επιπλέον στρώσης απομόνωσης μεταξύ των δοχείων και του κύριου -συστήματος αποτελεί ένα επιπρόσθετο εμπόδιο σε περιπτώσεις που ένα δοχείο -βρεθεί σε κατάσταση παραβίασης. Το Docker επιτρέποντας μέσω των δοχείων την -περιορισμένη έκθεση των πόρων του συστήματος στον έξω κόσμο, καθιστά ευκολότερη -την ανίχνευση και απομόνωση των προβλημάτων ασφαλείας όπως επίσης και την -αποκατάσταση τους. +Από τις δύο αυτές επιλογές, η πρώτη προσφέρει μια ευελιξία ως προς την +διαμόρφωση του περιβάλλοντος εκτέλεσης των δοχείων. Οι χρήστες έχουν την +δυνατότητα να ακολουθήσουν ορισμένες ορθές πρακτικές ασφαλείας που μπορεί να +έχουν θεσπιστεί στην εταιρεία τους, να εγκαταστήσουν επιπλέον λογισμικό +παρακολούθησης και ελέγχου ποιότητας των δοχείων και να προσαρμόσουν το +περιβάλλον εκτέλεσης των δοχείων στις ανάγκες τους. Επιπλέον, η ύπαρξη μιας +επιπλέον στρώσης απομόνωσης μεταξύ των δοχείων και του κύριου συστήματος +αποτελεί ένα επιπρόσθετο εμπόδιο σε περιπτώσεις που ένα δοχείο βρεθεί σε +κατάσταση παραβίασης. Το Docker επιτρέποντας μέσω των δοχείων την περιορισμένη +έκθεση των πόρων του συστήματος στον έξω κόσμο, καθιστά ευκολότερη την +ανίχνευση και απομόνωση των προβλημάτων ασφαλείας, όπως επίσης και την +αποκατάστασή τους. Από την άλλη, η δεύτερη περίπτωση χρήσης επιτρέπει στους χρήστες να επικεντρωθούν στην ανάπτυξη των δοχειοποιημένων εφαρμογών και να αφήσουν την @@ -436,36 +380,34 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία ή δεν είναι σε θέση να διαθέσουν τον απαιτούμενο χρόνο για αυτό. Η χρήση υπηρεσιών CaaS αυτομάτως εξασφαλίζει στους χρήστες τα πλεονεκτήματα των υπηρεσιών IaaS όπως η κλιμάκωση, η αντοχή σε αποτυχίες και η ευελιξία, ενώ -ταυτόχρονα προσφέρει και τα πλεονεκτήματα των δοχείων όπως η ταχεία διάθεση και -απόσυρσή τους αλλά και η υψηλή τους απόδοση κατά την εκτέλεση. Συγκεκριμένα, -μέσω των υπηρεσιών CaaS, οι χρήστες διαθέτουν δυνατότητες ενορχήστρωσης δοχείων -\footfullcite{howCaasWorks} χωρίς την ανάγκη χειροκίνητου στησίματος πλατφορμών -όπως το Kubernetes \footfullcite{kubernetes} και το Docker Swarm -\footfullcite{dockerSwarm}. - -\clearpage +ταυτόχρονα προσφέρει και τα πλεονεκτήματα των δοχείων, όπως η ταχεία διάθεση +και απόσυρσή τους αλλά και η υψηλή τους απόδοση κατά την εκτέλεση. +Συγκεκριμένα, μέσω των υπηρεσιών CaaS, οι χρήστες διαθέτουν δυνατότητες +ενορχήστρωσης δοχείων \cite{howCaasWorks} χωρίς την ανάγκη χειροκίνητου +στησίματος πλατφορμών αυτού του είδους όπως είναι το Kubernetes +\cite{kubernetes} και το Docker Swarm \cite{dockerSwarm}. Σε κάθε περίπτωση, λόγω των πλεονεκτημάτων που παρέχει η χρήση δοχείων, είναι πολύ συνήθης η θέση σε λειτουργία, εφαρμογών μέσω Docker σε περιβάλλοντα νέφους επειδή απομονώνει τις αναγκαίες βιβλιοθήκες και εξαρτήσεις τους από το υπόλοιπο σύστημα και επιτρέπει την αποδοτικότερη διαχείριση των εφαρμογών αυτών μέσω της διεπαφής του με εντολές για εκκίνηση, επιτήρηση πόρων, παύση και άλλες -λειτουργίες. Τα προβλήματα που μπορεί να προέκυπταν σε ένα περιβάλλον ανάπτυξης -όπως μη συμβατές εκδόσεις προγραμμάτων και δυσκολία διαχείρισής τους -εξαλείφονται με την χρήση δοχείων αφήνοντας το Docker να εγκαθιδρύσει έναν -συστημικό τρόπο διανομής και ελέγχου εφαρμογών. Επιπροσθέτως, καθιστά πολύ +λειτουργίες. Τα προβλήματα που μπορεί να προέκυπταν σε ένα περιβάλλον +ανάπτυξης, όπως μη συμβατές εκδόσεις προγραμμάτων και δυσκολία διαχείρισής +τους, εξαλείφονται με την χρήση δοχείων αφήνοντας το Docker να εγκαθιδρύσει +έναν συστημικό τρόπο διανομής και ελέγχου εφαρμογών. Επιπροσθέτως, καθιστά πολύ εύκολη τη μεταφορά τους σε οποιοδήποτε μηχάνημα (εφόσον αυτό υποστηρίζει την εκτέλεση της μηχανής δοχείων του Docker) ή ακόμα και νέφος, θέτοντας το κορυφαία επιλογή για επιχειρήσεις που επιλέγουν να ακολουθήσουν την στρατηγική πολλαπλών νεφών (multi-cloud computing) κατά την κατασκευή εφαρμογών. Δηλαδή να μην βασίζονται αποκλειστικά σε έναν πάροχο νέφους για όλες τις λειτουργίες μιας -εφαρμογής \footfullcite{multiCloud} αλλά να εκμεταλλεύονται οφέλη από πολλούς -παρόχους με βάση τις ανάγκες τους. +εφαρμογής \cite{multiCloud} αλλά να εκμεταλλεύονται οφέλη από πολλούς παρόχους +με βάση τις ανάγκες τους. \section{Ασφάλεια του συστήματος κατά τη χρήση του Docker} \label{dockerSecurity} Μία από τις πιο σημαντικές προκλήσεις των επιχειρήσεων κατά την διάθεση -υπηρεσιών είναι η επίτευξη και διατήρηση της ασφάλειας. Παραδοσιακά κατά την +υπηρεσιών είναι η επίτευξη και διατήρηση της ασφάλειας. Παραδοσιακά, κατά την επιλογή χρήσης τεχνολογιών εικονικοποίησης, ανάμεσα στις επιλογές εικονικοποίησης υλικού και εικονικοποίησης ΛΣ είθισται να προτιμάται η δεύτερη. Μια λογική απόφαση εάν αναλογιστεί κανείς τα πλεονεκτήματα που προσφέρει τόσο @@ -474,49 +416,48 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία αυτά, η επιλογή αυτή είναι και λιγότερο ασφαλής στην περίπτωση που αφεθεί στις αρχικές ρυθμίσεις. -\clearpage - Για τον λόγο αυτό, εάν η μέγιστη δυνατή απόδοση δεν είναι μια από τις κύριες προτεραιότητες της επιχείρησης, προκειμένου να αυξηθεί η ασφάλεια του συστήματος διατηρώντας τα πλεονεκτήματα του Docker όσον αφορά την μεταφερσιμότητα και την απαλλαγή από τις εξαρτήσεις του εκάστοτε προγράμματος ακόμα και χωρίς την περαιτέρω διαμόρφωση των ρυθμίσεών του, η προτεινόμενη -χρήση είναι η εκτέλεσή του μέσω μιας εικονικής μηχανής. Η στρώση απομόνωσης -μέσω της εικονικοποίησης υλικού ανάμεσα στα προγράμματα και το μηχάνημα στο -οποίο εκτελούνται αποτελεί ένα παραπάνω εμπόδιο που θα πρέπει να ξεπεράσει ένας -επιτιθέμενος για να προκαλέσει ζημιές στο κύριο σύστημα, αφού θα πρέπει πρώτα -να περάσει από τον εικονικό πυρήνα και έπειτα από τον υπερ-επόπτη. Παράλληλα, ο -συνδυασμός με την αρχιτεκτονική δοχείων παρέχει ένα επιπρόσθετο επίπεδο -απομόνωσης εφόσον στην προκειμένη περίπτωση η άμεση επικοινωνία με τον πυρήνα -του συστήματος αφορά το φιλοξενούμενο ΛΣ και όχι το κύριο σύστημα. +χρήση είναι η εκτέλεσή του μέσω μιας εικονικής μηχανής. Σε περιπτώσεις +ιδιόκτητης υποδομής, η στρώση απομόνωσης μέσω της εικονικοποίησης υλικού +ανάμεσα στα προγράμματα και το μηχάνημα στο οποίο εκτελούνται αποτελεί ένα +παραπάνω εμπόδιο που θα πρέπει να ξεπεράσει ένας επιτιθέμενος για να προκαλέσει +ζημιές στο κύριο σύστημα, αφού θα πρέπει πρώτα να περάσει από τον εικονικό +πυρήνα και έπειτα από τον υπερ-επόπτη. Παράλληλα, ο συνδυασμός με την +αρχιτεκτονική δοχείων παρέχει ένα επιπρόσθετο επίπεδο απομόνωσης εφόσον στην +προκειμένη περίπτωση η άμεση επικοινωνία με τον πυρήνα του συστήματος αφορά το +φιλοξενούμενο ΛΣ και όχι το κύριο σύστημα. Παρ' όλα αυτά, υπάρχουν περιπτώσεις όπου η απόδοση του συστήματος δεν δύναται να θυσιαστεί για χάρη της ασφάλειας. Σε αυτές τις περιπτώσεις, επιβάλλεται η τροποποίηση των ρυθμίσεων και του τρόπου λειτουργίας του Docker ώστε να μπορέσει να επιτευχθεί μια ικανοποιητική ισορροπία μεταξύ της ασφάλειας και της απόδοσης του συστήματος. Με βάση μια έρευνα που πραγματοποιήθηκε από την IBM -σχετικά με την ασφάλεια των δοχείων \footfullcite{containerSecurity}, βρέθηκε -πως ένα ορθώς ασφαλισμένο δοχείο μπορεί να παρέχει το ίδιο επίπεδο ασφάλειας με -μια εικονική μηχανή ή ακόμα και μεγαλύτερο. Συγκεκριμένα, στην έρευνα αυτή +σχετικά με την ασφάλεια των δοχείων \cite{containerSecurity}, βρέθηκε πως ένα +ορθώς ασφαλισμένο δοχείο μπορεί να παρέχει το ίδιο επίπεδο ασφάλειας με μια +εικονική μηχανή ή ακόμα και μεγαλύτερο. Συγκεκριμένα, στην έρευνα αυτή αναφέρεται πως προκειμένου να ποσοτικοποιηθεί η ασφάλεια των δοχείων θα πρέπει να ληφθεί υπόψιν το ποσοστό των υποδομών που βρίσκεται υπό την ευθύνη του χρήστη και να θεωρηθεί δεδομένο πως οι πάροχοι νέφους θα ακολουθήσουν όλες τις ορθές πρακτικές ασφαλείας για να προστατεύσουν το κομμάτι των υποδομών που τους αντιστοιχεί. Σε αυτήν την περίπτωση, εάν ο χρήστης χρησιμοποιεί υπηρεσίες CaaS, -τότε είναι υπεύθυνος για περίπου το ίδιο ποσοστό υποδομών με τον πάροχο και -επωφελείται άμεσα από τις προσπάθειες ασφάλισης του παρόχου για το ποσοστό του. -Επομένως, συμπεραίνεται πως από την οπτική γωνία του τελικού χρήστη είναι πιο -ασφαλές να χρησιμοποιήσει τεχνολογίες εικονικοποίησης ΛΣ μέσω ενός παρόχου -νέφους για την παροχή των υπηρεσιών του -\footfullcite{containerSecurityExplained}. +τότε είναι υπεύθυνος για την ασφάλιση πολύ μικρότερου ποσοστού επιφάνειας +επίθεσης συγκριτικά με τον πάροχο και επωφελείται άμεσα από τις προσπάθειες +ασφάλισης του παρόχου για το ποσοστό του. Επομένως, συμπεραίνεται πως από την +οπτική γωνία του τελικού χρήστη είναι πιο ασφαλές να χρησιμοποιήσει τεχνολογίες +εικονικοποίησης ΛΣ μέσω ενός παρόχου νέφους για την παροχή των υπηρεσιών του +\cite{containerSecurityExplained}. \subsection{Πλεονεκτήματα ασφαλείας με τη χρήση του Docker} \label{dockerSecurityAdvatnages} Με τη χρήση της αρχιτεκτονικής δοχείων και ειδικότερα του Docker, έρχονται -αρκετά εγγενή οφέλη ασφαλείας \footfullcite{dockerInherentSecurity}. Ένα βασικό -όφελος αποτελεί η διαφάνεια. Λόγω της φύσης τους, τα δοχεία επιτρέπουν την -ακριβή κατανόηση του κώδικα που εκτελείται μέσα σε αυτά, σε αντίθεση με την -περίπτωση χρήσης αποκλειστικά εικονικών μηχανών. Επιπρόσθετα, κατά την εμφάνιση +αρκετά εγγενή οφέλη ασφαλείας \cite{dockerInherentSecurity}. Ένα βασικό όφελος +αποτελεί η διαφάνεια. Λόγω της φύσης τους, τα δοχεία επιτρέπουν την ακριβή +κατανόηση του κώδικα που εκτελείται μέσα σε αυτά, σε αντίθεση με την περίπτωση +χρήσης αποκλειστικά εικονικών μηχανών. Επιπρόσθετα, κατά την εμφάνιση προβλημάτων σε μία υπηρεσία με αρχιτεκτονική μικρο-υπηρεσιών που κάνει χρήση δοχείων, είναι διακριτή η διευκόλυνση στον εντοπισμό της πηγής τους. @@ -540,27 +481,26 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία θα μπορούσαν να επιφέρουν τυχόν ενημερώσεις των εξαρτήσεων της εφαρμογής χωρίς την ταυτόχρονη ενημέρωση της εφαρμογής της ίδιας. -\clearpage - \subsection{Μειονεκτήματα ασφαλείας με τη χρήση του Docker} \label{dockerSecurityDisadvantages} -Παρ' όλα τα προαναφερόμενα πλεονεκτήματα του Docker όπως η δυνατότητα απαλλαγής -από εξαρτήσεις του εκάστοτε συστήματος και η ευελιξία διαχείρισης των δοχείων -του, αυτό υπόκειται σε αρκετές ατασθαλίες σε σχέση με την ασφάλεια. Οι πιο +Παρ' όλα τα προαναφερόμενα πλεονεκτήματα του Docker, όπως η δυνατότητα +απαλλαγής από εξαρτήσεις του εκάστοτε συστήματος και η ευελιξία διαχείρισης των +δοχείων του, αυτό εμφανίζει αρκετές τρωτότητες σε σχέση με την ασφάλεια. Οι πιο αξιοσημείωτες από αυτές είναι η ανάγκη εκτέλεσης του Docker με διαχειριστικά δικαιώματα και η αρχικά ελαστικότερη απ' ό,τι χρειάζεται απομόνωσή του από τον πυρήνα του συστήματος. Ο άμεσος αντίκτυπος των παραπάνω είναι πως τα δοχεία είναι πιο ευάλωτα από άλλες τεχνολογίες σε επιθέσεις τύπου άρνησης υπηρεσιών και σε επιθέσεις που εκμεταλλεύονται ευπάθειες του πυρήνα με σκοπό να ξεφύγουν -από το δοχείο και να αποκτήσουν πρόσβαση στο κύριο σύστημα (Container Escape -\footfullcite{containerEscapeTechniques}). +από το δοχείο και να αποκτήσουν πρόσβαση στο κύριο σύστημα μέσω αυτού +(Container Escape \cite{containerEscapeTechniques}). Το γεγονός που αυξάνει τον κίνδυνο κατά την διάρκεια μιας επίθεσης τύπου -άρνησης υπηρεσιών είναι πως σε αντίθεση με μια εικονική μηχανή όπου επιλέγεται +άρνησης υπηρεσιών είναι πως σε αντίθεση με μια εικονική μηχανή, όπου επιλέγεται το εύρος πρόσβασης στους πόρους του συστήματος κατά τη δημιουργία της, η αρχική ρύθμιση του Docker επιτρέπει στα δοχεία να χρησιμοποιήσουν το ίδιο ποσοστό -πόρων με το κύριο σύστημα, δηλαδή δεν υπάρχουν περιορισμοί. Επομένως, εάν ένα -δοχείο βρεθεί υπό τον έλεγχο ενός επιτιθέμενου, αυτό μπορεί δυνητικά να +πόρων με το κύριο σύστημα, δηλαδή δεν υπάρχουν περιορισμοί. Επομένως, +ανεξαρτήτως του αν ένα δοχείο βρεθεί υπό τον έλεγχο ενός επιτιθέμενου ή αυτός +απλά κατευθύνει πολλά αιτήματα προς αυτό εξωτερικά, αυτό μπορεί δυνητικά να εμποδίσει την εκτέλεση άλλων δοχείων ή ακόμα και την εκτέλεση άλλων εφαρμογών που εκτελούνται στο σύστημα. @@ -570,12 +510,9 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία απευθείας επικοινωνίας τους με τον πυρήνα του συστήματος, τα δοχεία είναι άμεσα ευεπηρέαστα από ευπάθειες του πυρήνα. Συνεπώς, ένας επιτιθέμενος που στοχεύει ένα δοχείο μπορεί να εκμεταλλευτεί μια ευπάθεια του πυρήνα προκειμένου να -αποκτήσει πρόσβαση στο κύριο σύστημα και εφόσον η εκτέλεση του Docker γίνεται -με διαχειριστικά δικαιώματα, μετά από μια επιτυχημένη επίθεση Container Escape -θα έχει διαχειριστικά δικαιώματα και ο ίδιος -\footfullcite{containerEscapeRepercussions}. - -\clearpage +αποκτήσει πρόσβαση στο κύριο σύστημα - εφόσον η εκτέλεση του Docker γίνεται με +διαχειριστικά δικαιώματα, μετά από μια επιτυχημένη επίθεση Container Escape θα +έχει διαχειριστικά δικαιώματα και ο ίδιος \cite{containerEscapeRepercussions}. \subsection{Ξεπερνώντας τα μειονεκτήματα ασφαλείας του Docker} \label{overcomingDockerDisadvantages} @@ -585,54 +522,71 @@ AppArmor ή κανόνων SELinux προκειμένου να απομονωθ σύστημα. Στην πραγματικότητα, αυτές οι πρακτικές λαμβάνουν υπόψιν τους κυρίως τα δοχεία και όχι τη μηχανή δοχείων καθ' αυτού. Γι' αυτό τον λόγο, πολλές φορές πρέπει να ακολουθούνται και καλύτερες πρακτικές κατά τη λειτουργία/χρήση του -Docker, όπως η αποφυγή χρήσης του διαχειριστικού λογαριασμού (σε διεργασίες) -όσον αφορά τα δοχεία και η αποφυγή λήψης δοχείων από μη έμπιστες πηγές. Υπάρχει -επομένως ανάγκη δημιουργίας ενός εργαλείου που αυτοματοποιημένα μπορεί να -δημιουργεί ασφαλή εικονικοποιημένα περιβάλλοντα, καθώς και να εγκαθιστά σε -αυτά, με βάση τις προαναφερόμενες οδηγίες προστασίας του Docker και των δοχείων -του, μια σκληρυμένη έκδοση του Docker. +Docker, όπως η σκλήρυνσή του, η αποφυγή χρήσης του διαχειριστικού λογαριασμού +(σε διεργασίες) όσον αφορά τα δοχεία και η αποφυγή λήψης δοχείων από μη +έμπιστες πηγές. Υπάρχει επομένως ανάγκη δημιουργίας ενός εργαλείου που +αυτοματοποιημένα μπορεί να δημιουργεί ασφαλή εικονικοποιημένα περιβάλλοντα, +καθώς και να εγκαθιστά σε αυτά, με βάση τις προαναφερόμενες οδηγίες προστασίας +του Docker και των δοχείων του, μια σκληρυμένη έκδοση του Docker. -Με τη χρήση του εργαλείου SecDep που θα περιγράψουμε παρακάτω στο κεφάλαιο +Με τη χρήση του εργαλείου SecDep που αναπτύχθηκε στα πλαίσια της παρούσας +διπλωματικής εργασίας, το οποίο θα περιγράψουμε παρακάτω στο Κεφάλαιο \ref{installationANDShowcase}, θα επιτευχθεί η ασφάλιση του Docker και του συστήματος με αυτοματοποιημένο τρόπο ακολουθώντας ορθές πρακτικές, χρησιμοποιώντας ένα ασφαλέστερο από το αρχικό Container Runtime και εκτελώντας το Docker εξ ολοκλήρου χωρίς την ανάγκη διαχειριστικών δικαιωμάτων. Το εργαλείο -αυτό επικοινωνεί με πολλούς παρόχους νέφους στέλνοντας τους παραμέτρους για τις -προδιαγραφές εικονικών μηχανών προκειμένου να μπορέσουν να δημιουργηθούν -αυτόματα, επιτρέποντας έτσι την δημιουργία πολλαπλών ασφαλών περιβαλλόντων ώστε -να μπορεί ένας χρήστης να εγκαθιστά εκεί τα δοχεία της εφαρμογής του. Η +αυτό εστιάζει στην χρήση εικονικοποιημένων περιβαλλόντων, μιας και παρέχουν +περισσότερα επίπεδα προς διείσδυση για έναν επιτιθέμενο, εμποδίζοντάς τον στην +επίτευξη του στόχου αυτού. Επικοινωνεί με πολλούς παρόχους νέφους στέλνοντάς +τους παραμέτρους για τις προδιαγραφές εικονικών μηχανών προκειμένου να +μπορέσουν να δημιουργηθούν αυτόματα. Με αυτόν τον τρόπο, επιτρέπει την +δημιουργία πολλαπλών ασφαλών περιβαλλόντων ώστε να μπορεί ένας χρήστης να +εγκαθιστά εκεί τα δοχεία της εφαρμογής του. Με την εφαρμογή των κατάλληλων +μέτρων και πρακτικών ασφαλείας σε κάθε επίπεδο, τα περιβάλλοντα αυτά +σκληρύνονται, μικραίνοντας με αυτό τον τρόπο την πιθανότητα διείσδυσης. Η σκλήρυνση του ΛΣ επιτυγχάνεται με την εκτέλεση πολλών βημάτων στα οποία μεταξύ άλλων περιλαμβάνεται η σκλήρυνση του SSH, ο εντοπισμός, η εγκατάσταση, η -ρύθμιση και η ενεργοποίηση του κατάλληλου προγράμματος για ανάχωμα ασφαλείας -και για παροχή MAC (Mandatory Access Control) και η δημιουργία και ενεργοποίηση -περιοδικά εκτελέσιμων προγραμμάτων για την ενημέρωση του συστήματος και το -άνοιγμα/κλείσιμο θυρών προγραμμάτων. Η απεξάρτηση από τον διαχειριστικό -λογαριασμό επιτυγχάνεται χάρη στη δουλειά του Akihiro Suda πάνω στο rootlesskit -\footfullcite{AkihiroSuda}, επιτρέποντας έτσι την χρήση ενός πλαστού -διαχειριστικού λογαριασμού προκειμένου να μπορέσει η μηχανή δοχείων να -εκτελεστεί υπό την κυριότητα οποιουδήποτε χρήστη του συστήματος. Τέλος, η -αντικατάσταση του αρχικού Container Runtime με το αντίστοιχο του gVisor -\footfullcite{gVisor}, εισάγει ένα πιο συμπαγές τείχος προστασίας απέναντι σε -συνηθισμένες επιθέσεις κατά των δοχείων, καθιστώντας το σύστημα μας πιο ασφαλές -συγκριτικά με τις αρχικές/προκαθορισμένες ρυθμίσεις. +ρύθμιση και η ενεργοποίηση των κατάλληλων για την εκάστοτε διανομή, +προγραμμάτων για ανάχωμα ασφαλείας και για παροχή MAC (Mandatory Access +Control) και η δημιουργία και ενεργοποίηση περιοδικά εκτελέσιμων προγραμμάτων +για την ενημέρωση του συστήματος και το άνοιγμα/κλείσιμο θυρών προγραμμάτων. Η +απεξάρτηση από τον διαχειριστικό λογαριασμό επιτυγχάνεται χάρη στη δουλειά του +Akihiro Suda πάνω στο rootlesskit \footfullcite{AkihiroSuda}, επιτρέποντας έτσι +την χρήση ενός πλαστού διαχειριστικού λογαριασμού προκειμένου να μπορέσει η +μηχανή δοχείων να εκτελεστεί υπό την κυριότητα οποιουδήποτε χρήστη του +συστήματος. Τέλος, η αντικατάσταση του αρχικού Container Runtime με το +αντίστοιχο του gVisor \footfullcite{gVisor}, εισάγει ένα πιο συμπαγές τείχος +προστασίας απέναντι σε συνηθισμένες επιθέσεις κατά των δοχείων, καθιστώντας το +σύστημα μας πιο ασφαλές συγκριτικά με τις αρχικές/προκαθορισμένες ρυθμίσεις. + +Η χρήση του εργαλείου έρχεται με πολλά πλεονεκτήματα για τον χρήστη. Κατ' +αρχήν, το εργαλείο είναι εύκολο στη χρήση και στην εγκατάσταση, καθώς παρέχει +πλούσια τεκμηρίωση και οδηγίες εγκατάστασης στο αποθετήριό του. Απαιτούνται +ελάχιστες γνώσεις στον τομέα των τεχνολογιών νέφους από τον χρήστη. Επιπλέον, +είναι ευέλικτο και επεκτάσιμο διότι αποτελείται από δύο εκτελέσιμα προγράμματα +τα οποία μπορεί κάθε χρήστης να τροποποιήσει και να προσθέσει τις δικές του +λειτουργίες. Τέλος, οι παράμετροι του είναι εύκολα κατανοητές και προσαρμόσιμες +στις ανάγκες του χρήστη. Επομένως, το εργαλείο αυτό αποτελεί ένα κατάλληλο μέσο +για την δημιουργία, διαχείριση και ασφάλιση περιβαλλόντων εφαρμογών που +εκτελούνται σε δοχεία. \clearpage \section{Δομή Εργασίας} \label{structure} -Η υπόλοιπη δομή της αναφοράς είναι η εξής. Στο κεφάλαιο \ref{background} θα -μελετήσουμε τον όρο νεφο-υπολογιστική, θα αναλύσουμε τις διάφορες τεχνολογίες -εικονικοποίησης και θα εμβαθύνουμε στην τεχνολογία των δοχείων με επίκεντρο την -ασφάλεια του Docker. Στο επόμενο κεφάλαιο (δηλαδή το \ref{relevantWork}), θα -δούμε εργασίες σχετικές με την παρούσα και θα πραγματοποιηθεί ανάλυση και -σύγκριση αυτών με την προτεινόμενη εργασία της διπλωματικής. Αμέσως μετά, στο -κεφάλαιο \ref{projectDevelopment}, αναφερόμαστε στην ανάπτυξη του προτεινόμενου -εργαλείου και τα παράγωγά της (απαιτήσεις, σχεδιαστικά μοντέλα, κώδικα -υλοποίησης κα.). Προχωρώντας στο κεφάλαιο \ref{installationANDShowcase}, θα -αναφερθούμε στις οδηγίες εγκατάστασης και λειτουργίας του εργαλείου με βάση -στοχευμένα σενάρια χρήσης. Έπειτα, στο κεφάλαιο \ref{experimentationANDresults} -αποτιμάται η αποδοτικότητα του εργαλείου κατά την πραγματική χρήση του -προκειμένου να εξετασθεί με πρακτικό τρόπο η ικανότητα εξασφάλισης των στόχων -του. Τέλος, στο κεφάλαιο \ref{conclusions}, αναφέρονται δυνητικές επεκτάσεις -και βελτιώσεις του προτεινόμενου εργαλείου προκειμένου αυτό να μπορέσει να -πάρει μια θέση στην αγορά. +Η υπόλοιπη δομή της αναφοράς είναι η εξής. Στο Κεφάλαιο \ref{background}, θα +αναλύσουμε τις διάφορες τεχνολογίες εικονικοποίησης και θα εμβαθύνουμε στην +τεχνολογία των δοχείων με επίκεντρο την ασφάλεια του Docker. Στο επόμενο +κεφάλαιο (δηλαδή το \ref{relevantWork}), θα δούμε εργασίες σχετικές με την +παρούσα και θα πραγματοποιηθεί ανάλυση και σύγκριση αυτών με την προτεινόμενη +εργασία της διπλωματικής. Αμέσως μετά, στο Κεφάλαιο \ref{projectDevelopment}, +αναφερόμαστε στην διαδικασία ανάπτυξης του προτεινόμενου εργαλείου και τα +παράγωγά της (απαιτήσεις, σχεδιαστικά μοντέλα, κώδικας υλοποίησης κα.). +Προχωρώντας στο Κεφάλαιο \ref{installationANDShowcase}, θα αναφερθούμε στις +οδηγίες εγκατάστασης και λειτουργίας του εργαλείου με βάση στοχευμένα σενάρια +χρήσης. Έπειτα, στο Κεφάλαιο \ref{experimentationANDresults} αποτιμάται η +αποδοτικότητα του εργαλείου κατά την πραγματική χρήση του προκειμένου να +εξετασθεί με πρακτικό τρόπο η ικανότητα εξασφάλισης των στόχων του. Τέλος, στο +Κεφάλαιο \ref{conclusions}, αναφέρονται δυνητικές επεκτάσεις και βελτιώσεις του +προτεινόμενου εργαλείου προκειμένου αυτό να μπορέσει να πάρει μια θέση στην +αγορά. diff --git a/Chapters/2.Background.tex b/Chapters/2.Background.tex index 4ada6cc..a43ebfd 100644 --- a/Chapters/2.Background.tex +++ b/Chapters/2.Background.tex @@ -1,11 +1,11 @@ \chapter{Υπόβαθρο} \label{background} -\hyphenation{πολλές μελών/οργανισμών} +\hyphenation{πολλές μελών/οργανισμών ανάπτυξης} \noindent Προκειμένου να κατανοήσουμε πλήρως το πρόβλημα που επιλύει η παρούσα εργασία πρέπει να αναλύσουμε μερικές βασικές έννοιες. Αρχικά, θα δούμε τι είναι το υπολογιστικό νέφος, τι μας προσφέρει και ποια μοντέλα παράδοσης παρέχονται -μέσω αυτού. Έπειτα θα συζητήσουμε την έννοια της εικονικοποίησης και τις +μέσω αυτού. Έπειτα, θα συζητήσουμε την έννοια της εικονικοποίησης και τις διάφορες υποκατηγορίες της που χρησιμοποιούνται στις μέρες μας. Αμέσως μετά, θα αναλυθούν τα πλεονεκτήματα της εικονικοποίησης και θα αναδειχθεί ο λόγος που προτιμάται η εικονικοποίηση του λειτουργικού συστήματος (δηλ. η χρήση @@ -19,30 +19,33 @@ Με τον όρο νεφο-υπολογιστική (Cloud Computing), αναφερόμαστε σε ένα μοντέλο παράδοσης υπολογιστικών πόρων κατά παραγγελία από μια επιχείρηση προς τους καταναλωτές της. Οι υπηρεσίες που προσφέρει ένα υπολογιστικό νέφος χωρίζονται -σε τρεις κατηγορίες. Η πρώτη, SaaS (Software as a Service) (Λογισμικό ως -Υπηρεσία), αναφέρεται στην απομακρυσμένη διάθεση λογισμικού, του οποίου η -συμμόρφωση με τις λειτουργικές και μη λειτουργικές του απαιτήσεις αποτελεί -ευθύνη του παρόχου του. Η κατηγορία PaaS (Platform as a Service) ορίζεται ως η -διάθεση πλατφόρμας με την οποία μια ομάδα έργου μπορεί να αναπτύξει συνεργατικά -και να εκτελέσει λογισμικό. Τέλος, η κατηγορία IaaS (Infrastructure as a -Service) μεταφράζεται ως προσφορά απομακρυσμένων (εικονικών και φυσικών) -διακομιστών τους οποίους μια επιχείρηση μπορεί να αξιοποιήσει αναλόγως τις -ανάγκες της (πχ. ως προς την φιλοξενία κατάλληλων φόρτων εργασίας) ακολουθώντας -φυσικά τους όρους και προϋποθέσεις του παρόχου. Τα πλεονεκτήματα που παρέχει η -νεφο-υπολογιστική σε σχέση με την παραδοσιακή μέθοδο διάθεσης υπηρεσιών είναι -αρκετά αλλά αυτά που ξεχωρίζουν από μεριάς των πελατών είναι η απόλυτη απαλλαγή -ευθύνης των υποδομών νέφους, η απαράμιλλη ταχύτητα διάθεσης και κλιμάκωσης των -υπηρεσιών και η εξάλειψη περιττού κόστους λόγω του ευέλικτου μοντέλου χρέωσης -όπου προσμετρώνται μόνο οι πόροι που χρησιμοποιήθηκαν. +σε τρεις κατηγορίες - αυτές οι κατηγορίες αναφέρονται και ως μοντέλα παράδοσης +του νέφους. Η πρώτη, SaaS (Software as a Service) (Λογισμικό ως Υπηρεσία), +αναφέρεται στην απομακρυσμένη διάθεση λογισμικού, του οποίου η συμμόρφωση με +τις λειτουργικές και μη λειτουργικές του ικανότητες που διαφημίζονται προς τους +πελάτες αποτελεί ευθύνη του παρόχου του. Η κατηγορία PaaS (Platform as a +Service) (Πλατφόρμα ως Υπηρεσία) ορίζεται ως η διάθεση πλατφόρμας με την οποία +μια ομάδα έργου μπορεί να αναπτύξει συνεργατικά και να εκτελέσει λογισμικό. +Τέλος, η κατηγορία IaaS (Infrastructure as a Service) μεταφράζεται ως η +προσφορά απομακρυσμένων (εικονικών και φυσικών) διακομιστών τους οποίους μια +επιχείρηση μπορεί να αξιοποιήσει αναλόγως τις ανάγκες της (πχ. ως προς την +φιλοξενία κατάλληλων φόρτων εργασίας) ακολουθώντας φυσικά τους όρους και +προϋποθέσεις του παρόχου. Τα πλεονεκτήματα που παρέχει η νεφο-υπολογιστική σε +σχέση με την παραδοσιακή μέθοδο διάθεσης υπηρεσιών είναι αρκετά αλλά αυτά που +ξεχωρίζουν από μεριάς των πελατών είναι η απόλυτη απαλλαγή ευθύνης των υποδομών +νέφους, η απαράμιλλη ταχύτητα διάθεσης και κλιμάκωσης των υπηρεσιών και η +εξάλειψη περιττού κόστους λόγω του ευέλικτου μοντέλου χρέωσης όπου +προσμετρώνται μόνο οι πόροι που χρησιμοποιήθηκαν. Σημαντικό ρόλο στην ευρεία αποδοχή των υπηρεσιών που προσφέρονται μέσω της νεφο-υπολογιστικής είχε η ευκολία αλλά και ευελιξία των μεθόδων διάθεσης και -μετέπειτα διαχείρισής τους. Σε κάθε περίπτωση γίνεται χρήση ενός API το οποίο -είναι προσπελάσιμο έμμεσα μέσω ενός γραφικού περιβάλλοντος (self-service -portal), εργαλείου γραμμής εντολών ή άμεσα με προγραμματιστικό τρόπο (πχ. με τη -χρήση SDKs (Software Development Kits)). +μετέπειτα διαχείρισής τους. Σε κάθε περίπτωση γίνεται χρήση ενός API +(Application Programming Interface) (Προγραμματιστική Διεπαφή Εφαρμογής) το +οποίο είναι προσπελάσιμο έμμεσα μέσω ενός γραφικού περιβάλλοντος (self-service +portal), ενός εργαλείου γραμμής εντολών ή άμεσα με προγραμματιστικό τρόπο (πχ. +με τη χρήση SDKs (Software Development Kits)). -\section{Ορισμός Νεφο-Υπολογιστικής} \label{cloudComputingDefinition} +\subsection{Ορισμός Νεφο-Υπολογιστικής} \label{cloudComputingDefinition} Σύμφωνα με το \citetitle{mell2011nist} \cite{mell2011nist}, η νεφο-υπολογιστική είναι ένα μοντέλο που επιτρέπει την ανά πάσα στιγμή διαδικτυακή πρόσβαση σε μια @@ -51,9 +54,9 @@ portal), εργαλείου γραμμής εντολών ή άμεσα με π αλληλεπίδρασης με τον πάροχο υπηρεσιών. Στους υπολογιστικούς αυτούς πόρους περιλαμβάνονται δίκτυα, διακομιστές, χώρος αποθήκευσης, εφαρμογές και υπηρεσίες. Αυτό το μοντέλο νέφους αποτελείται από πέντε βασικά χαρακτηριστικά, -τρία μοντέλα υπηρεσιών και τέσσερα μοντέλα ανάπτυξης. +τρία μοντέλα υπηρεσιών (ή μοντέλα παράδοσης) και τέσσερα μοντέλα ανάπτυξης. -\subsection{Χαρακτηριστικά} \label{cloucComputingCharacteristics} +\subsubsection{Χαρακτηριστικά} \label{cloucComputingCharacteristics} Τα πέντε βασικά χαρακτηριστικά της νεφο-υπολογιστικής με βάση τους \textcite{mell2011nist} είναι τα εξής: @@ -80,13 +83,13 @@ portal), εργαλείου γραμμής εντολών ή άμεσα με π Οι υπολογιστικοί πόροι του παρόχου είναι σχεδιασμένοι με τέτοιο τρόπο ώστε να μπορούν να εξυπηρετήσουν πολλούς καταναλωτές έκαστος, - χρησιμοποιώντας ένα μοντέλο πολλαπλής μίσθωσης με διαφορετικούς - φυσικούς και εικονικούς πόρους που εκχωρούνται και ανακατανέμονται - ανάλογα με τη ζήτηση των καταναλωτών. Το μοντέλο αυτό διακατέχεται και - από μια αίσθηση ανεξαρτησίας θέσης διότι ανεξάρτητα από το που - βρίσκεται ένας τελικός χρήστης μπορεί να χρησιμοποιήσει πόρους από - οποιοδήποτε κέντρο δεδομένων επιθυμεί. Παραδείγματα πόρων που - παρέχονται αποτελούν μεταξύ άλλων το εύρος ζώνης δικτύου, ο + χρησιμοποιώντας ένα μοντέλο πολλαπλής μίσθωσης (multi-tenant model) με + διαφορετικούς φυσικούς και εικονικούς πόρους που εκχωρούνται και + ανακατανέμονται ανάλογα με τη ζήτηση των καταναλωτών. Το μοντέλο αυτό + διακατέχεται και από μια αίσθηση ανεξαρτησίας θέσης διότι ανεξάρτητα + από το που βρίσκεται ένας τελικός χρήστης μπορεί να χρησιμοποιήσει + πόρους από οποιοδήποτε κέντρο δεδομένων επιθυμεί. Παραδείγματα πόρων + που παρέχονται αποτελούν μεταξύ άλλων το εύρος ζώνης δικτύου, ο αποθηκευτικός χώρος και οι εικονικές μηχανές. \item \textbf{Ελαστικότητα (Elasticity)}: @@ -104,8 +107,8 @@ portal), εργαλείου γραμμής εντολών ή άμεσα με π πόρων αξιοποιώντας δυνατότητες μέτρησης/παρακολούθησης κατάλληλες για τον τύπο της υπηρεσίας (π.χ, αποθήκευση, επεξεργασία, εύρος ζώνης). Η χρήση των πόρων μπορεί να παρακολουθείται, να ελέγχεται και να - αναγράφεται, παρέχοντας διαφάνεια τόσο στον πάροχο όσο και στον - καταναλωτή της υπηρεσίας που χρησιμοποιείται. Η αναφερόμενη χρήση + καταγράφεται, παρέχοντας διαφάνεια τόσο στον πάροχο όσο και στον + καταναλωτή της υπηρεσίας που χρησιμοποιείται. Η καταγραφόμενη χρήση έπειτα χρησιμοποιείται για την χρέωση του καταναλωτή ανάλογα με το μοντέλο χρέωσης που σχετίζεται με την χρησιμοποιούμενη υπηρεσία. @@ -113,89 +116,94 @@ portal), εργαλείου γραμμής εντολών ή άμεσα με π \clearpage -\subsection{Μοντέλα Υπηρεσιών/Παράδοσης} \label{cloudComputingServiceModels} +\subsubsection{Μοντέλα Υπηρεσιών/Παράδοσης} \label{cloudComputingServiceModels} -Τα τρία μοντέλα υπηρεσιών ή παράδοσης της νεφο-υπολογιστικής, όπως αναγράφονται -στο \cite{mell2011nist} είναι τα παρακάτω: +Τα τρία μοντέλα υπηρεσιών ή παράδοσης της νεφο-υπολογιστικής, όπως αυτά +αναγράφονται στο \cite{mell2011nist}, είναι τα παρακάτω: \begin{itemize} \item \textbf{Software as a Service (SaaS) (Λογισμικό ως Υπηρεσία)}: Παρέχεται στον καταναλωτή η δυνατότητα χρήσης εφαρμογών εκτελούμενων σε - μια υποδομή νέφους προσφερόμενη είτε από τον πάροχο νέφους είτε από - τρίτο μέρος. Οι εφαρμογές αυτές είναι προσβάσιμες, από διάφορες - συσκευές ικανές να συνδεθούν στο διαδίκτυο, μέσω φυλλομετρητή ή - προγραμματιστικής διεπαφής. Δεν προσφέρεται έλεγχος ή δυνατότητα - διαχείρισης της υποκείμενης υποδομής νέφους ή των δυνατοτήτων της - υπηρεσίας, με εξαίρεση περιορισμένη παραμετροποίηση κάποιων ρυθμίσεων - διαμόρφωσης της εφαρμογής. Το μοντέλο χρέωσης είθισται να είναι της - μορφής μιας σταθερής μηνιαίας ή ετήσιας συνδρομής χρησιμοποιώντας - βαθμίδες με διαφορετικά επίπεδα παροχής υπηρεσιών του λογισμικού - \footfullcite{saasPricingModel}. + μια υποδομή νέφους, οι οποίες προσφέρονται είτε από τον πάροχο της + υποδομής είτε από τρίτο μέρος. Οι εφαρμογές αυτές είναι προσβάσιμες, + από διάφορες συσκευές ικανές να συνδεθούν στο διαδίκτυο, μέσω + φυλλομετρητή ή προγραμματιστικής διεπαφής. Δεν προσφέρεται έλεγχος ή + δυνατότητα διαχείρισης της υποκείμενης υποδομής νέφους ή των + δυνατοτήτων της υπηρεσίας, με εξαίρεση περιορισμένη παραμετροποίηση + κάποιων ρυθμίσεων διαμόρφωσης της εφαρμογής. Το μοντέλο χρέωσης + είθισται να είναι της μορφής μιας σταθερής μηνιαίας ή ετήσιας συνδρομής + χρησιμοποιώντας βαθμίδες με διαφορετικά επίπεδα παροχής υπηρεσιών του + λογισμικού \cite{saasPricingModel}. \item \textbf{Platform as a Service (PaaS) (Πλατφόρμα ως Υπηρεσία)}: - Παρέχεται η δυνατότητα ανάπτυξης και εκτέλεσης εφαρμογών σε ένα - κατάλληλο περιβάλλον παρεχόμενο από μια πλατφόρμα που υποστηρίζεται από - πόρους του υπολογιστικού νέφους. Οι εφαρμογές αυτές αναπτύσσονται από - τον καταναλωτή μέσω της πλατφόρμας χρησιμοποιώντας ένα ολοκληρωμένο - περιβάλλον ανάπτυξης και εκτέλεσης αποτελούμενο από runtimes γλωσσών - προγραμματισμού, βιβλιοθήκες, υπηρεσίες και εργαλεία. Ο καταναλωτής δεν - έχει τον έλεγχο της υποκείμενης υποδομής νέφους, αλλά έχει τον έλεγχο - των εφαρμογών που εκτελούνται σε αυτήν, καθώς και των ρυθμίσεων - διαμόρφωσής τους και του περιβάλλοντος ανάπτυξης/εκτέλεσής τους. - Συνήθως, τα περιβάλλοντα είναι προκαθορισμένα ως προς το περιεχόμενο - τους αλλά γίνεται προσπάθεια από τους παρόχους των υπηρεσιών PaaS να - καλύψουν τις ανάγκες όλων των πιθανών ομάδων έργων λογισμικού σε σχέση - με τα διαφορετικά περιβάλλοντα που προσφέρονται. Το μοντέλο χρέωσης - υπηρεσιών PaaS συνήθως περιλαμβάνει μια σταθερή χρέωση ανά χρονική - περίοδο για κάθε είδος πόρου που χρειάστηκε να χρησιμοποιηθεί από τον - πάροχο για την επίτευξη των απαιτήσεων της εφαρμογής του καταναλωτή - μέσω της παρεχόμενης πλατφόρμας \footfullcite{paasPricingModel}. - Ουσιαστικά, ο καταναλωτής χρεώνεται με βάση την χρήση των πόρων του - παρόχου. + Παρέχεται η δυνατότητα ανάπτυξης και εκτέλεσης εφαρμογών σε ένα + κατάλληλο περιβάλλον παρεχόμενο από μια πλατφόρμα που υποστηρίζεται από + πόρους του υπολογιστικού νέφους. Οι εφαρμογές αυτές αναπτύσσονται από + τον καταναλωτή μέσω της πλατφόρμας χρησιμοποιώντας ένα ολοκληρωμένο + περιβάλλον ανάπτυξης και εκτέλεσης αποτελούμενο από runtimes γλωσσών + προγραμματισμού, βιβλιοθήκες, υπηρεσίες και εργαλεία ανάπτυξης. Ο + καταναλωτής δεν έχει τον έλεγχο της υποκείμενης υποδομής νέφους, αλλά + έχει τον έλεγχο των εφαρμογών που εκτελούνται σε αυτήν, των δεδομένων + τους, καθώς και των ρυθμίσεων διαμόρφωσής τους και του περιβάλλοντος + ανάπτυξης/εκτέλεσής τους. Συνήθως, τα περιβάλλοντα είναι προκαθορισμένα + ως προς το περιεχόμενο τους. Όμως, γίνεται προσπάθεια από τους παρόχους + των υπηρεσιών PaaS να καλύψουν τις ανάγκες όλων των πιθανών ομάδων + έργων λογισμικού παρέχοντας μια μεγάλη ποικιλία από διαφορετικά + περιβάλλοντα. Το μοντέλο χρέωσης υπηρεσιών PaaS συνήθως περιλαμβάνει + μια σταθερή χρέωση ανά χρονική περίοδο για κάθε είδος πόρου που + χρειάστηκε να χρησιμοποιηθεί από τον πάροχο για την επίτευξη των + απαιτήσεων της εφαρμογής του καταναλωτή μέσω της παρεχόμενης πλατφόρμας + \cite{paasPricingModel}. Ουσιαστικά, ο καταναλωτής χρεώνεται με βάση + την χρήση των πόρων του παρόχου. + +\clearpage \item \textbf{Infrastructure as a Service (IaaS) (Υποδομή ως Υπηρεσία)}: - Παρέχεται η δυνατότητα χρήσης επεξεργαστικών, αποθηκευτικών, δικτυακών - και άλλων υπολογιστικών πόρων. Συνήθως, οι πόροι αυτοί συγκροτούνται - στην μορφή μιας εικονικής μηχανής, δηλ. ενός απογυμνωμένου - περιβάλλοντος στο οποίο ο καταναλωτής μπορεί να εγκαταστήσει και να - εκτελέσει το λογισμικό της επιλογής του, συμπεριλαμβανομένων - λειτουργικών συστημάτων και εφαρμογών. Ο καταναλωτής δεν έχει τον - έλεγχο της υποκείμενης υποδομής νέφους, αλλά έχει τον έλεγχο των - λειτουργικών συστημάτων, του αποθηκευτικού χώρου, των περιβαλλόντων - ανάπτυξης/εκτέλεσης, των εγκατεστημένων εφαρμογών και των ρυθμίσεων - διαμόρφωσής τους. Το μοντέλο χρέωσης υπηρεσιών IaaS συνήθως αποτελείται - από μια συνεχόμενη χρέωση ανά χρονική περίοδο λόγω της ανάθεσης των - πόρων στον καταναλωτή, η οποία αυξάνεται μετά την υπέρβαση ενός ορίου - χρήσης για ορισμένους πόρους όπως το εύρος ζώνης δικτύου. + Παρέχεται η δυνατότητα χρήσης επεξεργαστικών, αποθηκευτικών, δικτυακών + και άλλων υπολογιστικών πόρων. Συνήθως, οι πόροι αυτοί συγκροτούνται + στην μορφή μιας εικονικής μηχανής, δηλ. ενός απογυμνωμένου + περιβάλλοντος στο οποίο ο καταναλωτής μπορεί να εγκαταστήσει και να + εκτελέσει το λογισμικό της επιλογής του, συμπεριλαμβανομένων + λειτουργικών συστημάτων και εφαρμογών. Ο καταναλωτής δεν έχει τον + έλεγχο της υποκείμενης υποδομής νέφους, αλλά έχει τον έλεγχο των + λειτουργικών συστημάτων, του αποθηκευτικού χώρου, των περιβαλλόντων + ανάπτυξης/εκτέλεσης, των εγκατεστημένων εφαρμογών, των δεδομένων τους + και των ρυθμίσεων διαμόρφωσής τους. Το μοντέλο χρέωσης υπηρεσιών IaaS + συνήθως αποτελείται από μια συνεχόμενη χρέωση ανά χρονική περίοδο λόγω + της ανάθεσης των πόρων στον καταναλωτή, η οποία αυξάνεται μετά την + υπέρβαση ενός ορίου χρήσης για ορισμένους πόρους, όπως το εύρος ζώνης + δικτύου. \end{itemize} -\subsection{Μοντέλα Ανάπτυξης} \label{cloudComputingDeploymentModels} +\subsubsection{Μοντέλα Ανάπτυξης} \label{cloudComputingDeploymentModels} Τα τέσσερα μοντέλα ανάπτυξης του υπολογιστικού νέφους σύμφωνα με το \cite{mell2011nist} και την \citeauthor{cloudDeploymentModels} -\footfullcite{cloudDeploymentModels} είναι: +\cite{cloudDeploymentModels} είναι: \begin{itemize} \item \textbf{Ιδιωτικό νέφος (Private Cloud)}: - Το ιδιωτικό νέφος είναι αποκλειστικά αφιερωμένο σε έναν μόνο οργανισμό - αποτελούμενο από πολλαπλούς καταναλωτές (π.χ. επιχειρησιακές μονάδες ή - τμήματα). Ενδεχομένως να ανήκει, να διαχειρίζεται και να λειτουργεί από - τον οργανισμό, από μια τρίτη οντότητα, ή έναν συνδυασμό των δύο. Το - νέφος αυτό μπορεί να βρίσκεται εντός ή εκτός του οργανισμού (πχ. στην - περίπτωση που λειτουργεί από τρίτη οντότητα). Παρέχει πλήρη έλεγχο στον - τρόπο με τον οποίο μοιράζονται και αποθηκεύονται τα δεδομένα και - διασφαλίζει την συμμόρφωση με τυχόν κανονισμούς τους οποίους καλείται - μια επιχείρηση να ακολουθήσει. Επιπλέον, λόγω της αποκλειστικής - αφιέρωσής του σε έναν μόνο οργανισμό, εξασφαλίζεται η διαθεσιμότητα των - δεδομένων κατά παραγγελία, όπως επίσης και η αξιοπιστία του για - κρίσιμους φόρτους εργασίας. + Το ιδιωτικό νέφος είναι αποκλειστικά αφιερωμένο σε έναν μόνο οργανισμό + αποτελούμενο από πολλαπλούς καταναλωτές (π.χ. επιχειρησιακές μονάδες ή + τμήματα). Ενδεχομένως να ανήκει, να διαχειρίζεται και να λειτουργεί από τον + ίδιο τον οργανισμό, από μια τρίτη οντότητα, ή έναν συνδυασμό των δύο. Το + νέφος αυτό μπορεί να βρίσκεται εντός ή εκτός του οργανισμού (πχ. στην + περίπτωση που λειτουργεί από τρίτη οντότητα). Παρέχει πλήρη έλεγχο στον + τρόπο με τον οποίο μοιράζονται και αποθηκεύονται τα δεδομένα και + διασφαλίζει την συμμόρφωση με τυχόν κανονισμούς τους οποίους καλείται ένας + οργανισμός να ακολουθήσει. Επιπλέον, λόγω της αποκλειστικής αφιέρωσής του + σε έναν μόνο οργανισμό, εξασφαλίζεται η διαθεσιμότητα των δεδομένων κατά + παραγγελία, όπως επίσης και η αξιοπιστία του για κρίσιμους φόρτους + εργασίας. Τέλος, λόγω του πλήρους ελέγχου, μπορεί να εγκαθιδρυθεί ένα υψηλό + επίπεδο ασφαλείας, υψηλότερο σε σχέση με αυτό που μπορεί να επιτευχθεί από + άλλα μοντέλα ανάπτυξης (νέφους). \clearpage @@ -207,27 +215,29 @@ portal), εργαλείου γραμμής εντολών ή άμεσα με π έναν ή περισσότερους οργανισμούς της κοινότητας, μια τρίτη οντότητα ή έναν συνδυασμό των δύο. Το νέφος αυτό μπορεί να βρίσκεται εντός ή εκτός των οργανισμών της κοινότητας (εφόσον λειτουργεί από τρίτη κοινότητα). - Το κόστος κτήσης, λειτουργίας και συντήρησης συνήθως διαμοιράζεται - μεταξύ των μελών/οργανισμών της κοινότητας. Επιπροσθέτως, είναι - προσβάσιμο συνήθως μόνο από τα μέλη της κοινότητας. Οπότε, μπορεί να - θεωρηθεί ένα ιδιωτικό νέφος και όχι μόνο για έναν αλλά πολλαπλούς - οργανισμούς. + Το κόστος κτήσης, λειτουργίας και συντήρησης του νέφους συνήθως + διαμοιράζεται μεταξύ των μελών/οργανισμών της κοινότητας. Επιπροσθέτως, + το νέφος αυτού του είδους είναι προσβάσιμο συνήθως μόνο από τα μέλη της + κοινότητας. Οπότε, μπορεί να θεωρηθεί ένα ιδιωτικό νέφος, όμως όχι μόνο + για έναν αλλά για πολλαπλούς οργανισμούς. \item \textbf{Δημόσιο νέφος (Public Cloud)}: - Εδώ, το νέφος υποδομής είναι διαθέσιμο για το γενικό κοινό. Μπορεί να - ανήκει και να διαχειρίζεται από μια επιχείρηση, έναν ακαδημαϊκό ή - κυβερνητικό οργανισμό ή έναν συνδυασμό των παραπάνω. Λειτουργεί εντός - των υποδομών του παρόχου νέφους. Το δημόσιο νέφος είναι ουσιαστικά οι - εικονικές μηχανές που εκτελούνται σε διακομιστές του παρόχου νέφους, - των οποίων οι υπολογιστικοί πόροι χρησιμοποιούνται από πολλούς - καταναλωτές ταυτόχρονα. Αποτελεί το πιο δημοφιλές μοντέλο που παρέχουν - εταιρείες υπηρεσιών IaaS λόγω της απουσίας απαίτησης μεγάλου αρχικού - κόστους και της ευελιξίας που παρέχεται μέσω της αυτοεξυπηρέτησης κατά - παραγγελία. Είναι η κατάλληλη επιλογή για μεγάλους φόρτους εργασίας - μικρής διάρκειας λόγω του μοντέλου χρέωσης ανά χρήση και διευκολύνει - μια επιχείρηση στην μετέπειτα διαχείριση του κόστους με βάση τις - προβλέψεις της ζήτησης της υπηρεσίας που αυτή προσφέρει. + Εδώ, το νέφος υποδομής είναι διαθέσιμο για το γενικό κοινό. Μπορεί να + ανήκει και να διαχειρίζεται από μια επιχείρηση, έναν ακαδημαϊκό ή + κυβερνητικό οργανισμό ή έναν συνδυασμό των παραπάνω. Λειτουργεί εντός + των υποδομών του παρόχου νέφους. Το δημόσιο νέφος προσφέρει είτε + εικονικές μηχανές που εκτελούνται σε διακομιστές του παρόχου νέφους, + των οποίων οι υπολογιστικοί πόροι χρησιμοποιούνται από πολλούς + καταναλωτές ταυτόχρονα, είτε τους φυσικούς του διακομιστές για + αποκλειστική χρήση. Αποτελεί το πιο δημοφιλές μοντέλο που παρέχουν + εταιρείες υπηρεσιών IaaS λόγω της απουσίας απαίτησης μεγάλου αρχικού + κόστους και της ευελιξίας που παρέχεται μέσω της αυτοεξυπηρέτησης κατά + παραγγελία. Είναι η κατάλληλη επιλογή για μεγάλους φόρτους εργασίας + μικρής διάρκειας λόγω του μοντέλου χρέωσης ανά χρήση ενώ διευκολύνει + μια επιχείρηση στην μετέπειτα διαχείριση του κόστους με βάση τις + προβλέψεις της ζήτησης της υπηρεσίας που αυτή προσφέρει και των + δυνατοτήτων κλιμάκωσης υπηρεσιών που το νέφος παρέχει σε αυτήν. \item \textbf{Υβριδικό νέφος (Hybrid Cloud)}: @@ -241,74 +251,116 @@ portal), εργαλείου γραμμής εντολών ή άμεσα με π \end{itemize} -\clearpage +\section{Εικονικοποίηση} \label{virtualization} -\section{Ορισμός Εικονικοποίησης} \label{virtualizationDefinition} +Η εικονικοποίηση (virtualization) είναι ένας όρος που χρησιμοποιούμε όταν +θέλουμε να αναφερθούμε στην αναπαράσταση πόρων σε εικονική μορφή με σκοπό την +αναδιαμόρφωσή τους ούτως ώστε να ικανοποιούνται οι ανάγκες ενός συστήματος +(όπως η αύξηση της χρήσης των φυσικών του πόρων). Εφαρμόζεται σε μια πληθώρα +πόρων, όπως είναι οι διακομιστές, το λειτουργικό σύστημα, ακόμα και τα +δεδομένα. Η πιο συνηθισμένη χρήση εικονικοποίησης είναι αυτή των διακομιστών η +οποία αποτελεί και τον πυλώνα της νεφο-υπολογιστικής. Προκειμένου να +επιτευχθεί, απαιτείται η χρήση ενός υπερ-επόπτη. Δηλαδή ενός λογισμικού +υπεύθυνου για την κατάτμηση των φυσικών πόρων ενός διακομιστή σε μια ή +περισσότερες εικονικές αναπαραστάσεις ενός συνόλου αυτών με σκοπό να +χρησιμοποιηθούν ως ξεχωριστοί εικονικοί διακομιστές (virtual hosts/servers). -Σύμφωνα με τον ορισμό της Red Hat -\footfullcite{redhatVirtualizationDefinition}, η εικονικοποίηση είναι μια -τεχνολογία που μας επιτρέπει να δημιουργήσουμε πολλαπλά εικονικά περιβάλλοντα ή -αποκλειστικούς πόρους από ένα μόνο, φυσικό σύστημα υλικού. Ένα λογισμικό -ονόματι υπερ-επόπτης (hypervisor) συνδέεται στο υλικό -αυτό\footnote{\textgreek{Απευθείας στην εικονικοποίηση υποβοηθούμενη από το -υλικό και έμμεσα στην εικονικοποίηση υποβοηθούμενη από το λογισμικό.}} και +Για έναν υπερ-επόπτη υπάρχουν δύο κατηγορίες στις οποίες μπορεί να ανήκει. Είτε +πρόκειται για υπερ-επόπτη τύπου 1 στην περίπτωση απευθείας πρόσβασης στο υλικό, +είτε τύπου 2 εάν υπάρχει ήδη λειτουργικό σύστημα εγκατεστημένο στον υποκείμενο +διακομιστή προς κατάτμηση. Η επιλογή τύπου υπερ-επόπτη είναι άμεσα εξαρτώμενη +από τις ανάγκες του κάθε χρήστη. Στην περίπτωση που η ταχύτητα και η απόδοση +είναι σημαντικά μη λειτουργικά χαρακτηριστικά που πρέπει να έχουν υψηλές τιμές, +η άμεση πρόσβαση του υπερ-επόπτη τύπου 1 στο υλικό συμβάλλει στην επίτευξη της +ικανοποίησης αυτών των δύο απαιτήσεων. Από την άλλη, ένας υπερ-επόπτης τύπου 2 +δεν έρχεται σε αντιπαράθεση με το υποκείμενο ΛΣ και επιτρέπει την χρήση +προγραμμάτων και οδηγών που το ΛΣ αυτό πιθανόν να μην είναι σε θέση να +εκτελέσει. + +Η εικονικοποίηση διακομιστών χωρίζεται σε δύο κατηγορίες βάσει της μεθόδου +επίτευξης της. Την πλήρη εικονικοποίηση και την παρα-εικονικοποίηση +\cite{abacusFullParaOSVirtualization}. Στην πρώτη περίπτωση το λειτουργικό +σύστημα που εκτελείται στον εικονικό διακομιστή συμπεριφέρεται όπως θα +συμπεριφερόταν σε έναν φυσικό διακομιστή. Αυτό συμβαίνει διότι από μεριάς του +λειτουργικού συστήματος δεν υπάρχει επίγνωση της εικονικοποίησης που έχει λάβει +μέρος για να δημιουργηθούν οι εικονικοί πόροι στους οποίους στεγάζεται. Η +πλήρης εικονικοποίηση μπορεί να είναι δύο ειδών. Υποβοηθούμενη από το λογισμικό +ή από το υλικό. Στο πρώτο είδος, πραγματοποιείται εικονικοποίηση ολόκληρου του +υλικού μέσω του υπερ-επόπτη (τύπου 2) που εκτελείται στο ΛΣ. Στο δεύτερο είδος, +όπου δεν υπάρχει ΛΣ, δύναται το λειτουργικό σύστημα του εικονικού διακομιστή να +κάνει χρήση της φυσικής κεντρικής μονάδας επεξεργασίας του διακομιστή +φιλοξενίας εάν αυτή το υποστηρίζει +\cite{geeksforgeeksHardwareAssistedVirtualization}. Στην περίπτωση της +παρα-εικονικοποίησης το λειτουργικό σύστημα αναγνωρίζει την ύπαρξη του +υπερ-επόπτη και απαιτείται η τροποποίηση και των δύο ώστε να μπορούν να +επικοινωνούν με χρήση υπερ-κλήσεων. Αν και το γεγονός αυτό μειώνει την +συμβατότητα σε σχέση με την πλήρη εικονικοποίηση, η άμεση πρόσβαση στο +υποκείμενο φυσικό υλικό συμβάλλει στην αύξηση της αποδοτικότητας. + +\subsection{Ορισμός Εικονικοποίησης} \label{virtualizationDefinition} + +Σύμφωνα με τον ορισμό της Red Hat \cite{redhatVirtualizationDefinition}, η +εικονικοποίηση είναι μια τεχνολογία που μας επιτρέπει να δημιουργήσουμε +πολλαπλά εικονικά περιβάλλοντα ή αποκλειστικούς πόρους από ένα μόνο, φυσικό +σύστημα υλικού. Ένα λογισμικό ονόματι υπερ-επόπτης (hypervisor) συνδέεται στο +υλικό αυτό\footnote{\textgreek{Απευθείας στην εικονικοποίηση υποβοηθούμενη από +το υλικό και έμμεσα στην εικονικοποίηση υποβοηθούμενη από το λογισμικό.}} και δίνει τη δυνατότητα διαμερισμού ενός συστήματος σε ξεχωριστά, διακριτά και ασφαλή περιβάλλοντα, γνωστά και ως εικονικές μηχανές (Virtual Machines - VMs). Επομένως, αυτές οι εικονικές μηχανές βασίζονται στην ικανότητα του υπερ-επόπτη να διαχωρίζει τους πόρους της μηχανής και να τους κατανέμει κατάλληλα. Το φυσικό υλικό, εξοπλισμένο με έναν υπερ-επόπτη, ονομάζεται ξενιστής (host) ή -μηχάνημα φιλοξενίας, ενώ οι πολλές εικονικές μηχανές που χρησιμοποιούν τους -πόρους του είναι οι επισκέπτες (guests) ή αλλιώς τα φιλοξενούμενα μηχανήματα. -Οι επισκέπτες, αντιμετωπίζουν τους υπολογιστικούς πόρους όπως είναι η κεντρική -μονάδα επεξεργασίας, η μνήμη και ο αποθηκευτικός χώρος, ως μια δεξαμενή πόρων -που μπορεί εύκολα να ανακατανεμηθεί. Οι χειριστές μπορούν να ελέγχουν εικονικά -στιγμιότυπα αυτών των πόρων, ούτως ώστε να πραγματοποιούν οριζόντια ή κάθετη -κλιμάκωση. Δηλαδή είτε να δημιουργούν περισσότερες εικονικές μηχανές, είτε να -αναδημιουργούν την ίδια με επιπλέον πόρους (εφόσον δεν έχουν δεσμευτεί από -άλλες εικονικές μηχανές του ίδιου φυσικού μηχανήματος) όταν αυτό είναι -απαραίτητο. +μηχάνημα φιλοξενίας (hosting machine), ενώ οι πολλές εικονικές μηχανές που +χρησιμοποιούν τους πόρους του είναι οι επισκέπτες (guests) ή αλλιώς τα +φιλοξενούμενα μηχανήματα (hosted machines). Οι επισκέπτες, αντιμετωπίζουν τους +υπολογιστικούς πόρους όπως είναι η κεντρική μονάδα επεξεργασίας, η μνήμη και ο +αποθηκευτικός χώρος, ως μια δεξαμενή πόρων που μπορεί εύκολα να ανακατανεμηθεί. +Οι χειριστές (operators) μπορούν να ελέγχουν εικονικά στιγμιότυπα αυτών των +πόρων, ούτως ώστε να πραγματοποιούν οριζόντια ή κάθετη κλιμάκωση. Δηλαδή είτε +να δημιουργούν περισσότερες εικονικές μηχανές, είτε να αναδημιουργούν την ίδια +με επιπλέον πόρους (εφόσον αυτοί δεν έχουν δεσμευτεί από άλλες εικονικές +μηχανές του ίδιου φυσικού μηχανήματος) όταν αυτό είναι απαραίτητο. Η εικονικοποίηση καθιστά δυνατή τη δημιουργία χρήσιμων υπηρεσιών ΤΠ -χρησιμοποιώντας πόρους στους οποίους παραδοσιακά μπορούσαμε να έχουμε πρόσβαση -μονάχα με την ιδιοκτησία φυσικών μηχανημάτων. Μας επιτρέπει να αξιοποιήσουμε -όλες τις δυνατότητες ενός φυσικού μηχανήματος διανέμοντας τις σε πολλούς -χρήστες και περιβάλλοντα. Με άλλα λόγια, υποστηρίζεται η πολλαπλή μίσθωση ανά -φυσικό μηχάνημα με τη μορφή εικονικών μηχανημάτων καθώς και η αυξημένη χρήση -πόρων των φυσικών μηχανημάτων (στα κέντρα δεδομένων του νέφους). +(Τεχνολογίας Πληροφοριών) χρησιμοποιώντας πόρους στους οποίους παραδοσιακά +μπορούσαμε να έχουμε πρόσβαση μονάχα με την ιδιοκτησία φυσικών μηχανημάτων. Μας +επιτρέπει να αξιοποιήσουμε όλες τις δυνατότητες ενός φυσικού μηχανήματος +διανέμοντας τις σε πολλούς χρήστες και περιβάλλοντα. Με άλλα λόγια, +υποστηρίζεται η πολλαπλή μίσθωση ανά φυσικό μηχάνημα με τη μορφή εικονικών +μηχανών καθώς και η αυξημένη χρήση πόρων των φυσικών μηχανών (στα κέντρα +δεδομένων του νέφους). -\clearpage - -Με βάση ένα παράδειγμα της Red Hat \footfullcite{redhatVirtualization}, ας -φανταστούμε πως έχουμε τρεις διακομιστές (servers) (δηλ. φυσικά μηχανήματα), -στον καθένα από τους οποίους έχει ανατεθεί ένας συγκεκριμένος σκοπός. Ένας -διακομιστής ηλεκτρονικού ταχυδρομείου, ένας διακομιστής ιστού και ένας που -εκτελεί εσωτερικές εταιρικές εφαρμογές οι οποίες σταμάτησαν να διατηρούνται -αλλά είναι ακόμα λειτουργικές. Στο συγκεκριμένο παράδειγμα κάθε ένας από τους -διακομιστές χρησιμοποιεί μονάχα το 30\% των δυνατοτήτων του (ως προς τους -πόρους που μπορεί να διαθέσει). +Με βάση ένα παράδειγμα της Red Hat \cite{redhatVirtualization}, ας φανταστούμε +πως έχουμε τρεις διακομιστές (servers) (δηλ. φυσικά μηχανήματα), στον καθένα +από τους οποίους έχει ανατεθεί ένας συγκεκριμένος σκοπός. Ένας διακομιστής +ηλεκτρονικού ταχυδρομείου (email server), ένας διακομιστής ιστού (web server) +και ένας που εκτελεί εσωτερικές εταιρικές εφαρμογές κληρονομιάς, οι οποίες +σταμάτησαν να διατηρούνται αλλά είναι ακόμα λειτουργικές. Στο συγκεκριμένο +παράδειγμα κάθε ένας από τους διακομιστές χρησιμοποιεί μονάχα το 30\% των +δυνατοτήτων του (ως προς τους πόρους που μπορεί να διαθέσει). \begin{center} \begin{figure}[!ht] \centering - \includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_virtualization_server_usage1.png} + \includegraphics[width = .95\textwidth]{Figures/RedHat_Virtualization/redhat_virtualization_server_usage1.png} \captionof{figure}{Χρήση διακομιστών χωρίς εικονικοποίηση \cite{redhatVirtualization}} \label{fig:virtualizationServerUsage1} \end{figure} \vspace*{-30pt} \end{center} -Παραδοσιακά, αυτή η αρχιτεκτονική όπου εκτελούνται μεμονωμένες εργασίες σε -μεμονωμένους διακομιστές ήταν ευκολότερη και πιο αξιόπιστη αλλά δεν παύει να -είναι και η λιγότερο αποδοτική λύση. Με την άφιξη της τεχνολογίας της -εικονικοποίησης όμως, είναι πλέον εφικτό να χωριστεί ένας διακομιστής σε -περισσότερα μέρη, έχοντας δύο ή παραπάνω εικονικά μηχανήματα με τη χρήση ενός -φυσικού. +Παραδοσιακά, αυτή η αρχιτεκτονική όπου εκτελούνται μεμονωμένες εργασίες έκαστη +αποκλειστικά σε συγκεκριμένο διακομιστή ήταν ευκολότερη και πιο αξιόπιστη αλλά +δεν παύει να είναι και η λιγότερο αποδοτική λύση. Με την άφιξη της τεχνολογίας +της εικονικοποίησης όμως, είναι πλέον εφικτό να χωριστεί ένας διακομιστής σε +περισσότερα μέρη, έχοντας δύο ή παραπάνω εικονικές μηχανές με τη χρήση μιας +φυσικής. \begin{center} \begin{figure}[!ht] \centering - \includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_virtualization_server_usage2.png} + \includegraphics[width = .95\textwidth]{Figures/RedHat_Virtualization/redhat_virtualization_server_usage2.png} \captionof{figure}{Χρήση διακομιστών με εικονικοποίηση \cite{redhatVirtualization}} \label{fig:virtualizationServerUsage2} \end{figure} @@ -318,12 +370,10 @@ portal), εργαλείου γραμμής εντολών ή άμεσα με π Εφόσον ένας διακομιστής χωρίζεται σε δύο ή παραπάνω εικονικά μέρη, μπορεί να αυξηθεί ραγδαία η αξιοποίηση των δυνατοτήτων του. Με βάση το προηγούμενο παράδειγμα, αν μια εικονική μηχανή λαμβάνει το 30\% των πόρων ενός -διακομιστή/φυσικού μηχανήματος, τότε και οι τρεις προαναφερόμενες +διακομιστή/φυσικού μηχανήματος, τότε ορισμένες από τις προαναφερόμενες λειτουργικότητες (παροχής υπηρεσιών ιστού, ηλεκτρονικού ταχυδρομείου και εφαρμογών) θα μπορούσαν να εγκατασταθούν στον ίδιο διακομιστή με την μορφή -τριών διαφορετικών εικονικών μηχανημάτων, αντίστοιχα. - -\clearpage +εικονικών μηχανών. Αφού η δημιουργία και καταστροφή των εικονικών μηχανών σε ένα μηχάνημα πραγματοποιείται δυναμικά ανάλογα με τη ζήτηση, αυτό σημαίνει πως ένας @@ -336,7 +386,7 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η \subsection{Ιστορική αναδρομή της εικονικοποίησης} \label{virtualizationHistory} -Όπως αναφέρει μια θυγατρική της IBM \footfullcite{redhatVirtualization}, ενώ η +Όπως αναφέρει μια θυγατρική της IBM \cite{redhatVirtualization}, ενώ η τεχνολογία εικονικοποίησης χρονολογείται από τη δεκαετία του 1960, δεν υιοθετήθηκε ευρέως μέχρι τις αρχές της δεκαετίας του 2000. Οι τεχνολογίες που την έκαναν πραγματικότητα, όπως οι υπερ-επόπτες, αναπτύχθηκαν πριν από @@ -363,8 +413,6 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η διακομιστής μπορούσε συνήθως να εκτελέσει μόνο μια εργασία/εφαρμογή που είχε υλοποιηθεί με βάση το υλικό του συγκεκριμένου προμηθευτή (του διακομιστή). -\clearpage - Από εκείνο το σημείο και έπειτα, άρχισε να γίνεται εμφανής η ανάγκη της εικονικοποίησης και να ανεβαίνει η δημοτικότητά της. Οι εταιρείες μπορούσαν πλέον να διαμερίσουν τους διακομιστές τους και να εκτελούν ακόμα και τις @@ -377,13 +425,13 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η έναν μόνο προμηθευτή και την κατέστησε το θεμέλιο του υπολογιστικού νέφους. Σήμερα είναι τόσο διαδεδομένη σε όλες τις επιχειρήσεις που συχνά απαιτείται εξειδικευμένο λογισμικό διαχείρισης των εικονικών πόρων -\footfullcite{redhatVirtualizationManagement} για να μπορέσει κανείς να -παρακολουθεί τα δρώμενα μιας επιχείρησης. Πρόκειται για ένα λογισμικό το οποίο -διασυνδέεται με εικονικά περιβάλλοντα και το υποκείμενο φυσικό υλικό τους με -απώτερο σκοπό την απλοποίηση της διαχείρισης πόρων, τη βελτίωση της ανάλυσης -δεδομένων και τον εξορθολογισμό των λειτουργιών τους. Ουσιαστικά ένα λογισμικό -που συνδέεται απομακρυσμένα με υπερ-επόπτες, προσφέροντας μια φιλική προς τον -χρήση διεπαφή και επιπρόσθετες λειτουργίες όπως η συγκρότηση αναφορών χρήσης, η +\cite{redhatVirtualizationManagement} για να μπορέσει κανείς να παρακολουθεί τα +δρώμενα μιας επιχείρησης. Πρόκειται για ένα λογισμικό το οποίο διασυνδέεται με +εικονικά περιβάλλοντα και το υποκείμενο φυσικό υλικό τους με απώτερο σκοπό την +απλοποίηση της διαχείρισης πόρων, τη βελτίωση της ανάλυσης δεδομένων και τον +εξορθολογισμό των λειτουργιών τους. Ουσιαστικά ένα λογισμικό που συνδέεται +απομακρυσμένα με υπερ-επόπτες, προσφέροντας μια φιλική προς τον χρήση διεπαφή +και επιπρόσθετες λειτουργίες όπως η συγκρότηση αναφορών χρήσης, η αυτοματοποίηση επιβολής κανόνων και η παρακολούθηση χρήσης εικονικών περιβαλλόντων. @@ -402,8 +450,6 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η και τα στιγμιότυπα των λειτουργικών συστημάτων λέγονται εικονικές μηχανές και αντιπροσωπεύουν προσομοιώσεις φυσικών υπολογιστών. -\clearpage - Οι υπερ-επόπτες είναι υπεύθυνοι για τη διαχείριση των εικονικών μηχανών χωρίζοντας τις και αναθέτοντας σε κάθε μια ένα κομμάτι της διαθέσιμης υπολογιστικής ισχύος, μνήμης και χώρου αποθήκευσης. Αυτή η διαδικασία τις @@ -414,7 +460,7 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η Οι υπερ-επόπτες χωρίζονται σε δύο κατηγορίες ανάλογα με το περιβάλλον στο οποίο εκτελούνται. Με βάση την \citeauthor{ibmHypervisorDefinition} -\footfullcite{ibmHypervisorDefinition}, αυτές είναι: +\cite{ibmHypervisorDefinition}, αυτές είναι: \begin{itemize} @@ -429,9 +475,9 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η αποδοτικούς. Παρ' όλα αυτά, επειδή αντικαθιστούν το ΛΣ, προκειμένου να μπορούν να αξιοποιηθούν απομακρυσμένα, συχνά απαιτείται μια ξεχωριστή μηχανή στην οποία θα εκτελείται λογισμικό διαχείρισης εικονικών πόρων - \footfullcite{phoenixnapHypervisors}, μέσω του οποίου προσφέρεται μια - διεπαφή για τον έλεγχο των εικονικών μηχανών και του υλικού του - κεντρικού υπολογιστή. + \cite{phoenixnapHypervisors}, μέσω του οποίου προσφέρεται μια διεπαφή + για τον έλεγχο των εικονικών μηχανών και του υλικού του κεντρικού + υπολογιστή. \item \textbf{Τύπου 2 (Hosted)}: @@ -441,63 +487,57 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η διακομιστές λόγω της καθυστέρησης που εισάγεται εξαιτίας της συνεχούς επικοινωνίας του με το ΛΣ φιλοξενίας και επειδή το υποκείμενο αυτό ΛΣ βάζει σε προτεραιότητα τις δικές του εφαρμογές και λειτουργίες έναντι - αυτών του υπερ-επόπτη \footfullcite{amazonHypervisors}. + αυτών του υπερ-επόπτη \cite{amazonHypervisors}. \end{itemize} -\clearpage +Αντίθετα, οι υπερ-επόπτες τύπου 2 είναι καταλληλότεροι για μεμονωμένους +τελικούς χρήστες υπολογιστών που έχουν την ανάγκη να εκτελέσουν πολλαπλά +λειτουργικά συστήματα (σε έναν υπολογιστή). Παραδείγματα τέτοιων χρηστών είναι +μηχανικοί, επαγγελματίες ασφαλείας που αναλύουν κακόβουλο λογισμικό και +υπάλληλοι επιχειρήσεων που χρειάζονται πρόσβαση σε εφαρμογές που είναι +διαθέσιμες αποκλειστικά σε διαφορετικές πλατφόρμες λογισμικού από τη δική τους. +Διατίθενται συχνά πρόσθετες εργαλειοθήκες για τους χρήστες, οι οποίες μπορούν +να εγκατασταθούν στο λειτουργικό σύστημα προκειμένου να παρέχουν βελτιωμένες +συνδέσεις μεταξύ του υποκείμενου λειτουργικού συστήματος και εκείνου της +εικονικής μηχανής. Οι πρόσθετες δυνατότητες που υποστηρίζονται μετά την +παραπάνω διαδικασία μπορεί να είναι η αποκοπή και επικόλληση μεταξύ των δύο +συστημάτων ή η κοινή πρόσβαση στον αποθηκευτικό χώρο. Η τρέχουσα προσέγγιση +επιτρέπει τη γρήγορη εναλλαγή σε διαφορετικά λειτουργικά συστήματα πέραν του +ήδη υπάρχοντος, πράγμα που αυξάνει την παραγωγικότητα του τελικού χρήστη, αφού +μπορεί να έχει πρόσβαση σε εργαλεία που δεν υποστηρίζονται στο δικό του +(αρχικό/υπάρχον σύστημα). - Αντίθετα, οι υπερ-επόπτες τύπου 2 είναι καταλληλότεροι για μεμονωμένους - τελικούς χρήστες υπολογιστών που έχουν την ανάγκη να εκτελέσουν - πολλαπλά λειτουργικά συστήματα (σε έναν υπολογιστή). Παραδείγματα - τέτοιων χρηστών είναι μηχανικοί, επαγγελματίες ασφαλείας που αναλύουν - κακόβουλο λογισμικό και υπάλληλοι επιχειρήσεων που χρειάζονται πρόσβαση - σε εφαρμογές που είναι διαθέσιμες αποκλειστικά σε διαφορετικές - πλατφόρμες λογισμικού από τη δική τους. Διατίθενται συχνά πρόσθετες - εργαλειοθήκες για τους χρήστες, οι οποίες μπορούν να εγκατασταθούν στο - λειτουργικό σύστημα προκειμένου να παρέχουν βελτιωμένες συνδέσεις - μεταξύ του υποκείμενου λειτουργικού συστήματος και εκείνου της - εικονικής μηχανής. Οι πρόσθετες δυνατότητες που υποστηρίζονται μετά την - παραπάνω διαδικασία μπορεί να είναι η αποκοπή και επικόλληση μεταξύ των - δύο συστημάτων ή η κοινή πρόσβαση στον αποθηκευτικό χώρο. Η τρέχουσα - προσέγγιση επιτρέπει τη γρήγορη εναλλαγή σε διαφορετικά λειτουργικά - συστήματα πέραν του ήδη υπάρχοντος, πράγμα που αυξάνει την - παραγωγικότητα του τελικού χρήστη, αφού μπορεί να έχει πρόσβαση σε - εργαλεία που δεν υποστηρίζονται στο δικό του (αρχικό/υπάρχον σύστημα). - - Σε κάθε τύπο υπερ-επόπτη, όταν το φιλοξενούμενο ΛΣ αιτηθεί πρόσβαση - στους πόρους υπολογισμού, μνήμης και δικτύου του φυσικού υλικού, όλες - οι προσβάσεις περνάνε πρώτα από αυτόν. Στην περίπτωση όμως υπερ-επόπτη - τύπου 2, επειδή εκτελείται ως εφαρμογή του ΛΣ φιλοξενίας, οι προσβάσεις - αυτές χρειάζεται να μεταφραστούν προτού περάσουν στο φιλοξενούμενο ΛΣ - και τους υποκείμενους πόρους του. Επομένως, σε αντίθεση με τους - υπερ-επόπτες τύπου 1 όπου η πρόσβαση γίνεται άμεσα, η χρήση - υπερ-εποπτών τύπου 2 εισάγει προβλήματα καθυστέρησης που μπορεί να - επηρεάσουν την απόδοση. Κατά την χρήση υπερ-επόπτη τύπου 2 παρέχεται - μεγαλύτερη συμβατότητα/γκάμα υλικού διότι αυτό διαχειρίζεται από το - υποκείμενο ΛΣ φιλοξενίας. Επιπροσθέτως, εισάγεται πιθανός κίνδυνος - ασφαλείας εάν ένας εισβολέας παραβιάσει το κεντρικό λειτουργικό - σύστημα, επειδή θα μπορούσε στη συνέχεια να χειραγωγήσει οποιοδήποτε - φιλοξενούμενο λειτουργικό σύστημα εκτελείται σε αυτόν. - -\clearpage +Σε κάθε τύπο υπερ-επόπτη, όταν το φιλοξενούμενο ΛΣ αιτηθεί πρόσβαση στους +πόρους υπολογισμού, μνήμης και δικτύου του φυσικού υλικού, όλες οι προσβάσεις +περνάνε πρώτα από αυτόν. Στην περίπτωση όμως υπερ-επόπτη τύπου 2, επειδή +εκτελείται ως εφαρμογή του ΛΣ φιλοξενίας, οι προσβάσεις αυτές χρειάζεται να +μεταφραστούν προτού περάσουν στο φιλοξενούμενο ΛΣ και τους υποκείμενους πόρους +του. Επομένως, σε αντίθεση με τους υπερ-επόπτες τύπου 1 όπου η πρόσβαση γίνεται +άμεσα, η χρήση υπερ-εποπτών τύπου 2 εισάγει προβλήματα καθυστέρησης που μπορεί +να επηρεάσουν την απόδοση. Κατά την χρήση υπερ-επόπτη τύπου 2 παρέχεται +μεγαλύτερη συμβατότητα/γκάμα υλικού διότι αυτό διαχειρίζεται από το υποκείμενο +ΛΣ φιλοξενίας. Επιπροσθέτως, εισάγεται πιθανός κίνδυνος ασφαλείας εάν ένας +εισβολέας παραβιάσει το κεντρικό λειτουργικό σύστημα, επειδή θα μπορούσε στη +συνέχεια να χειραγωγήσει οποιοδήποτε φιλοξενούμενο λειτουργικό σύστημα +εκτελείται σε αυτόν. \subsection{Χαρακτηριστικά ενός υπερ-επόπτη} \label{hypervisorCharacteristics} Αν και υπάρχουν διαφορετικά είδη υπερ-εποπτών, όλοι έχουν κάποια χαρακτηριστικά που πρέπει να λάβει κανείς υπόψιν όταν επιλέγει ποιον θα χρησιμοποιήσει. Μερικά σημαντικά αυτών όπως αναφέρονται από την \citeauthor{ibmHypervisorDefinition} -\footfullcite{ibmHypervisorDefinition} είναι: +\cite{ibmHypervisorDefinition} είναι: \begin{itemize} \item \textbf{Απόδοση}: - Βασικό χαρακτηριστικό ενός υπερ-επόπτη είναι η απόδοσή του. Αυτή - διαφέρει από τον ένα υπερ-επόπτη στον άλλο αναλόγως την κατασκευή και - τον τύπο του. Όμως, εν γένει, οι υπερ-επόπτες τύπου 1 θα πρέπει να - παρέχουν απόδοση κοντά στην εγγενή λόγω της απουσίας ανάγκης μετάφρασης - των αιτημάτων του φιλοξενούμενου ΛΣ. + Βασικό χαρακτηριστικό ενός υπερ-επόπτη είναι η απόδοσή του. Αυτή + διαφέρει από τον ένα υπερ-επόπτη στον άλλο αναλόγως την κατασκευή και + τον τύπο του. Όμως, εν γένει, οι υπερ-επόπτες τύπου 1 θα πρέπει να + παρέχουν απόδοση κοντά στην εγγενή λόγω της απουσίας ανάγκης μετάφρασης + των αιτημάτων του φιλοξενούμενου ΛΣ. \item \textbf{Οικοσύστημα}: @@ -505,18 +545,17 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η υπάρχει καλή τεκμηρίωση και διάφορα εργαλεία είτε επίσημα είτε από την κοινότητα που να επιτρέπουν δυνατότητες όπως δημιουργία αντιγράφων ασφαλείας, ανάλυση χωρητικότητας και διαχείριση εναλλαγής εικονικών - μηχανών \footfullcite{vmfailover} με αντίγραφα τους σε περιπτώσεις - σφάλματος του λειτουργικού συστήματος της εκτελούμενης (εικονικής - μηχανής). + μηχανών \cite{vmfailover} με αντίγραφα τους σε περιπτώσεις σφάλματος + του λειτουργικού συστήματος της εκτελούμενης (εικονικής μηχανής). \item \textbf{Εργαλεία διαχείρισης}: - Η εκτέλεση εικονικών μηχανών δεν αποτελεί το μοναδικό καθήκον ενός - διαχειριστή κατά τη χρήση ενός υπερ-επόπτη. Απαραίτητες πρόσθετες - ενέργειες είναι η συντήρηση και η ανάλυσή τους, καθώς και η διαγραφή - όσων δε χρησιμοποιούνται πλέον. Επομένως, η ύπαρξη εργαλείων που να - καθιστούν δυνατές αυτές τις ενέργειες αποτελεί σημαντικό παράγοντα κατά - την επιλογή λογισμικού υπερ-επόπτη. + Η εκτέλεση εικονικών μηχανών δεν αποτελεί το μοναδικό καθήκον ενός + διαχειριστή κατά τη χρήση ενός υπερ-επόπτη. Απαραίτητες πρόσθετες + ενέργειες είναι η συντήρηση και η ανάλυσή τους, καθώς και η διαγραφή + όσων δε χρησιμοποιούνται πλέον. Επομένως, η ύπαρξη εργαλείων που να + καθιστούν δυνατές αυτές τις ενέργειες αποτελεί σημαντικό παράγοντα κατά + την επιλογή λογισμικού υπερ-επόπτη. \item \textbf{Μεταφορά κατά τη λειτουργία}: @@ -526,33 +565,31 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η χρησιμεύει τόσο για την αποτροπή αποτυχίας παροχής υπηρεσιών της εκάστοτε επιχείρησης όσο και για την εξισορρόπηση του φόρτου εργασίας. -\clearpage - \item \textbf{Κόστος}: - Το κόστος είναι ένας παράγοντας που πρέπει να ληφθεί υπόψιν κατά την - επιλογή ενός υπερ-επόπτη. Οι περισσότεροι είναι δωρεάν αλλά υπάρχουν - και εμπορικές εκδόσεις που προσφέρουν περισσότερες δυνατότητες. Για - παράδειγμα, η ύπαρξη ή μη, λογισμικού διαχείρισής τους που να επιτρέπει - την εύκολη κλιμάκωση με βάση τις απαιτήσεις της επιχείρησης. + Το κόστος είναι ένας παράγοντας που πρέπει να ληφθεί υπόψιν κατά την + επιλογή ενός υπερ-επόπτη. Οι περισσότεροι είναι δωρεάν αλλά υπάρχουν + και εμπορικές εκδόσεις που προσφέρουν περισσότερες δυνατότητες. Για + παράδειγμα, η ύπαρξη ή μη, λογισμικού διαχείρισής τους που να επιτρέπει + την εύκολη κλιμάκωση με βάση τις απαιτήσεις της επιχείρησης. \end{itemize} \subsection{Επιλογή υπερ-επόπτη} \label{hypervisorSelection} - Σε κάθε περίπτωση υπερ-επόπτη, το φιλοξενούμενο ΛΣ δεν γνωρίζει πως - εκτελείται σε εικονικοποιημένο περιβάλλον ενώ στην περίπτωση παραβίασης - του ίδιου, η χειραγώγηση όλων των εικονικών μηχανών θα μπορεί να - πραγματοποιηθεί χωρίς μεγάλη δυσκολία. +Σε κάθε περίπτωση υπερ-επόπτη, το φιλοξενούμενο ΛΣ δεν γνωρίζει πως εκτελείται +σε εικονικοποιημένο περιβάλλον ενώ στην περίπτωση παραβίασης του ίδιου, η +χειραγώγηση όλων των εικονικών μηχανών θα μπορεί να πραγματοποιηθεί χωρίς +μεγάλη δυσκολία. - Η επιλογή του τύπου υπερ-επόπτη που θα χρησιμοποιηθεί είναι άμεσα - εξαρτώμενη από τις ανάγκες του κάθε τελικού χρήση ή επιχείρησης - ζυγίζοντας τα πλεονεκτήματα και μειονεκτήματα που έρχονται με την κάθε - επιλογή. Παραδείγματος χάριν, αν η ταχύτητα και η απόδοση αποτελούν - χαρακτηριστικά υψίστης σημασίας, τότε η επιλογή υπερ-επόπτη τύπου 1 - αποτελεί μονόδρομο. Από την άλλη, αν η προτεραιότητα είναι η ευκολία - διαχείρισης και η ευελιξία ταχείας εναλλαγής σε διαφορετικά λειτουργικά - συστήματα, η πιο ταιριαστή επιλογή είναι ένας υπερ-επόπτης τύπου 2. +Η επιλογή του τύπου υπερ-επόπτη που θα χρησιμοποιηθεί είναι άμεσα εξαρτώμενη +από τις ανάγκες του κάθε τελικού χρήση ή επιχείρησης ζυγίζοντας τα +πλεονεκτήματα και μειονεκτήματα που έρχονται με την κάθε επιλογή. Παραδείγματος +χάριν, αν η ταχύτητα και η απόδοση αποτελούν χαρακτηριστικά υψίστης σημασίας, +τότε η επιλογή υπερ-επόπτη τύπου 1 αποτελεί μονόδρομο. Από την άλλη, αν η +προτεραιότητα είναι η ευκολία διαχείρισης και η ευελιξία ταχείας εναλλαγής σε +διαφορετικά λειτουργικά συστήματα, η πιο ταιριαστή επιλογή είναι ένας +υπερ-επόπτης τύπου 2. \section {Τρόπος λειτουργίας της εικονικοποίησης} \label{virtualizationOperation} @@ -565,7 +602,7 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η στο υλικό το οποίο θα διαχειρίζεται. Η δουλειά ενός υπερ-επόπτη είναι ουσιαστικά να λάβει τους φυσικούς πόρους ενός (φυσικού) μηχανήματος και να τους χωρίσει με τέτοιο τρόπο ώστε να μπορούν να χρησιμοποιηθούν από τα εικονικά μας -περιβάλλοντα \footfullcite{redhatVirtualization}. +περιβάλλοντα \cite{redhatVirtualization}. \begin{center} \begin{figure}[!ht] @@ -588,23 +625,23 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η μπορεί να διαθέσει τους απαραίτητους για την εκτέλεση πόρους. Όλα αυτά συμβαίνουν με σχεδόν εγγενή ταχύτητα αν γίνεται χρήση υπερ-επόπτη τύπου 1 όπου δεν υπάρχει λειτουργικό σύστημα ανάμεσα στις εικονικές μηχανές και το φυσικό -μηχάνημα. Εξαίρεση στον κανόνα απουσίας λειτουργικού συστήματος αποτελεί η -χρήση ενός υπερ-επόπτη ανοιχτού κώδικα βασισμένου στο KVM (Kernel-based Virtual -Machine), που επιτρέπει στο Linux να συμπεριφέρεται ως ένας υπερ-επόπτης. Αυτό -συμβαίνει διότι το KVM αποτελεί κομμάτι του πυρήνα του Linux από την έκδοση -2.6.20 και έπειτα, επιτρέποντάς του να επωφεληθεί από τους διαθέσιμους -μηχανισμούς απομόνωσης μέσω αυτού. Επομένως, του προσφέρεται η ικανότητα να -λάβει αποκλειστικούς πόρους από το φυσικό μηχάνημα \footfullcite{kvm}, κάτι που -εξαλείφει το μειονέκτημα έλλειψης προτεραιότητας των διεργασιών ενός -υπερ-επόπτη τύπου 2 έναντι αυτών του λειτουργικού συστήματος φιλοξενίας. +μηχάνημα. -\clearpage +Εξαίρεση στον κανόνα απουσίας λειτουργικού συστήματος αποτελεί η χρήση ενός +υπερ-επόπτη ανοιχτού κώδικα βασισμένου στο KVM (Kernel-based Virtual Machine), +που επιτρέπει στο Linux να συμπεριφέρεται ως ένας υπερ-επόπτης. Αυτό συμβαίνει +διότι το KVM αποτελεί κομμάτι του πυρήνα του Linux από την έκδοση 2.6.20 και +έπειτα, επιτρέποντάς του να επωφεληθεί από τους διαθέσιμους μηχανισμούς +απομόνωσης μέσω αυτού. Επομένως, του προσφέρεται η ικανότητα να λάβει +αποκλειστικούς πόρους από το φυσικό μηχάνημα \cite{kvm}, κάτι που εξαλείφει το +μειονέκτημα έλλειψης προτεραιότητας των διεργασιών ενός υπερ-επόπτη τύπου 2 +έναντι αυτών του λειτουργικού συστήματος φιλοξενίας. \subsection{Είδη εικονικοποίησης} \label{virtualizationImplementations} Υπάρχουν πολλά είδη εικονικοποίησης. Πέντε βασικά αυτών όπως αναφέρονται από -την Red Hat \footfullcite{redhatVirtualization} και τρία ακόμα που -χρησιμοποιούνται συχνά είναι τα παρακάτω: +την Red Hat \cite{redhatVirtualization} και τρία ακόμα που χρησιμοποιούνται +συχνά είναι τα παρακάτω: \begin{itemize} @@ -622,19 +659,18 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \end{itemize} - Η εικονικοποίηση δεδομένων είναι μια προσέγγιση ενσωμάτωσης δεδομένων - από διαφορετικές πηγές, σε μια ολιστική, λογική προβολή δίχως την - ανάγκη της φυσικής μετακίνησής τους \footfullcite{dataVirtualization}. - Δηλαδή διασκορπισμένα ετερογενή δεδομένα παρεχόμενα από πηγές διαφόρων - τοποθεσιών δύναται να συσσωματωθούν σε μοναδικά, λογικά τεμάχια μιας - ενιαίας εικονικής πηγής. Με αυτόν τον τρόπο, οι εταιρείες μπορούν από - ένα μόνο μοντέλο διαχείρισης δεδομένων να οργανώσουν και να - επεξεργαστούν διασκορπισμένες πληροφορίες με γνώμονα τις ανάγκες των - χρηστών με μεγαλύτερη ευκολία και αποδοτικότητα χωρίς την ανάγκη να - γνωρίζουν τεχνικές λεπτομέρειες (όπως γλώσσες πρόσβασης, δομές - αποθήκευσης κα.). Τομείς οι οποίοι επωφελούνται από την εικονικοποίηση - δεδομένων είναι η λήψη αποφάσεων, η επιχειρηματική αναλυτική και η - αξιολόγηση των κινδύνων. +Η εικονικοποίηση δεδομένων είναι μια προσέγγιση ενσωμάτωσης δεδομένων από +διαφορετικές πηγές, σε μια ολιστική, λογική προβολή δίχως την ανάγκη της +φυσικής μετακίνησής τους \cite{dataVirtualization}. Δηλαδή, διασκορπισμένα +ετερογενή δεδομένα παρεχόμενα από πηγές διαφόρων τοποθεσιών δύναται να +συσσωματωθούν σε μοναδικά, λογικά τεμάχια μιας ενιαίας εικονικής πηγής. Με +αυτόν τον τρόπο, οι εταιρείες μπορούν από ένα μόνο μοντέλο διαχείρισης +δεδομένων να οργανώσουν και να επεξεργαστούν διασκορπισμένες πληροφορίες με +γνώμονα τις ανάγκες των χρηστών με μεγαλύτερη ευκολία και αποδοτικότητα, χωρίς +την ανάγκη να γνωρίζουν τεχνικές λεπτομέρειες (όπως γλώσσες πρόσβασης, δομές +αποθήκευσης κα.). Τομείς οι οποίοι επωφελούνται από την εικονικοποίηση +δεδομένων είναι η λήψη αποφάσεων, η επιχειρηματική αναλυτική και η αξιολόγηση +των κινδύνων. \clearpage @@ -645,7 +681,7 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \begin{center} \begin{figure}[!ht] \centering - \includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_desktop_virtualization.png} + \includegraphics[width = .8\textwidth]{Figures/RedHat_Virtualization/redhat_desktop_virtualization.png} \captionof{figure}{Εικονικοποίηση Επιφάνειας Εργασίας \cite{redhatVirtualization}} \label{fig:desktopVirtualization} \end{figure} @@ -654,17 +690,16 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \end{itemize} - Με την εικονικοποίηση επιφάνειας εργασίας, δίνεται σε έναν κεντρικό - διαχειριστή η ικανότητα διαμοιρασμού προσομοιωμένων περιβαλλόντων - εργασίας σε εκατοντάδες φυσικές μηχανές ή συσκευές ταυτοχρόνως. Εν - αντιθέσει με τα παραδοσιακά περιβάλλοντα εργασίας που χρήζουν - εγκατάστασης, διαμόρφωσης και ενημέρωσης σε κάθε υπολογιστή, η - εικονικοποίηση επιφάνειας εργασίας καθιστά δυνατή τη μαζική διαμόρφωση, - ενημέρωση και έλεγχο ασφαλείας σε όλα τα εικονικά περιβάλλοντα εργασίας - που παρέχονται από έναν μόνο διακομιστή. Καθ' αυτόν τον τρόπο, οι - επιχειρήσεις επιτρέπουν στους χρήστες να μπορούν να εργαστούν από - οπουδήποτε και με κάθε συσκευή ανεξαρτήτως του είδους ή του - λειτουργικού συστήματός τους \footfullcite{desktopVirtualization}. +Με την εικονικοποίηση επιφάνειας εργασίας, δίνεται σε έναν κεντρικό διαχειριστή +η ικανότητα διαμοιρασμού προσομοιωμένων περιβαλλόντων εργασίας σε εκατοντάδες +φυσικές μηχανές ή συσκευές ταυτοχρόνως. Εν αντιθέσει με τα παραδοσιακά +περιβάλλοντα εργασίας που χρήζουν εγκατάστασης, διαμόρφωσης και ενημέρωσης σε +κάθε υπολογιστή, η εικονικοποίηση επιφάνειας εργασίας καθιστά δυνατή τη μαζική +διαμόρφωση, ενημέρωση και έλεγχο ασφαλείας σε όλα τα εικονικά περιβάλλοντα +εργασίας που παρέχονται από έναν μόνο διακομιστή. Καθ' αυτόν τον τρόπο, οι +επιχειρήσεις επιτρέπουν στους χρήστες να μπορούν να εργαστούν από οπουδήποτε +και με κάθε συσκευή ανεξαρτήτως του είδους ή του λειτουργικού συστήματός τους +\cite{desktopVirtualization}. \clearpage @@ -675,7 +710,7 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \begin{center} \begin{figure}[!ht] \centering - \includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_server_virtualization.png} + \includegraphics[width = .8\textwidth]{Figures/RedHat_Virtualization/redhat_server_virtualization.png} \captionof{figure}{Εικονικοποίηση Διακομιστών \cite{redhatVirtualization}} \label{fig:serverVirtualization} \end{figure} @@ -684,21 +719,19 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \end{itemize} - Οι διακομιστές είναι υπολογιστές σχεδιασμένοι με σκοπό να - επεξεργάζονται πολύ καλά έναν μεγάλο όγκο συγκεκριμένων διεργασιών, - ώστε οι κύριοι υπολογιστές μιας επιχείρησης να μπορούν να δίνουν - προτεραιότητα σε άλλες εργασίες. Με την εικονικοποίηση διακομιστών - αναφερόμαστε στην διαδικασία κατά την οποία ένας φυσικός διακομιστής - χωρίζεται σε πολλούς μικρότερους εικονικούς διακομιστές, με απώτερο - σκοπό την αποτελεσματικότερη αξιοποίηση των πόρων του. Αυτό είναι - απαραίτητο διότι προτιμάται για λόγους ευκολίας της διαχείρισής τους, - κάθε διακομιστής να είναι υπεύθυνος για μια μόνο διεργασία την φορά. - Μετά την κατάτμησή του, ενώ μπορεί να ακολουθείται η ίδια πρακτική, - παύει το φυσικό μηχάνημα να μένει με αχρησιμοποίητους πόρους και - πρακτικά μπορεί το σύνολο τον πόρων του να χρησιμοποιηθεί για την - εξυπηρέτηση πολλαπλών λειτουργιών. Ο ορισμός της εικονικοποίησης - διακομιστών αναλύθηκε πιο λεπτομερώς και στο - \ref{virtualizationDefinition}. +Οι διακομιστές είναι υπολογιστές σχεδιασμένοι με σκοπό να επεξεργάζονται πολύ +καλά έναν μεγάλο όγκο συγκεκριμένων διεργασιών, ώστε οι κύριοι υπολογιστές μιας +επιχείρησης να μπορούν να δίνουν προτεραιότητα σε άλλες εργασίες. Με την +εικονικοποίηση διακομιστών αναφερόμαστε στην διαδικασία κατά την οποία ένας +φυσικός διακομιστής χωρίζεται σε πολλούς μικρότερους εικονικούς διακομιστές, με +απώτερο σκοπό την αποτελεσματικότερη αξιοποίηση των πόρων του. Αυτό είναι +απαραίτητο διότι προτιμάται για λόγους ευκολίας της διαχείρισής τους, κάθε +διακομιστής να είναι υπεύθυνος για μια μόνο διεργασία την φορά. Μετά την +κατάτμησή του, ενώ μπορεί να ακολουθείται η ίδια πρακτική, παύει το φυσικό +μηχάνημα να μένει με αχρησιμοποίητους πόρους και πρακτικά μπορεί το σύνολο τον +πόρων του να χρησιμοποιηθεί για την εξυπηρέτηση πολλαπλών λειτουργιών. Ο +ορισμός της εικονικοποίησης διακομιστών αναλύθηκε πιο λεπτομερώς και στο +\ref{virtualizationDefinition}. \clearpage @@ -709,7 +742,7 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \begin{center} \begin{figure}[!ht] \centering - \includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_os_virtualization.png} + \includegraphics[width = .8\textwidth]{Figures/RedHat_Virtualization/redhat_os_virtualization.png} \captionof{figure}{Εικονικοποίηση Λειτουργικού Συστήματος \cite{redhatVirtualization}} \label{fig:operatingSystemVirtualization} \end{figure} @@ -718,16 +751,15 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \end{itemize} - Η εικονικοποίηση λειτουργικού συστήματος είναι κάτι που συμβαίνει στον - πυρήνα. Αποτελεί υποκατηγορία της εικονικοποίησης διακομιστών και - πραγματοποιείται σε επίπεδο λειτουργικού συστήματος. Ουσιαστικά - αναφερόμαστε στην διαδικασία της δοχειοποίησης και συγκεκριμένα, την - δοχειοποίηση λειτουργικών συστημάτων. Κατά την χρήση της, μπορούν να - εκτελεστούν ταυτοχρόνως πολλαπλά λειτουργικά συστήματα μέσα σε - απομονωμένα εικονικά περιβάλλοντα, όπου το κάθε ένα από αυτά μοιράζεται - τον ίδιο πυρήνα με το λειτουργικό σύστημα φιλοξενίας. Μεγαλύτερη - ανάλυση της εικονικοποίησης σε επίπεδο λειτουργικού συστήματος - πραγματοποιήθηκε στο \ref{osVirtualization}. +Η εικονικοποίηση λειτουργικού συστήματος είναι κάτι που συμβαίνει στον πυρήνα. +Αποτελεί υποκατηγορία της εικονικοποίησης διακομιστών και πραγματοποιείται σε +επίπεδο λειτουργικού συστήματος. Ουσιαστικά αναφερόμαστε στην διαδικασία της +δοχειοποίησης και συγκεκριμένα, την δοχειοποίηση λειτουργικών συστημάτων. Κατά +την χρήση της, μπορούν να εκτελεστούν ταυτοχρόνως πολλαπλά λειτουργικά +συστήματα μέσα σε απομονωμένα εικονικά περιβάλλοντα, όπου το κάθε ένα από αυτά +μοιράζεται τον ίδιο πυρήνα με το λειτουργικό σύστημα φιλοξενίας. Μεγαλύτερη +ανάλυση της εικονικοποίησης σε επίπεδο λειτουργικού συστήματος πραγματοποιήθηκε +στο \ref{osVirtualization}. \clearpage @@ -738,7 +770,7 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \begin{center} \begin{figure}[!ht] \centering - \includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_network_function_virtualization.png} + \includegraphics[width = .7\textwidth]{Figures/RedHat_Virtualization/redhat_network_function_virtualization.png} \captionof{figure}{Εικονικοποίηση Λειτουργιών Δικτύου \cite{redhatVirtualization}} \label{fig:networkFunctionVirtualization} \end{figure} @@ -747,28 +779,25 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \end{itemize} - Η εικονικοποίηση λειτουργιών δικτύου (Network Functions Virtualization - - NFV) διαχωρίζει τις βασικές λειτουργίες ενός δικτύου (όπως ο - διαμοιρασμός αρχείων, και η διαμόρφωση IP), ώστε να μπορούν να - διανεμηθούν σε διάφορα περιβάλλοντα. Από τη στιγμή που οι λειτουργίες - λογισμικού είναι ανεξάρτητες από τα φυσικά μηχανήματα στα οποία - εκτελούνται, συγκεκριμένες λειτουργίες μπορούν να πακεταριστούν μαζί σε - ένα νέο δίκτυο και να ανατεθούν σε ένα ξεχωριστό περιβάλλον. Η - εικονικοποίηση των δικτύων μειώνει τον αριθμό των φυσικών εξαρτημάτων, - όπως οι μεταγωγείς, δρομολογητές, διακομιστές, καλώδια και κόμβοι, που - απαιτούνται για τη δημιουργία πολλαπλών, ανεξάρτητων δικτύων και είναι - ιδιαίτερα δημοφιλής στον κλάδο των τηλεπικοινωνιών. Παραδοσιακά, οι - λειτουργίες δικτύου εκτελούνταν σε ιδιόκτητο υλικό συγκεκριμένου σκοπού - και επομένως ήταν απαραίτητο να πραγματοποιηθεί αγορά, ρύθμιση και - συντήρηση του κάθε φυσικού εξαρτήματος. Με την αύξηση όμως της - δημοτικότητας των τεχνολογιών εικονικοποίησης, άρχισε να γίνεται πιο - δημοφιλής και η πρακτική πακεταρίσματος των λειτουργιών των εξαρτημάτων - αυτών σε διακομιστές κοινής χρήσης (commodity servers). Το αποτέλεσμα - αυτού, ήταν η απόκτηση της δυνατότητας εκτέλεσης των λειτουργιών - δικτύου μιας επιχείρησης σε τυπικούς διακομιστές γενικού σκοπού και - κατά προέκταση, η αντικατάσταση κάθε ξεχωριστού φυσικού μηχανήματος με - ένα αντίστοιχο εικονικό εκτελούμενο μέσα από μια εικονική μηχανή - \footfullcite{redhatNFV}. +Η εικονικοποίηση λειτουργιών δικτύου (Network Functions Virtualization - NFV) +διαχωρίζει τις βασικές λειτουργίες ενός δικτύου (όπως ο διαμοιρασμός αρχείων, +και η διαμόρφωση IP), ώστε να μπορούν να διανεμηθούν σε διάφορα περιβάλλοντα. +Από τη στιγμή που οι λειτουργίες λογισμικού είναι ανεξάρτητες από τα φυσικά +μηχανήματα στα οποία εκτελούνται, συγκεκριμένες λειτουργίες μπορούν να +πακεταριστούν μαζί σε ένα νέο δίκτυο και να ανατεθούν σε ένα ξεχωριστό +περιβάλλον. Η εικονικοποίηση των δικτύων μειώνει τον αριθμό των φυσικών +εξαρτημάτων, όπως οι μεταγωγείς, δρομολογητές, διακομιστές, καλώδια και κόμβοι, +που απαιτούνται για τη δημιουργία πολλαπλών, ανεξάρτητων δικτύων και είναι +ιδιαίτερα δημοφιλής στον κλάδο των τηλεπικοινωνιών. Παραδοσιακά, οι λειτουργίες +δικτύου εκτελούνταν σε ιδιόκτητο υλικό συγκεκριμένου σκοπού και επομένως ήταν +απαραίτητο να πραγματοποιηθεί αγορά, ρύθμιση και συντήρηση του κάθε φυσικού +εξαρτήματος. Με την αύξηση όμως της δημοτικότητας των τεχνολογιών +εικονικοποίησης, άρχισε να γίνεται πιο δημοφιλής και η πρακτική πακεταρίσματος +των λειτουργιών των εξαρτημάτων αυτών σε διακομιστές κοινής χρήσης (commodity +servers). Το αποτέλεσμα αυτού, ήταν η απόκτηση της δυνατότητας εκτέλεσης των +λειτουργιών δικτύου μιας επιχείρησης σε τυπικούς διακομιστές γενικού σκοπού και +κατά προέκταση, η αντικατάσταση κάθε ξεχωριστού φυσικού μηχανήματος με ένα +αντίστοιχο εικονικό εκτελούμενο μέσα από μια εικονική μηχανή \cite{redhatNFV}. \clearpage @@ -779,7 +808,7 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \begin{center} \begin{figure}[!ht] \centering - \includegraphics[width = .5\textwidth]{Figures/VMWARE_Virtualization/vmware_memory_virtualization.png} + \includegraphics[width = .8\textwidth]{Figures/VMWARE_Virtualization/vmware_memory_virtualization.png} \captionof{figure}{Εικονικοποίηση Μνήμης \cite{vmwareMemoryVirtualization}} \label{fig:memoryVirtualization} \end{figure} @@ -788,26 +817,24 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \end{itemize} - Η εικονικοποίηση μνήμης αποτελεί ένα κομμάτι της ευρύτερης έννοιας της - εικονικοποίησης πόρων \footfullcite{hostitsmartMemoryVirtualization}. - Συγκεκριμένα, είναι μια τεχνική κατά την οποία δύναται να - διαχειριστούμε με έναν πιο αποδοτικό τρόπο την φυσική μνήμη (RAM) που - χρησιμοποιείται στα υπολογιστικά μας συστήματα. Αυτό συμβαίνει διότι - στην βασικότερη μορφή της, η εικονικοποίηση μνήμης εμφανίζεται ως - εικονική μνήμη ή όπως η μνήμη swap σε διακομιστές και σταθμούς εργασίας - \footfullcite{petriMemoryVirtualization}. Δηλαδή, ως επιπρόσθετη μνήμη - την οποία το σύστημα εκλαμβάνει ως πραγματική και μπορεί να την - χρησιμοποιήσει προτού αναγκαστεί να τερματίσει διεργασίες για να - απελευθερώσει κομμάτι της δικής του μνήμης. Για να επιτευχθεί αυτό, - μέσω του υπερ-επόπτη πραγματοποιείται αντιστοίχιση σελίδων φυσικής - μνήμης του φιλοξενούμενου λειτουργικού συστήματος στις σελίδες φυσικής - μνήμης της υποκείμενης μηχανής. Καθ' αυτόν τον τρόπο, κάθε εικονική - μηχανή βλέπει έναν συνεχόμενο χώρο διευθύνσεων μνήμης που δύναται να - χρησιμοποιήσει \footfullcite{vmwareMemoryVirtualization}. Ως - αποτέλεσμα, επιτυγχάνεται εν γένει υψηλότερη αξιοποίηση της μνήμης και - η δυνατότητα διαμοιρασμού μιας κοινής δεξαμενής μνήμης ακόμα και σε - κατανεμημένα συστήματα, παρακάμπτοντας τους περιορισμούς της φυσικής - μνήμης \footfullcite{codingninjasMemoryVirtualization}. +Η εικονικοποίηση μνήμης αποτελεί ένα κομμάτι της ευρύτερης έννοιας της +εικονικοποίησης πόρων \cite{hostitsmartMemoryVirtualization}. Συγκεκριμένα, +είναι μια τεχνική κατά την οποία δύναται να διαχειριστούμε με έναν πιο +αποδοτικό τρόπο την φυσική μνήμη (RAM) που χρησιμοποιείται στα υπολογιστικά μας +συστήματα. Αυτό συμβαίνει διότι στην βασικότερη μορφή της, η εικονικοποίηση +μνήμης εμφανίζεται ως εικονική μνήμη ή όπως η μνήμη swap σε διακομιστές και +σταθμούς εργασίας \cite{petriMemoryVirtualization}. Δηλαδή, ως επιπρόσθετη +μνήμη την οποία το σύστημα εκλαμβάνει ως πραγματική και μπορεί να την +χρησιμοποιήσει προτού αναγκαστεί να τερματίσει διεργασίες για να απελευθερώσει +κομμάτι της δικής του μνήμης. Για να επιτευχθεί αυτό, μέσω του υπερ-επόπτη +πραγματοποιείται αντιστοίχιση σελίδων φυσικής μνήμης του φιλοξενούμενου +λειτουργικού συστήματος στις σελίδες φυσικής μνήμης της υποκείμενης μηχανής. +Καθ' αυτόν τον τρόπο, κάθε εικονική μηχανή βλέπει έναν συνεχόμενο χώρο +διευθύνσεων μνήμης που δύναται να χρησιμοποιήσει +\cite{vmwareMemoryVirtualization}. Ως αποτέλεσμα, επιτυγχάνεται εν γένει +υψηλότερη αξιοποίηση της μνήμης και η δυνατότητα διαμοιρασμού μιας κοινής +δεξαμενής μνήμης ακόμα και σε κατανεμημένα συστήματα, παρακάμπτοντας τους +περιορισμούς της φυσικής μνήμης \cite{codingninjasMemoryVirtualization}. \clearpage @@ -818,7 +845,7 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \begin{center} \begin{figure}[!ht] \centering - \includegraphics[width = .4\textwidth]{Figures/UnixArena_Virtualization/unixarena_storage_virtualization.png} + \includegraphics[width = .5\textwidth]{Figures/UnixArena_Virtualization/unixarena_storage_virtualization.png} \captionof{figure}{Εικονικοποίηση Αποθήκευσης \cite{unixarenaVirtualization}} \label{fig:storageVirtualization} \end{figure} @@ -827,27 +854,24 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \end{itemize} - Ένα ακόμα κομμάτι της ευρύτερης έννοιας της εικονικοποίησης πόρων είναι - και η εικονικοποίηση αποθήκευσης. Συγκεκριμένα, ο όρος εικονικοποίηση - αποθήκευσης αναφέρεται στην πρακτική της συγκέντρωσης φυσικού - αποθηκευτικού χώρου από πολλαπλές συσκευές αποθήκευσης σε μια - φαινομενικά ενιαία, εικονική συσκευή - \footfullcite{ubackupStorageVirtualization}. Παρομοίως με την - εικονικοποίηση μνήμης, αυτό είναι κάτι που θα επιτρέψει την υψηλότερη - αξιοποίηση δίσκου, θα επιφέρει μεγαλύτερη ευελιξία στον τομέα της - αποθήκευσης και επιπλέον, θα αποτελέσει ένα πιο διαχειρίσιμο μοντέλο - χώρου αποθήκευσης σε σχέση με το παραδοσιακό, όπου κάθε υπολογιστής - έχει πρόσβαση μονάχα στον δικό του δίσκο. +Ένα ακόμα κομμάτι της ευρύτερης έννοιας της εικονικοποίησης πόρων είναι και η +εικονικοποίηση αποθήκευσης. Συγκεκριμένα, ο όρος εικονικοποίηση αποθήκευσης +αναφέρεται στην πρακτική της συγκέντρωσης φυσικού αποθηκευτικού χώρου από +πολλαπλές συσκευές αποθήκευσης σε μια φαινομενικά ενιαία, εικονική συσκευή +\cite{ubackupStorageVirtualization}. Παρομοίως με την εικονικοποίηση μνήμης, +αυτό είναι κάτι που θα επιτρέψει την υψηλότερη αξιοποίηση δίσκου, θα επιφέρει +μεγαλύτερη ευελιξία στον τομέα της αποθήκευσης και επιπλέον, θα αποτελέσει ένα +πιο διαχειρίσιμο μοντέλο χώρου αποθήκευσης σε σχέση με το παραδοσιακό, όπου +κάθε υπολογιστής έχει πρόσβαση μονάχα στον δικό του δίσκο. - Προκειμένου να γίνει πράξη, απαιτείται αναλόγως την μέθοδο - εικονικοποίησης και τον τύπο της, είτε να χρησιμοποιηθεί ένας - αλγόριθμος για να εντοπίσει δυναμικά τα δεδομένα είτε να δημιουργηθεί - ένας χάρτης αντιστοίχισής τους χρησιμοποιώντας μεταδεδομένα - \footfullcite{cloudinfraStorageVirtualization}. Αφότου γίνει αυτό, τα - δεδομένα πλέον αποθηκεύονται σε ένα αρχείο και οι συστοιχίες δίσκων - τοποθετούνται μέσα σε μια εικονική δεξαμενή. Έπειτα, κάθε αίτημα - ανάγνωσης και εγγραφής από τις εφαρμογές φιλτράρεται και δύναται έμμεσα - μέσω των αντιστοιχιών η δυνατότητα εύρεσης και αποθήκευσης δεδομένων. +Προκειμένου να γίνει πράξη, απαιτείται αναλόγως την μέθοδο εικονικοποίησης και +τον τύπο της, είτε να χρησιμοποιηθεί ένας αλγόριθμος για να εντοπίσει δυναμικά +τα δεδομένα είτε να δημιουργηθεί ένας χάρτης αντιστοίχισής τους χρησιμοποιώντας +μεταδεδομένα \cite{cloudinfraStorageVirtualization}. Αφότου γίνει αυτό, τα +δεδομένα πλέον αποθηκεύονται σε ένα αρχείο και οι συστοιχίες δίσκων +τοποθετούνται μέσα σε μια εικονική δεξαμενή. Έπειτα, κάθε αίτημα ανάγνωσης και +εγγραφής από τις εφαρμογές φιλτράρεται και δύναται έμμεσα μέσω των αντιστοιχιών +η δυνατότητα εύρεσης και αποθήκευσης δεδομένων. \clearpage @@ -858,7 +882,7 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \begin{center} \begin{figure}[!ht] \centering - \includegraphics[width = .5\textwidth]{Figures/TutorialsPoint_Virtualization/tutorialspoint_application_virtualization.jpg} + \includegraphics[width = .8\textwidth]{Figures/TutorialsPoint_Virtualization/tutorialspoint_application_virtualization.jpg} \captionof{figure}{Εικονικοποίηση Εφαρμογών \cite{tutorialsPointVirtualization}} \label{fig:applicationVirtualization} \end{figure} @@ -867,18 +891,17 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \end{itemize} - Όπως και η εικονικοποίηση λειτουργικού συστήματος, έτσι και η - εικονικοποίηση εφαρμογών αποτελεί υποκατηγορία της εικονικοποίησης - διακομιστών και υπάγεται στην διαδικασία της δοχειοποίησης. Το - επιθυμητό αποτέλεσμα της εικονικοποίησης εφαρμογών είναι ο διαχωρισμός - των βιβλιοθηκών και εξαρτήσεων τους από το περιβάλλον στο οποίο - εκτελούνται μέσω της δημιουργίας δοχείων. Στα δοχεία αυτά, - εικονικοποιούνται οι απαραίτητοι υπολογιστικοί πόροι όπως το - λειτουργικό σύστημα, η μνήμη και η κεντρική μονάδα επεξεργασίας - \footfullcite{geeksforgeeksApplicationVirtualization}, κάνοντας χρήση - των διαθέσιμων μηχανισμών απομόνωσης του πυρήνα του λειτουργικού - συστήματος. Περισσότερες λεπτομέρειες για τον τρόπο κατά τον οποίο - επιτυγχάνεται αυτό, παρουσιάζονται στο \ref{osVirtualization}. +Όπως και η εικονικοποίηση λειτουργικού συστήματος, έτσι και η εικονικοποίηση +εφαρμογών αποτελεί υποκατηγορία της εικονικοποίησης διακομιστών και υπάγεται +στην διαδικασία της δοχειοποίησης. Το επιθυμητό αποτέλεσμα της εικονικοποίησης +εφαρμογών είναι ο διαχωρισμός των βιβλιοθηκών και εξαρτήσεων τους από το +περιβάλλον στο οποίο εκτελούνται μέσω της δημιουργίας δοχείων. Στα δοχεία αυτά, +εικονικοποιούνται οι απαραίτητοι υπολογιστικοί πόροι όπως το λειτουργικό +σύστημα, η μνήμη και η κεντρική μονάδα επεξεργασίας +\cite{geeksforgeeksApplicationVirtualization}, κάνοντας χρήση των διαθέσιμων +μηχανισμών απομόνωσης του πυρήνα του λειτουργικού συστήματος. Περισσότερες +λεπτομέρειες για τον τρόπο κατά τον οποίο επιτυγχάνεται αυτό, παρουσιάζονται +στο \ref{osVirtualization}. \clearpage @@ -886,7 +909,7 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα Η εικονικοποίηση προσφέρει πολλά πλεονεκτήματα στις επιχειρήσεις. Τα πιο αξιοσημείωτα αυτών με βάση την \citeauthor{ibmVirtualizationDefinition} -\footfullcite{ibmVirtualizationDefinition} είναι τα εξής: +\cite{ibmVirtualizationDefinition} είναι τα εξής: \begin{itemize} @@ -898,26 +921,24 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα φιλοξενήσει πολλαπλές εικονικές μηχανές, αυτές με την σειρά τους δύναται να αντικαταστήσουν άλλους φυσικούς διακομιστές που θα ήταν απαραίτητοι για την εκτέλεση διαφορετικών λειτουργιών - \footfullcite{mediumVirtualization}. Με αυτόν τον τρόπο, εξοικονομείται - η ενέργεια που θα απαιτούσε η διάθεση των υπολογιστικών πόρων των - φυσικών μηχανημάτων που αποσύρθηκαν, ενώ ταυτόχρονα αξιοποιούνται σε - μεγαλύτερο βαθμό οι υπολογιστικοί πόροι του μηχανήματος που φιλοξενεί - τις εικονικές μηχανές. + \cite{mediumVirtualization}. Με αυτόν τον τρόπο, εξοικονομείται η + ενέργεια που θα απαιτούσε η διάθεση των υπολογιστικών πόρων των φυσικών + μηχανημάτων που αποσύρθηκαν, ενώ ταυτόχρονα αξιοποιούνται σε μεγαλύτερο + βαθμό οι υπολογιστικοί πόροι του μηχανήματος που φιλοξενεί τις + εικονικές μηχανές. \item \textbf{Ευκολότερη διαχείριση}: - Αντικαθιστώντας φυσικούς υπολογιστές με προγραμματιστικά καθορισμένες - εικονικές μηχανές δύναται η χρήση αυτοματοποιημένων ροών διαχειριστικών - εργασιών. Οι διαχειριστές συστημάτων μπορούν να χρησιμοποιούν εργαλεία - για τον καθορισμό εικονικών μηχανών χρησιμοποιώντας πρότυπα κατάλληλα - για την υποδομή κάθε επιχείρησης. Με αυτόν τον τρόπο, η εγκατάσταση και - η ρύθμισή τους μπορεί να γίνεται επανειλημμένα με αυτοματοποιημένο - τρόπο δίχως το ρίσκο ανθρώπινου λάθους και γλιτώνοντας τον χρόνο - εγκατάστασης και ρύθμισής τους χειροκίνητα. Ένας συνδυασμός εργαλείων - που κάνει αυτή τη διαδικασία πραγματικότητα είναι τα Ansible - \footfullcite{ansible} και Terraform \footfullcite{terraform}. - -\clearpage + Αντικαθιστώντας φυσικούς υπολογιστές με προγραμματιστικά καθορισμένες + εικονικές μηχανές δύναται η χρήση αυτοματοποιημένων ροών διαχειριστικών + εργασιών. Οι διαχειριστές συστημάτων μπορούν να χρησιμοποιούν εργαλεία + για τον καθορισμό εικονικών μηχανών χρησιμοποιώντας πρότυπα κατάλληλα + για την υποδομή κάθε επιχείρησης. Με αυτόν τον τρόπο, η εγκατάσταση και + η ρύθμισή τους μπορεί να γίνεται επανειλημμένα με αυτοματοποιημένο + τρόπο δίχως το ρίσκο ανθρώπινου λάθους και γλιτώνοντας τον χρόνο + εγκατάστασης και ρύθμισής τους χειροκίνητα. Ένας συνδυασμός εργαλείων + που κάνει αυτή τη διαδικασία πραγματικότητα είναι τα Ansible + \footfullcite{ansible} και Terraform \footfullcite{terraform}. \item \textbf{Ελάχιστος χρόνος διακοπής λειτουργίας}: @@ -947,7 +968,7 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα υπερ-επόπτες που μπορεί να διαφέρουν όχι μόνο στα χαρακτηριστικά τους αλλά και στις διάφορες τεχνικές που χρησιμοποιούν για να κάνουν την εικονικοποίηση πραγματικότητα. Μια από αυτές ονομάζεται παρα-εικονικοποίηση -(para-virtualization) \footfullcite{suseParavirtualizationDefinition}. +(para-virtualization) \cite{suseParavirtualizationDefinition}. Κάθε εικονική μηχανή απαιτεί ένα συγκεκριμένο ποσοστό χρήσης υπολογιστικών πόρων του φυσικού διακομιστή για να εκτελείται. Μέσα σε αυτό το ποσοστό, @@ -958,48 +979,43 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα προκύπτουν και προβλήματα καθυστέρησης αφού η διαδικασία της μετάφρασης απαιτεί κάποιο χρόνο για να διεκπεραιωθεί. -\clearpage - Επομένως, η πλήρης εικονικοποίηση περιορίζει σημαντικά τον αριθμό των εικονικών μηχανών που δύναται ένας διακομιστής να εκτελέσει παράλληλα, όπως επίσης και τα είδη εφαρμογών που μπορούν να εκτελεστούν σε μια εικονική μηχανή (εφόσον η ταχύτητα εκτέλεσης τους παίζει σημαντικό ρόλο στην ευχρηστία τους). Μερικοί τομείς που επωφελούνται από την παρα-εικονικοποίηση είναι η χρήση λογισμικών που επιτρέπουν την ανάκαμψη από καταστροφές, την μετανάστευση δεδομένων μεταξύ -λειτουργικών συστημάτων -\footfullcite{insightsForProfessionalsParavirtualization} ή ακόμα και λογισμικά -ενσωματωμένων συστημάτων αυτοκινήτων -\footfullcite{blackberryParavirtualization}. +λειτουργικών συστημάτων \cite{insightsForProfessionalsParavirtualization} ή +ακόμα και λογισμικά ενσωματωμένων συστημάτων αυτοκινήτων +\cite{blackberryParavirtualization}. Η παρα-εικονικοποίηση είναι μια τεχνική εικονικοποίησης που αναπτύχθηκε προκειμένου να ξεπεραστούν τα προαναφερόμενα προβλήματα επιδόσεων που έρχονται με την χρήση της πλήρους εικονικοποίησης. Κατά την χρήση της, το φιλοξενούμενο λειτουργικό σύστημα δεν είναι πλήρως απομονωμένο από το υλικό αλλά απομονώνεται -μερικώς \footfullcite{serverWatchParavirtualization} και έχει άμεση επικοινωνία -με αυτό. Υπάρχει δηλαδή επίγνωση της εικονικοποίησης από μεριάς του ΛΣ των +μερικώς \cite{serverWatchParavirtualization} και έχει άμεση επικοινωνία με +αυτό. Υπάρχει δηλαδή επίγνωση της εικονικοποίησης από μεριάς του ΛΣ των εικονικών μηχανών και αξιοποίηση της, μέσω της χρήσης υπερ-κλήσεων προς τον υπερ-επόπτη. Οι κλήσεις αυτές, επιτρέπουν σε κάθε ΛΣ να ζητάει πόρους κατά παραγγελία και να αναθέτει την εκτέλεση διεργασιών του απευθείας στο υλικό. Για να μπορέσει να επιτευχθεί αυτό, απαιτείται η τροποποίηση του φιλοξενούμενου λειτουργικού συστήματος, η οποία θα του επιτρέπει την υλοποίηση ενός ειδικού API, ώστε να μπορεί να κάνει χρήση των υπερ-κλήσεων -\footfullcite{servermaniaParavirtualization}, ενώ επιβάλλεται να υποστηρίζεται -και από τον υπερ-επόπτη η κατανόησή τους. - -\clearpage +\cite{servermaniaParavirtualization}, ενώ επιβάλλεται να υποστηρίζεται και από +τον υπερ-επόπτη η κατανόησή τους. Παρ' όλα τα πλεονεκτήματα που παρέχει η χρήση της παρα-εικονικοποίησης, υπάρχουν και μερικά ζητήματα που πρέπει να ληφθούν υπόψιν. Εξαιτίας της ανάγκης τροποποίησης του λειτουργικού συστήματος των φιλοξενούμενων λειτουργικών συστημάτων, αυτά καθίστανται λιγότερο φορητά σε σχέση με την πλήρη εικονικοποίηση, αφού τροποποιούνται για την υποστήριξη συγκεκριμένου υλικού -αντί ενός υπερ-επόπτη \footfullcite{blackberryParavirtualization}. Ταυτοχρόνως, -η στενή εξάρτηση μεταξύ του υπερ-επόπτη και των φιλοξενούμενων ΛΣ μπορεί να -διακοπεί από τις ενημερώσεις του λειτουργικού συστήματος -\footfullcite{insightsForProfessionalsParavirtualization}, κάνοντας την +αντί ενός υπερ-επόπτη \cite{blackberryParavirtualization}. Ταυτοχρόνως, η στενή +εξάρτηση μεταξύ του υπερ-επόπτη και των φιλοξενούμενων ΛΣ μπορεί να διακοπεί +από τις ενημερώσεις του λειτουργικού συστήματος +\cite{insightsForProfessionalsParavirtualization}, κάνοντας την παρα-εικονικοποίηση λιγότερο αξιόπιστη. -Στο σχήμα \ref{fig:FullVirtualization} +Στο Σχήμα \ref{fig:FullVirtualization} \cite{geeksforgeeksParavirtualizationDefinition} παρουσιάζεται η αρχιτεκτονική της πλήρους εικονικοποίησης όπου το φιλοξενούμενο λειτουργικό σύστημα (της εικονικής μηχανής) επιβάλλεται να περάσει τα αιτήματά του (πρόσβασης πόρων) @@ -1017,7 +1033,7 @@ API, ώστε να μπορεί να κάνει χρήση των υπερ-κλ \clearpage -Αντιθέτως, στo σχήμα \ref{fig:ParaVirtualization} όπου και φαίνεται η +Αντιθέτως, στo Σχήμα \ref{fig:ParaVirtualization} όπου και φαίνεται η αρχιτεκτονική της παρα-εικονικοποίησης, βλέπουμε πως μέσω των υπερ-κλήσεων, όλα τα αιτήματα προορίζονται στη στρώση εικονικοποίησης και από εκεί στο κύριο σύστημα (χωρίς την ανάγκη κάποιας επεξεργασίας ή μετάφρασης). @@ -1034,9 +1050,9 @@ API, ώστε να μπορεί να κάνει χρήση των υπερ-κλ \clearpage -Οι διαφορές της πλήρους εικονικοποίησης με την παρα-εικονικοποίηση με βάση τον -οργανισμό \citeauthor{geeksforgeeksParavirtualizationDefinition} -\footfullcite{geeksforgeeksParavirtualizationDefinition} είναι οι εξής: +\noindent Οι διαφορές της πλήρους εικονικοποίησης με την παρα-εικονικοποίηση με +βάση τον οργανισμό \citeauthor{geeksforgeeksParavirtualizationDefinition} +\cite{geeksforgeeksParavirtualizationDefinition} είναι οι εξής: \begin{savenotes} % by the package footnote because footfullcite did not work inside a tabular \selectfont @@ -1065,8 +1081,7 @@ API, ώστε να μπορεί να κάνει χρήση των υπερ-κλ Λιγότερο ασφαλής. & Υπάρχει επίγνωση του εικονικού περιβάλλοντος και δε γίνεται εκκίνηση του BIOS -\footfullcite{ParavirtualizationSecurity}, πράγμα που την καθιστά ασφαλέστερη. -\\ +\cite{ParavirtualizationSecurity}, πράγμα που την καθιστά ασφαλέστερη. \\ \hline @@ -1082,7 +1097,7 @@ API, ώστε να μπορεί να κάνει χρήση των υπερ-κλ 4 & Πιο αργές ταχύτητες -\footfullcite{ParavirtualizationVmware}\footnote{\textgreek{Με βάση την VMware, +\cite{ParavirtualizationVmware}\footnote{\textgreek{Με βάση την VMware, η απόδοση της παρα-εικονικοποίησης είναι καλύτερη υπό ορισμένες περιπτώσεις, ενώ η πλήρης εικονικοποίηση με χρήση δυαδικής μετάφρασης παρέχει καλύτερη απόδοση από την πρώτη γενιά εικονικοποίησης υποβοηθούμενη από το υλικό.}}. & @@ -1113,15 +1128,13 @@ API, ώστε να μπορεί να κάνει χρήση των υπερ-κλ \end{table} \end{savenotes} -\clearpage - \section{Ασφάλεια στην εικονικοποίηση} \label{virtualizationSecurity} Η χρήση της εικονικοποίησης παρέχει αρκετά εγγενή οφέλη ασφαλείας με την μορφή μέτρων ανάκαμψης από επιθέσεις. Ένα σημαντικό αυτών, είναι η ικανότητα επαναφοράς εικονικών μηχανών που έχουν μολυνθεί με κακόβουλο λογισμικό σε μια χρονική περίοδο πριν τη μόλυνση τους. Αυτό επιτυγχάνεται μέσω της δυνατότητας -δημιουργίας στιγμιοτύπων εικονικών μηχανών \footfullcite{vmSnapshots}, η οποία +δημιουργίας στιγμιοτύπων εικονικών μηχανών \cite{vmSnapshots}, η οποία παρέχεται από τον υπερ-επόπτη. Επιπρόσθετα, μπορεί εύκολα να πραγματοποιηθεί διαγραφή και αναδημιουργία τους με έναν αυτοματοποιημένο τρόπο, σε περίπτωση που η επαναφορά σε προηγούμενη χρονική περίοδο για οποιονδήποτε λόγο δεν είναι @@ -1131,7 +1144,7 @@ API, ώστε να μπορεί να κάνει χρήση των υπερ-κλ υπάρχουν αντίγραφα ασφαλείας τους. Αυτές οι λειτουργίες είναι αρκετές φορές αδύνατο να εφαρμοστούν σε ένα φυσικό μηχάνημα διότι το κακόβουλο λογισμικό συχνά μπορεί να είναι βαθιά ριζωμένο στα βασικά συστατικά του συστήματος -\footfullcite{ibmVirtualizationDefinition}. Επιπλέον, ακόμα και αν το κακόβουλο +\cite{ibmVirtualizationDefinition}. Επιπλέον, ακόμα και αν το κακόβουλο λογισμικό ήταν σε θέση να εξαφανιστεί με μια επαναφορά, κάτι τέτοιο θα χρειαζόταν σημαντικά περισσότερο χρόνο για να διεκπεραιωθεί σε ένα φυσικό μηχάνημα συγκριτικά με μια εικονική μηχανή. @@ -1146,9 +1159,7 @@ API, ώστε να μπορεί να κάνει χρήση των υπερ-κλ φορές η ανάγκη διαμοιρασμού δεδομένων μεταξύ των εικονικών μηχανών και του ΛΣ φιλοξενίας. Επομένως, η παραβίαση ενός υπερ-επόπτη τύπου 2 μπορεί δυνητικά να οδηγήσει στην εξάπλωση κακόβουλου λογισμικού και να κινδυνεύσει όλο το σύστημα -\footfullcite{techtargetHypervisorSecurity}. - -\clearpage +\cite{techtargetHypervisorSecurity}. \subsection{Απειλές στην εικονικοποίηση} \label{virtualizationThreats} @@ -1160,7 +1171,9 @@ API, ώστε να μπορεί να κάνει χρήση των υπερ-κλ \cite{arif2015virtualization} αναφέρεται στην εικονικοποίηση χώρου αποθήκευσης μέσω δικτύου αλλά πολλές από τις απειλές δεν περιορίζονται μονάχα εκεί. -Πολλές από τις απειλές που θα αναφερθούν παρακάτω στο +\clearpage + +\noindent Πολλές από τις απειλές που θα αναφερθούν παρακάτω στο \ref{virtualizationThreatsCategorization}, μπορούν να κατηγοριοποιηθούν και ως εξής: @@ -1225,8 +1238,6 @@ API, ώστε να μπορεί να κάνει χρήση των υπερ-κλ \renewcommand{\arraystretch}{1} \end{table} -\clearpage - \subsubsection{Απειλές για τον πάροχο νέφους μέσω δικτύου} \label{cloudProviderThreatsOverNetwork} Σήμερα όλο και περισσότερες επιχειρήσεις θα προτιμήσουν να βασιστούν σε έναν @@ -1239,7 +1250,7 @@ API, ώστε να μπορεί να κάνει χρήση των υπερ-κλ απαραίτητη η μεταφορά δεδομένων από την επιχείρηση προς τον πάροχο νέφους, στις υποδομές του οποίου στεγάζονται οι εφαρμογές τους. Όπως αναφέραμε όμως στο \ref{cloudComputingSecurity}, εισάγεται έτσι ένα αναγκαίο μοντέλο εμπιστοσύνης -ανάμεσα στον πάροχο νέφους και τις επιχειρήσεις. Δηλαδή ταυτόχρονη εμπιστοσύνη +ανάμεσα στον πάροχο νέφους και τις επιχειρήσεις. Δηλαδή, ταυτόχρονη εμπιστοσύνη ως προς την απουσία μη εξουσιοδοτημένης πρόσβασης σε αυτά από τον πάροχο και ως προς την ικανότητα του παρόχου να λάβει τα απαραίτητα μέτρα ασφαλείας για την προστασία τους από εξωτερικούς κακόβουλους χρήστες. @@ -1257,10 +1268,8 @@ injection), χειραγώγησης cookies ή εκμετάλλευσης μη έτσι σε κίνδυνο ευαίσθητες πληροφορίες και δεδομένα των επιχειρήσεων. Επιπλέον, επειδή όλα τα δίκτυα είναι επιρρεπή σε επιθέσεις αν δεν έχουν ληφθεί τα κατάλληλα μέτρα προστασίας, ένας πάροχος πρέπει να μπορεί να προστατευτεί από -επιθέσεις όπως η κατασκοπεία και διείσδυση δικτύου (network -penetration)\cite{arif2015virtualization}. - -\clearpage +επιθέσεις όπως η κατασκοπεία και διείσδυση δικτύου (network penetration) +\cite{arif2015virtualization}. \subsubsection{Απειλές για τον πάροχο νέφους μέσω εικονικών μηχανών} \label{cloudProviderAttackOverVMs} @@ -1410,38 +1419,36 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ \begin{center} \begin{figure}[!ht] \centering - \includegraphics[width = .9\textwidth]{Figures/Enisa/enisaThreats.jpg} + \includegraphics[width = .91\textwidth]{Figures/Enisa/enisaThreats.jpg} \captionof{figure}{Πιθανά σημεία εμφάνισης τρωτοτήτων και οι απειλές που τους αντιστοιχούν} \label{fig:virtualizationThreats.png} \end{figure} \vspace*{-30pt} \end{center} -\clearpage - \subsection{Η τριάδα της ασφάλειας} \label{securityTriad} Εν γένει, ο λόγος που μια επιχείρηση ενδιαφέρεται για την ασφάλεια, είναι προκειμένου να διασφαλίσει την ακεραιότητα, την εμπιστευτικότητα και τη διαθεσιμότητα των δεδομένων της. Αυτά τα τρία στοιχεία αποτελούν την τριάδα της -ασφάλειας \footfullcite{ciaTriad} και η απώλεια οποιουδήποτε από αυτά μπορεί να -έχει σοβαρές επιπτώσεις για την επιχείρηση. Η σημασία του καθενός, καθώς και -γενικές ορθές πρακτικές διατήρησής τους περιγράφονται ως εξής: +ασφάλειας \cite{ciaTriad} και η απώλεια οποιουδήποτε από αυτά μπορεί να έχει +σοβαρές επιπτώσεις για την επιχείρηση. Η σημασία του καθενός, καθώς και γενικές +ορθές πρακτικές διατήρησής τους περιγράφονται ως εξής: \begin{itemize} \item \textbf{Ακεραιότητα δεδομένων} \label{dataIntegrity} - Η ακεραιότητα των δεδομένων είναι ένα από τα τρία βασικά στοιχεία της - ασφάλειας, δίχως την οποία οι επιχειρήσεις δε θα μπορούσαν να - παραμείνουν λειτουργικές. Αναφέρεται στην προστασία των δεδομένων από - μη εξουσιοδοτημένη αλλοίωση καθ' όλη τη διάρκεια της ύπαρξής τους. - Δηλαδή είτε βρίσκονται στο στάδιο της μεταφοράς, είτε της αποθήκευσης. - Για κάθε επιχείρηση, απαιτείται μεγάλη προσοχή κατά τον σχεδιασμό των - βάσεων δεδομένων και της συντήρησής τους σε περιβάλλοντα νέφους αλλά - και η χρήση ορθών πρακτικών, όπως ο περιοδικός έλεγχος των δεδομένων - για την ανίχνευση πιθανών αλλοιώσεων και η χρήση μηχανισμών αναγνώρισης - και αποκατάστασης σφαλμάτων. + Η ακεραιότητα των δεδομένων είναι ένα από τα τρία βασικά στοιχεία της + ασφάλειας, δίχως την οποία οι επιχειρήσεις δε θα μπορούσαν να + παραμείνουν λειτουργικές. Αναφέρεται στην προστασία των δεδομένων από + μη εξουσιοδοτημένη αλλοίωση καθ' όλη τη διάρκεια της ύπαρξής τους. + Δηλαδή είτε βρίσκονται στο στάδιο της μεταφοράς, είτε της αποθήκευσης. + Για κάθε επιχείρηση, απαιτείται μεγάλη προσοχή κατά τον σχεδιασμό των + βάσεων δεδομένων και της συντήρησής τους σε περιβάλλοντα νέφους αλλά + και η χρήση ορθών πρακτικών, όπως ο περιοδικός έλεγχος των δεδομένων + για την ανίχνευση πιθανών αλλοιώσεων και η χρήση μηχανισμών αναγνώρισης + και αποκατάστασης σφαλμάτων. \item \textbf{Εμπιστευτικότητα δεδομένων} \label{dataConfidentiality} @@ -1457,25 +1464,23 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ νέφους προκειμένου να διαπιστωθεί ο τρόπος εξασφάλισης της εμπιστευτικότητας των δεδομένων από μεριάς του. -\clearpage - \item \textbf{Διαθεσιμότητα δεδομένων} \label{dataAvailability} - Η διαθεσιμότητα των δεδομένων, που ολοκληρώνει την τριάδα της - ασφάλειας, είναι το στοιχείο που εξασφαλίζει πως μια επιχείρηση θα - μπορεί να παρέχει τις υπηρεσίες της στους τελικούς της χρήστες. - Αναφέρεται στην αποφυγή της διακοπής πρόσβασης στα δεδομένα της από - εξουσιοδοτημένους φορείς και εξαρτάται άμεσα από τη συνεχή παροχή - υπηρεσιών υποδομών προς την επιχείρηση. Η απώλειά της θα είχε ως - αποτέλεσμα την διακοπή σημαντικών λειτουργιών της και δυνητικά την - μείωση της αξιοπιστίας της. Για να μπορέσει να διασφαλιστεί, πρέπει μια - επιχείρηση να έχει προβλέψει για ένα σχέδιο ανάκτησης εφεδρικών - αντιγράφων προς αποφυγή της απώλειας σημαντικών δεδομένων της, καθώς - και για ένα σχέδιο επαναφοράς των διαδικασιών παροχής τους ώστε να - μειώσει στο ελάχιστο την οποιαδήποτε διάρκεια διακοπής των υπηρεσιών - της. Τέλος, πρέπει να υπάρχει εμπιστοσύνη προς τον πάροχο νέφους πως - δεν θα υπάρξει από μεριάς του απρόσμενη διακοπή της λειτουργίας - υποδομών που μπορεί να είναι απαραίτητες για την επιχείρηση. + Η διαθεσιμότητα των δεδομένων, που ολοκληρώνει την τριάδα της + ασφάλειας, είναι το στοιχείο που εξασφαλίζει πως μια επιχείρηση θα + μπορεί να παρέχει τις υπηρεσίες της στους τελικούς της χρήστες. + Αναφέρεται στην αποφυγή της διακοπής πρόσβασης στα δεδομένα της από + εξουσιοδοτημένους φορείς και εξαρτάται άμεσα από τη συνεχή παροχή + υπηρεσιών υποδομών προς την επιχείρηση. Η απώλειά της θα είχε ως + αποτέλεσμα την διακοπή σημαντικών λειτουργιών της και δυνητικά την + μείωση της αξιοπιστίας της. Για να μπορέσει να διασφαλιστεί, πρέπει μια + επιχείρηση να έχει προβλέψει για ένα σχέδιο ανάκτησης εφεδρικών + αντιγράφων προς αποφυγή της απώλειας σημαντικών δεδομένων της, καθώς + και για ένα σχέδιο επαναφοράς των διαδικασιών παροχής τους ώστε να + μειώσει στο ελάχιστο την οποιαδήποτε διάρκεια διακοπής των υπηρεσιών + της. Τέλος, πρέπει να υπάρχει εμπιστοσύνη προς τον πάροχο νέφους πως + δεν θα υπάρξει από μεριάς του απρόσμενη διακοπή της λειτουργίας + υποδομών που μπορεί να είναι απαραίτητες για την επιχείρηση. \end{itemize} @@ -1485,22 +1490,20 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ παραπάνω, θα πρέπει να έχει λάβει τα κατάλληλα μέτρα ασφαλείας. Μερικές ορθές πρακτικές με βάση τους οργανισμούς \citeauthor{geeksforgeeksVirtualizationSecurityGoodPractices} -\footfullcite{geeksforgeeksVirtualizationSecurityGoodPractices} και -\citeauthor{enisaSecurityOfVirtualization} -\footfullcite{enisaSecurityOfVirtualization} είναι οι παρακάτω: +\cite{geeksforgeeksVirtualizationSecurityGoodPractices} και +\citeauthor{enisaSecurityOfVirtualization} \cite{enisaSecurityOfVirtualization} +είναι οι παρακάτω: \begin{itemize} \item \textbf{Συχνή ενημέρωση του υπερ-επόπτη}: - Ο υπερ-επόπτης είναι ο πυρήνας του συστήματος εικονικοποίησης και - επομένως η ασφάλειά του είναι ζωτικής σημασίας. Οι εταιρείες που - αναπτύσσουν το λογισμικό του, τον ενημερώνουν συχνά για να διορθώσουν - τυχόν ευπάθειες που έχουν ανακαλυφθεί. Επομένως, οι επιχειρήσεις πρέπει - να εφαρμόζουν τις ενημερώσεις αυτές το συντομότερο δυνατόν από την - στιγμή που θα είναι διαθέσιμες. - -\clearpage + Ο υπερ-επόπτης είναι ο πυρήνας του συστήματος εικονικοποίησης και + επομένως η ασφάλειά του είναι ζωτικής σημασίας. Οι εταιρείες που + αναπτύσσουν το λογισμικό του, τον ενημερώνουν συχνά για να διορθώσουν + τυχόν ευπάθειες που έχουν ανακαλυφθεί. Επομένως, οι επιχειρήσεις πρέπει + να εφαρμόζουν τις ενημερώσεις αυτές το συντομότερο δυνατόν από την + στιγμή που θα είναι διαθέσιμες. \item \textbf{Περιορισμός πρόσβασης στο διαχειριστικό πάνελ του υπερ-επόπτη}: @@ -1512,12 +1515,14 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ \item \textbf{Έλεγχος των μηχανημάτων που έχουν πρόσβαση στον υπερ-επόπτη}: - Οι επιχειρήσεις πρέπει να ελέγχουν συχνά ποια μηχανήματα έχουν πρόσβαση - στον υπερ-επόπτη και να προσθέτουν ή να αφαιρούν μηχανήματα από την - λίστα εξουσιοδότησης. Ο συχνός έλεγχος πρόσβασης θα μπορέσει επίσης να - αναδείξει προσπάθειες μη εξουσιοδοτημένης πρόσβασης ώστε να ληφθούν τα - κατάλληλα μέτρα περιορισμού των ατόμων που επιχειρούν να εισέλθουν σε - αυτόν. + Οι επιχειρήσεις πρέπει να ελέγχουν συχνά ποια μηχανήματα έχουν πρόσβαση + στον υπερ-επόπτη και να προσθέτουν ή να αφαιρούν μηχανήματα από την + λίστα εξουσιοδότησης. Ο συχνός έλεγχος πρόσβασης θα μπορέσει επίσης να + αναδείξει προσπάθειες μη εξουσιοδοτημένης πρόσβασης ώστε να ληφθούν τα + κατάλληλα μέτρα περιορισμού των ατόμων που επιχειρούν να εισέλθουν σε + αυτόν. + +\clearpage \item \textbf{Περιορισμός δικτυακής πρόσβασης στο διαχειριστικό πάνελ του υπερ-επόπτη}: @@ -1551,16 +1556,16 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ βοηθήσει στην ορθότερη θέση σε λειτουργία υπαρχόντων μηχανισμών ασφαλείας και ανίχνευσης εισβολών. -\clearpage - \item \textbf{Ορθή διαχείριση στιγμιοτύπων εικονικών μηχανών}: - Κάθε στιγμιότυπο μιας εικονικής μηχανής, δύναται να περιέχει ευαίσθητα - δεδομένα όπως κωδικοί και προσωπικά δεδομένα χρηστών. Συνεπώς, πρέπει - κατά την αποθήκευσή τους να προστατεύονται έναντι μη εξουσιοδοτημένης - πρόσβασης, τροποποίησης και αντικατάστασης. Αυτό περιλαμβάνει την ορθή - κρυπτογράφησή τους και την διαγραφή όσων στιγμιοτύπων δεν χρειάζονται - πλέον. + Κάθε στιγμιότυπο μιας εικονικής μηχανής, δύναται να περιέχει ευαίσθητα + δεδομένα όπως κωδικοί και προσωπικά δεδομένα χρηστών. Συνεπώς, πρέπει + κατά την αποθήκευσή τους να προστατεύονται έναντι μη εξουσιοδοτημένης + πρόσβασης, τροποποίησης και αντικατάστασης. Αυτό περιλαμβάνει την ορθή + κρυπτογράφησή τους και την διαγραφή όσων στιγμιοτύπων δεν χρειάζονται + πλέον. + +\clearpage \item \textbf{Ασφάλιση του μηχανήματος φιλοξενίας}: @@ -1574,37 +1579,91 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ \end{itemize} +\section{Δοχεία και εικόνες δοχείων} \label{containersAndContainerImages} + +Τα δοχεία αποτελούν και αυτά κομμάτι των τεχνολογιών εικονικοποίησης αλλά σε +επίπεδο λειτουργικού συστήματος. Κατά την περιγραφή της διαδικασίας δημιουργίας +δοχείων δεν χρησιμοποιείται πλέον ο όρος εικονικοποίηση αλλά δοχειοποίηση +(containerization). Σε αντίθεση με τις τεχνολογίες εικονικοποίησης που +αναφέρθηκαν στο \ref{virtualizationTechnologiesIntroduction}, για την +δοχειοποίηση δεν είναι αναγκαία η ύπαρξη υπερ-επόπτη αλλά έναν παρόμοιο ρόλο +αναλαμβάνει η μηχανή δοχείων. Επιπλέον, ενώ οι εικονικές μηχανές καταλήγουν να +περιέχουν εικονικό αντίγραφο του υλικού, δικό τους λειτουργικό σύστημα και +εγκατεστημένα πακέτα προς υποστήριξη ενός λογισμικού, τα δοχεία αποτελούνται +μονάχα από το λογισμικό προς εκτέλεση και τις εξαρτήσεις (βιβλιοθήκες και +προγράμματα) που χρειάζεται προκειμένου αυτό να είναι λειτουργικό. + +Τα απαραίτητα συστατικά για την επίτευξη της δοχειοποίησης είναι μια εικόνα +δοχείου και μια μηχανή δοχείων. Στην εικόνα δοχείου εμπεριέχονται τα συστατικά +μέρη ενός λογισμικού και οδηγίες συναρμολόγησής του προς ανάγνωση από την +μηχανή δοχείων. Η συναρμολόγησή του πραγματοποιείται σε στρώσεις. Δηλαδή για να +φτάσουμε στο τελικό αποτέλεσμα, κάθε αυτοτελές κομμάτι του λογισμικού εισάγεται +πάνω από το προηγούμενό του. Από εκεί και πέρα, για την δημιουργία δοχείων από +τις αντίστοιχες εικόνες τους υπάρχει μια αλληλουχία βημάτων που πρέπει να +περαιωθεί. Αρχικά, η μηχανή δοχείων θα προσπελάσει την εικόνα δοχείου +προκειμένου να εξακριβώσει τις προδιαγραφές του. Έπειτα, με την βοήθεια των +μεθόδων απομόνωσης που έχει στην διάθεση της μέσω των μηχανισμών +εικονικοποίησης του πυρήνα του λειτουργικού συστήματος φιλοξενίας, θα +δημιουργήσει ένα εικονικό περιβάλλον απομονωμένο από το ήδη υπάρχον φυσικό και +τέλος, θα πραγματοποιήσει εκκίνηση του δοχείου ως διεργασία του συστήματος. + +Ορισμένα από αυτά τα βήματα περιλαμβάνουν και άλλες διαδικασίες για τις οποίες +είναι υπεύθυνα συγκεκριμένα προγράμματα με τα οποία συνεργάζεται η μηχανή +δοχείων. Υπάρχουν και μηχανές δοχείων χαμηλού επιπέδου έναντι των πιο γνωστών +υψηλού επιπέδου όπως το Docker, στις οποίες λείπουν ορισμένες λειτουργίες, όπως +η απόκτηση εικόνων δοχείων από ένα κεντρικό αποθετήριο και ο έλεγχος +εγκυρότητας των ρυθμίσεων των εικόνων αυτών. Οι μηχανές δοχείων υψηλού επιπέδου +είναι ουσιαστικά μια συλλογή εργαλείων που διευκολύνουν την δοχειοποίηση +απαλλάσσοντας τον χρήστη από την ανάγκη της χειροκίνητης εκτέλεσης των βημάτων +της \cite{sysdigContainerRuntime}. + +Το τελικό επιθυμητό αποτέλεσμα είναι η δημιουργία ενός απομονωμένου +περιβάλλοντος στο οποίο πραγματοποιείται η εκτέλεση ενός λογισμικού με +βιβλιοθήκες και εξαρτήσεις διαφορετικών εκδόσεων συγκριτικά με αυτές που μπορεί +να προϋπάρχουν στο σύστημα. Το περιβάλλον αυτό είναι υποχρεωμένο να +χρησιμοποιήσει ένα υποσύνολο των πόρων του συστήματος που του απονεμήθηκε μέσω +της μηχανής δοχείων. Τα παραπάνω είναι εφικτά και με την χρήση εικονικών +μηχανών αλλά με κόστος την επιβάρυνση του συστήματος φιλοξενίας λόγω της +αδυναμίας διαμοιρασμού των πόρων με τον τρόπο που το επιτυγχάνουν τα δοχεία. +Κάθε δοχείο μοιράζεται τον πυρήνα του λειτουργικού συστήματος φιλοξενίας με τα +υπόλοιπα και κάθε στρώση μιας εικόνας δοχείου αντιστοιχουμένη σε ένα +στιγμιότυπο λογισμικού, δύναται να χρησιμοποιηθεί ταυτοχρόνως από περισσότερα +του ενός δοχεία προς αποφυγή διπλής αποθήκευσης +\cite{codemotionContainerImages}. Επιπλέον, κάθε εικόνα δοχείου δύναται να +χρησιμοποιηθεί ως πρότυπο για την δημιουργία μιας καινούριας, καθιστώντας έτσι +ευκολότερη την επεκτασιμότητα ενός λογισμικού σε αντίθεση με τις εικονικές +μηχανές, όπου κάθε νέο στιγμιότυπό τους απαιτεί την επαναληπτική εκτέλεση των +βημάτων δημιουργίας τους. + \section{Δοχειοποίηση} \label{containerizationDefinition} Πέραν της πλήρους εικονικοποίησης και της παρα-εικονικοποίησης, εδώ και αρκετά χρόνια πολλές επιχειρήσεις στρέφονται σε τεχνολογίες που χρησιμοποιούν μια υποκατηγορία της εικονικοποίησης, ονόματι δοχειοποίηση (containerization). Με βάση την \citeauthor{ibmContainerizationDefinition} -\footfullcite{ibmContainerizationDefinition}, πρόκειται για το πακετάρισμα -λογισμικού μονάχα με τις βιβλιοθήκες και τις εξαρτήσεις που χρειάζεται για να -εκτελεστεί, δημιουργώντας ένα εκτελέσιμο \textquote{δοχείο} που πάντοτε θα -εκτελείται με την ίδια συμπεριφορά ανεξαρτήτως υποδομής. Με την παραδοσιακή -μέθοδο ανάπτυξης λογισμικού, υπήρχε πάντα το ρίσκο το πρόγραμμα που αναπτύχθηκε -σε ένα συγκεκριμένο περιβάλλον να μη λειτουργεί με τον αναμενόμενο τρόπο κατά -τη μεταφορά του σε ένα άλλο, εκτός εάν έχει ελεγχθεί ότι υπάρχουν όλες οι +\cite{ibmContainerizationDefinition}, πρόκειται για το πακετάρισμα λογισμικού +μονάχα με τις βιβλιοθήκες και τις εξαρτήσεις που χρειάζεται για να εκτελεστεί, +δημιουργώντας ένα εκτελέσιμο \textquote{δοχείο} που πάντοτε θα εκτελείται με +την ίδια συμπεριφορά ανεξαρτήτως υποδομής. Με την παραδοσιακή μέθοδο ανάπτυξης +λογισμικού, υπήρχε πάντα το ρίσκο το πρόγραμμα που αναπτύχθηκε σε ένα +συγκεκριμένο περιβάλλον να μη λειτουργεί με τον αναμενόμενο τρόπο κατά τη +μεταφορά του σε ένα άλλο, εκτός εάν έχει ελεγχθεί ότι υπάρχουν όλες οι εξαρτήσεις που χρειάζεται στις εκδόσεις που τις χρειάζεται. Ακόμα και σε αυτήν την περίπτωση όμως, πέραν του κόπου για τον έλεγχο, είναι αρκετά πιθανό ένα δεύτερο πρόγραμμα να χρειάζεται διαφορετικές εκδόσεις των ίδιων εξαρτήσεων. Αυτό πρακτικά σήμαινε πως το δεύτερο αυτό πρόγραμμα θα έπρεπε να στεγαστεί σε διαφορετικό διακομιστή, αυξάνοντας το σχετικό κόστος. -\clearpage - Τα προβλήματα αυτά έρχεται να λύσει η τεχνολογία της δοχειοποίησης. Με τη δοχειοποίηση, είναι δυνατή η συστέγαση δοχείων, δηλ. διαφορετικών προγραμμάτων ή συστατικών προγραμμάτων στο ίδιο μηχάνημα (είτε αυτό είναι φυσικό είτε εικονικό). Όπως αναφέραμε στο \ref{containerManagement}, από το 2013 και έπειτα η άφιξη του Docker επιτάχυνε κατά πολύ την υιοθέτηση της τεχνολογίας αυτής. Σε -τέτοιο βαθμό που σε μια έρευνα της IBM \footfullcite{ibmContainerSurvey} -βρέθηκε πως το 61\% όσων ξεκίνησαν να χρησιμοποιούν δοχεία, το κάνουν στο 50\% -ή παραπάνω των εφαρμογών που δημιούργησαν τα τελευταία δύο χρόνια, ενώ 64\% -αυτών, αναμένουν στο 50\% των υπαρχουσών εφαρμογών τους να κάνουν χρήση δοχείων -στα επόμενα δύο χρόνια. +τέτοιο βαθμό που σε μια έρευνα της IBM \cite{ibmContainerSurvey} βρέθηκε πως το +61\% όσων ξεκίνησαν να χρησιμοποιούν δοχεία, το κάνουν στο 50\% ή παραπάνω των +εφαρμογών που δημιούργησαν τα τελευταία δύο χρόνια, ενώ 64\% αυτών, αναμένουν +στο 50\% των υπαρχουσών εφαρμογών τους να κάνουν χρήση δοχείων στα επόμενα δύο +χρόνια. Ένας από τους χαρακτηρισμούς των δοχείων είναι η \textquote{ελαφρότητα} τους σε σχέση με μια εικονική μηχανή λόγω της ικανότητας τους να μοιράζονται τον πυρήνα @@ -1632,19 +1691,19 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ συμβάλλοντας έτσι στην εξάλειψη περιττής υπολογιστικής ισχύος, καθιστώντας τα δοχεία μικρά στον χώρο που καταλαμβάνουν, γρήγορα στην εκκίνηση και ικανά να εκτελεστούν σε οποιαδήποτε πλατφόρμα ή περιβάλλον νέφους -\footfullcite{ibmContainerizationDefinition}. +\cite{ibmContainerizationDefinition}. Η δοχειοποίηση εφαρμογών αποτελεί εν γένει την πιο δημοφιλή μορφή δοχειοποίησης που χρησιμοποιείται σήμερα. Είθισται να χρησιμοποιείται σε περιπτώσεις χρήσης μικρο-υπηρεσιών, CI/CD pipelines, επαναλαμβανόμενων διεργασιών και εφαρμογής -μεθόδων DevOps \footfullcite{applicationContainerization}. +μεθόδων DevOps \cite{applicationContainerization}. \subsection{Πλεονεκτήματα Δοχειοποίησης} \label{containerizationAdvantages} Τα δοχεία προσφέρουν μια σειρά από πλεονεκτήματα σε σχέση με τις παραδοσιακές εικονικές μηχανές. Αυτά, σύμφωνα με την \citeauthor{ibmContainerizationDefinition} -\footfullcite{ibmContainerizationDefinition}, είναι τα εξής: +\cite{ibmContainerizationDefinition}, είναι τα εξής: \begin{itemize} @@ -1681,15 +1740,15 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ \item \textbf{Απομόνωση σφαλμάτων}: - Εφόσον κάθε δοχείο είναι απομονωμένο και λειτουργεί ανεξάρτητα από τα - υπόλοιπα, η αποτυχία ενός δοχείου στο ίδιο ΛΣ δε θα επηρεάσει τη συνεχή - λειτουργία των υπόλοιπων δοχείων. Με αυτόν τον τρόπο, οι ομάδες - ανάπτυξης λογισμικού μπορούν να εντοπίζουν και να διορθώνουν τυχόν - τεχνικά προβλήματα χωρίς να υπάρχει διακοπή λειτουργίας σε άλλα δοχεία. - Επιπρόσθετα, ο εντοπισμός του προβλήματος είναι εύκολος διότι εστιάζει - σε ένα μόνο δοχείο και όχι σε περισσότερα. Αυτό οδηγεί σε πιο γρήγορη - αποσφαλμάτωση και εν τέλει στην πιο γρήγορη ανάπτυξη και συντήρηση - προγραμμάτων. + Εφόσον κάθε δοχείο είναι απομονωμένο και λειτουργεί ανεξάρτητα από τα + υπόλοιπα, η αποτυχία ενός δοχείου στο ίδιο ΛΣ δε θα επηρεάσει τη συνεχή + λειτουργία των υπόλοιπων δοχείων. Με αυτόν τον τρόπο, οι ομάδες + ανάπτυξης λογισμικού μπορούν να εντοπίζουν και να διορθώνουν τυχόν + τεχνικά προβλήματα χωρίς να υπάρχει διακοπή λειτουργίας σε άλλα δοχεία. + Επιπρόσθετα, ο εντοπισμός του προβλήματος είναι εύκολος διότι εστιάζει + σε ένα μόνο δοχείο και όχι σε περισσότερα. Αυτό οδηγεί σε πιο γρήγορη + αποσφαλμάτωση και εν τέλει στην πιο γρήγορη ανάπτυξη και συντήρηση + προγραμμάτων. \item \textbf{Αποδοτικότητα}: @@ -1713,16 +1772,16 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ \item \textbf{Ασφάλεια}: - Η απομόνωση των εφαρμογών ως δοχεία, όταν εφαρμόζεται ακολουθώντας - ορθές πρακτικές, εγγενώς αποτρέπει την εισβολή κακόβουλου λογισμικού - από το να επηρεάσει τα υπόλοιπα δοχεία ή το σύστημα στο οποίο - εκτελούνται. Συγκεκριμένα, χρησιμοποιώντας Kernel Security Modules όπως - είναι το AppArmor ή το SELinux μπορούν να ορισθούν άδειες ασφαλείας με - σκοπό τον περιορισμό του εύρους πρόσβασης του Docker στο σύστημα, ενώ - με access authorization plugins - \footfullcite{accessAuthorizationPlugin}, περιορίζεται η πρόσβαση στον - δαίμονα του Docker. Επιπροσθέτως, πολύ εύκολα μπορεί να περιοριστεί και - η επικοινωνία μεταξύ δοχείων, καθώς και με το δίκτυο του συστήματος. + Η απομόνωση των εφαρμογών ως δοχεία, όταν εφαρμόζεται ακολουθώντας + ορθές πρακτικές, εγγενώς αποτρέπει την εισβολή κακόβουλου λογισμικού + από το να επηρεάσει τα υπόλοιπα δοχεία ή το σύστημα στο οποίο + εκτελούνται. Συγκεκριμένα, χρησιμοποιώντας Kernel Security Modules όπως + είναι το AppArmor ή το SELinux μπορούν να ορισθούν άδειες ασφαλείας με + σκοπό τον περιορισμό του εύρους πρόσβασης του Docker στο σύστημα, ενώ + με access authorization plugins \cite{accessAuthorizationPlugin}, + περιορίζεται η πρόσβαση στον δαίμονα του Docker. Επιπροσθέτως, πολύ + εύκολα μπορεί να περιοριστεί και η επικοινωνία μεταξύ δοχείων, καθώς + και με το δίκτυο του συστήματος. \end{itemize} @@ -1743,14 +1802,14 @@ Container Initiative (OCI), η οποία ιδρύθηκε τον Ιούνιο Σήμερα αν και το Docker αποτελεί μία από τις πιο γνωστές και ευρέως χρησιμοποιούμενες μηχανές δοχείων, υπάρχουν πολλές άλλες υλοποιήσεις. -Εναλλακτικές μηχανών δοχείων όπως το Podman \footfullcite{podman} και container +Εναλλακτικές μηχανών δοχείων όπως το Podman \cite{podman} και container runtimes όπως το LXC και το containerd, το οποίο ήταν για καιρό η προεπιλογή του Docker για container runtime προτού υιοθετήσει το runC, μπορεί να έχουν διαφορετικά χαρακτηριστικά και προεπιλογές αλλά η υιοθέτηση και η αξιοποίηση των προδιαγραφών της OCI καθώς αυτές εξελίσσονται θα διασφαλίσει ότι οι εναλλακτικές αυτές παραμένουν ανεξάρτητες από τους προμηθευτές, πιστοποιημένες για να τρέχουν σε πολλαπλά λειτουργικά συστήματα και χρησιμοποιήσιμες σε -πολλαπλά περιβάλλοντα \footfullcite{ibmContainerizationDefinition}. +πολλαπλά περιβάλλοντα \cite{ibmContainerizationDefinition}. Παρότι οι προδιαγραφές της OCI έχουν ως στόχο να διασφαλίσουν την ομοιόμορφη λειτουργία της τεχνολογίας αυτής, υπάρχουν αρκετές διαφορές στην υλοποίηση της. @@ -1772,9 +1831,10 @@ runtimes όπως το LXC και το containerd, το οποίο ήταν γι οποίο προσπαθούσε να κρατήσει μια προσέγγιση ασφαλούς σχεδιασμού εξ αρχής (Secure-by-design). Μπορούσε να ενσωματώσει χαρακτηριστικά ασφαλείας, όπως υποστήριξη SELinux, TPM measurement και εκτέλεση δοχείων σε απομονωμένες από το -υλικό εικονικές μηχανές. Παρ' όλα αυτά, σύμφωνα με το \cite{dockerAlternatives} -\footfullcite{dockerAlternatives}, έπαψε να έχει ενεργή ανάπτυξη και επομένως -δεν θα συνεχίζει να ανταγωνίζεται παρόμοια εργαλεία στον κλάδο των δοχείων. +υλικό εικονικές μηχανές. Παρ' όλα αυτά, σύμφωνα με τον +\citeauthor{dockerAlternatives} \cite{dockerAlternatives}, έπαψε να έχει ενεργή +ανάπτυξη και επομένως δεν θα συνεχίζει να ανταγωνίζεται παρόμοια εργαλεία στον +κλάδο των δοχείων. Στην παράγραφο \ref{virtualizationImplementations} αναφέραμε την εικονικοποίηση λειτουργικού συστήματος και στην \ref{containerManagement} το LXC. Αποτελεί και @@ -1793,8 +1853,8 @@ container runtime χαμηλού επιπέδου ενώ το δεύτερο υ προεπιλογή. Μετέπειτα, αποφάσισε να το καταστήσει ένα αυτόνομο container runtime και αντικαταστάθηκε με το runC προκειμένου να μπορέσουν τα δοχεία του Docker να δουλεύουν ευκολότερα σε διαφορετικές πλατφόρμες όπως το Kubernetes -\footfullcite{containerdRunc}. Επιπροσθέτως, η απόφαση αυτή κατέστησε το Docker -πιο διαχειρίσιμο διότι πλέον αποτελούνταν από πολλά μικρότερα εργαλεία, όπου το +\cite{containerdRunc}. Επιπροσθέτως, η απόφαση αυτή κατέστησε το Docker πιο +διαχειρίσιμο διότι πλέον αποτελούνταν από πολλά μικρότερα εργαλεία, όπου το καθένα από αυτά είχε συγκεκριμένους ρόλους. Αναλυτικότερα, το containerd πλέον είναι υπεύθυνο για την απόκτηση εικόνων δοχείων και την διαχείρισή τους, προτού τις μεταβιβάσει στο runC, το οποίο είναι το εργαλείο που θα αλληλεπιδράσει με @@ -1815,21 +1875,21 @@ Docker να δουλεύουν ευκολότερα σε διαφορετικέ μοιράζονται τον ίδιο πυρήνα σημαίνει πως μια επίθεση με στόχο αυτόν, μπορεί δυνητικά να επηρεάσει όλα τα δοχεία. -Σχετικά με τις εικόνες δοχείων που αναφέρθηκαν στο \ref{containerTechnologies}, -τα κομμάτια δηλαδή από τα οποία μια εφαρμογή σε μορφή δοχείου αποτελείται και -αντιστοιχούν σε καλούπια μέσω των οποίων παράγονται τα δοχεία της εφαρμογής, η -ασφάλεια δεν είναι πάντα εγγυημένη. Αυτό είναι κάτι που συμβαίνει διότι ο -καθένας έχει την δυνατότητα να ανεβάσει μια εικόνα δοχείου προς χρήση από -τρίτους. Σε περίπτωση που δεν εξετασθεί το περιεχόμενό της μπορεί είτε να -περιέχει κακόβουλο λογισμικό, είτε να μην ακολουθούνται ορθές πρακτικές -ασφαλείας με αποτέλεσμα να μένει το σύστημα που την χρησιμοποιεί ευάλωτο σε -επιθέσεις. Συνεπώς, πρέπει να ληφθούν μέτρα προστασίας όπως η χρήση εικόνων -προερχόμενες μόνο από εγκεκριμένες πηγές, δηλαδή να υπάρχει εμπιστοσύνη ανάμεσα -στον προμηθευτή μιας εικόνας δοχείου και τον τελικό χρήστη. Επιπροσθέτως, πριν -την χρήση μιας εικόνας δοχείου, πρέπει αυτή να εξετάζεται με εργαλεία -ανίχνευσης τρωτοτήτων, καθώς και να έχει πραγματοποιηθεί επαρκώς σκλήρυνση του -Docker ώστε να μειωθούν οι επιπτώσεις κατά την χρήση της εαν περιέχει κακόβουλο -λογισμικό. +Σχετικά με τις εικόνες δοχείων που αναφέρθηκαν στο +\ref{virtualizationTechnologiesIntroduction}, τα κομμάτια δηλαδή από τα οποία +μια εφαρμογή σε μορφή δοχείου αποτελείται και αντιστοιχούν σε καλούπια μέσω των +οποίων παράγονται τα δοχεία της εφαρμογής, η ασφάλεια δεν είναι πάντα +εγγυημένη. Αυτό είναι κάτι που συμβαίνει διότι ο καθένας έχει την δυνατότητα να +ανεβάσει μια εικόνα δοχείου προς χρήση από τρίτους. Σε περίπτωση που δεν +εξετασθεί το περιεχόμενό της μπορεί είτε να περιέχει κακόβουλο λογισμικό, είτε +να μην ακολουθούνται ορθές πρακτικές ασφαλείας με αποτέλεσμα να μένει το +σύστημα που την χρησιμοποιεί ευάλωτο σε επιθέσεις. Συνεπώς, πρέπει να ληφθούν +μέτρα προστασίας όπως η χρήση εικόνων προερχόμενες μόνο από εγκεκριμένες πηγές, +δηλαδή να υπάρχει εμπιστοσύνη ανάμεσα στον προμηθευτή μιας εικόνας δοχείου και +τον τελικό χρήστη. Επιπροσθέτως, πριν την χρήση μιας εικόνας δοχείου, πρέπει +αυτή να εξετάζεται με εργαλεία ανίχνευσης τρωτοτήτων, καθώς και να έχει +πραγματοποιηθεί επαρκώς σκλήρυνση του Docker ώστε να μειωθούν οι επιπτώσεις +κατά την χρήση της εαν περιέχει κακόβουλο λογισμικό. Οι πάροχοι τεχνολογίας δοχείων έχουν αποκτήσει μια προσέγγιση ασφαλούς σχεδιασμού ώστε πολλά από τα απαραίτητα μέτρα να είναι ενεργοποιημένα χωρίς την @@ -1838,7 +1898,7 @@ Docker ώστε να μειωθούν οι επιπτώσεις κατά την σύστημα στο οποίο εκτελείται, ενώ άδειες ασφαλείας μπορούν να δοθούν στα δοχεία και τον δαίμονα του Docker μέσω του πυρήνα του ΛΣ, με σκοπό τον επιπρόσθετο περιορισμό χρήσης πόρων και του εύρους του συστήματος στο οποίο έχει πρόσβαση η -μηχανή δοχείων \footfullcite{ibmContainerizationDefinition}. +μηχανή δοχείων \cite{ibmContainerizationDefinition}. \clearpage @@ -1865,37 +1925,37 @@ Docker ώστε να μειωθούν οι επιπτώσεις κατά την σε αυτό. Επίσης, οριοθετούνται τα δικαιώματα των αρχείων του πυρήνα σε μονάχα ανάγνωσης και αποτρέπονται περαιτέρω remountings. - \item \textbf{Device Whitelist Controller}, ενός χαρακτηριστικού των - cgroups που αναφέρεται στο \cite{deviceWhitelistController} - \footfullcite{deviceWhitelistController}, για περιορισμό συσκευών, με τη - βοήθεια του οποίου περιορίζεται το σύνολο τον συσκευών στις οποίες έχει - πρόσβαση ένα δοχείο και το αποτρέπει από το να δημιουργήσει καινούριες - αναπαραστάσεις συσκευών. Επιπροσθέτως, επειδή τα mount γίνονται με τη χρήση - της παραμέτρου nodev\footnote{\textgreek{Μια παράμετρος της εντολής mount - κατά την οποία αποτρέπεται η δημιουργία και η πρόσβαση αναπαραστάσεων - συσκευών που βρίσκονται στον φάκελο /dev.}}, στην περίπτωση που μια - αναπαράσταση συσκευής είχε δημιουργηθεί σε προηγούμενο χρόνο μέσα στην - εικόνα δοχείου που χρησιμοποιήθηκε για να κατασκευαστεί το δοχείο, οι - διεργασίες του δοχείου αυτού δε δύνανται να τη χρησιμοποιήσουν για να - επικοινωνήσουν με τον πυρήνα. Επιπλέον, επειδή η προεπιλεγμένη συνθήκη - είναι να μη δίνονται εκτεταμένα προνόμια σε ένα δοχείο, δεν υπάρχει - πρόσβαση σε καμία συσκευή παρά μόνο εάν γίνει εκτέλεση δοχείου ως χρήστης - με ανώτατα δικαιώματα, όπου τότε υπάρχει πρόσβαση σε όλες (τις συσκευές). + \item \textbf{Device Whitelist Controller}, ενός χαρακτηριστικού + \cite{deviceWhitelistController} των cgroups για περιορισμό + συσκευών, με τη βοήθεια του οποίου περιορίζεται το σύνολο τον συσκευών + στις οποίες έχει πρόσβαση ένα δοχείο και το αποτρέπει από το να + δημιουργήσει καινούριες αναπαραστάσεις συσκευών. Επιπροσθέτως, επειδή + τα mount γίνονται με τη χρήση της παραμέτρου + nodev\footnote{\textgreek{Μια παράμετρος της εντολής mount κατά την + οποία αποτρέπεται η δημιουργία και η πρόσβαση αναπαραστάσεων συσκευών + που βρίσκονται στον φάκελο /dev.}}, στην περίπτωση που μια αναπαράσταση + συσκευής είχε δημιουργηθεί σε προηγούμενο χρόνο μέσα στην εικόνα δοχείου που + χρησιμοποιήθηκε για να κατασκευαστεί το δοχείο, οι διεργασίες του δοχείου αυτού + δε δύνανται να τη χρησιμοποιήσουν για να επικοινωνήσουν με τον πυρήνα. + Επιπλέον, επειδή η προεπιλεγμένη συνθήκη είναι να μη δίνονται εκτεταμένα + προνόμια σε ένα δοχείο, δεν υπάρχει πρόσβαση σε καμία συσκευή παρά μόνο εάν + γίνει εκτέλεση δοχείου ως χρήστης με ανώτατα δικαιώματα, όπου τότε υπάρχει + πρόσβαση σε όλες (τις συσκευές). \item \textbf{IPC namespaces} για περιορισμό IPC, δηλαδή της επικοινωνίας των διεργασιών μεταξύ τους. Τα IPC namespaces καθιστούν δυνατή τη - δημιουργία ξεχωριστών συνόλων των διεργασιών που επικοινωνούν μεταξύ τους, - αλλά όχι με άλλες διεργασίες πέραν του υποσυνόλου. + δημιουργία ξεχωριστών συνόλων των διεργασιών που επικοινωνούν μεταξύ + τους, αλλά όχι με άλλες διεργασίες πέραν του υποσυνόλου. \item \textbf{Network namespaces}. Μία από τις σημαντικότερες απομονώσεις - είναι αυτή του δικτύου. Χωρίς δικτυακή απομόνωση υπάρχει κίνδυνος - επιθέσεων, όπως ενδιάμεσου (Man in the middle), ARP, DNS πλαστογράφησης - (spoofing) και άλλες. Για να απομονωθεί η κίνηση δικτύου που λαμβάνει μέρος - σε ένα δοχείο από αυτήν των υπολοίπων και του συστήματος πρέπει να γίνει - χρήση των network namespaces. Κάθε δοχείο θα έχει δικές του διευθύνσεις IP, - συσκευές και ό,τι χρειάζεται, προκειμένου να γίνεται αλληλεπίδραση μεταξύ - των δοχείων μέσω της διεπαφής δικτύου του καθενός σαν να είναι εξωτερικές - οντότητες. + είναι αυτή του δικτύου. Χωρίς δικτυακή απομόνωση υπάρχει κίνδυνος + επιθέσεων, όπως ενδιάμεσου (Man in the middle), ARP, DNS πλαστογράφησης + (spoofing) και άλλες. Για να απομονωθεί η κίνηση δικτύου που λαμβάνει + μέρος σε ένα δοχείο από αυτήν των υπολοίπων και του συστήματος πρέπει + να γίνει χρήση των network namespaces. Κάθε δοχείο θα έχει δικές του + διευθύνσεις IP, συσκευές και ό,τι χρειάζεται, προκειμένου να γίνεται + αλληλεπίδραση μεταξύ των δοχείων μέσω της διεπαφής δικτύου του καθενός + σαν να είναι εξωτερικές οντότητες. \item \textbf{Ομάδες ελέγχου (cgroups)}. Επιβάλλεται η οριοθέτηση των υπολογιστικών πόρων προκειμένου να αποφευχθεί μια επίθεση τύπου άρνησης @@ -1909,16 +1969,16 @@ Docker ώστε να μειωθούν οι επιπτώσεις κατά την Αυτές οι δυνατότητες υποστηρίζονται από το Docker και μπορεί κανείς να τις εκμεταλλευτεί για να προστατεύσει το περιβάλλον του από επιθέσεις. Επιπλέον, υπάρχει και η δυνατότητα υποστήριξης Kernel Security Modules, όπως τα SELinux -\footfullcite{selinux} και AppArmor \footfullcite{apparmor} αλλά και του -Seccomp \footfullcite{seccomp} (στην περίπτωση χρήσης LXC), καθώς επίσης και -συμβατότητα με Linux capabilities, που θα μπορούσαν να εισάγουν ένα ακόμα -επίπεδο ασφαλείας, αν χρησιμοποιηθούν σωστά, περιορίζοντας τα δικαιώματα των -διεργασιών των δοχείων σε μονάχα όσα χρειάζονται. Το Docker παρέχει αρκετά -υπάρχοντα μέσα άμυνας προκειμένου να προστατευτεί από επιθέσεις ακόμα και χωρίς -επιπρόσθετες ρυθμίσεις. Παρ' όλα αυτά, οι αρχικές ρυθμίσεις ασφαλείας του είναι -πιο ελαστικές απ' όσο χρειάζεται προκειμένου να συνεχίζει να λειτουργεί -κανονικά για όλους τους χρήστες, αφήνοντας έτσι τους διαχειριστές ασφαλείας -υπεύθυνους να χρησιμοποιήσουν όσες δυνατότητες είναι απαραίτητες προκειμένου να +\cite{selinux} και AppArmor \footfullcite{apparmor} αλλά και του Seccomp +\cite{seccomp} (στην περίπτωση χρήσης LXC), καθώς επίσης και συμβατότητα με +Linux capabilities, που θα μπορούσαν να εισάγουν ένα ακόμα επίπεδο ασφαλείας, +αν χρησιμοποιηθούν σωστά, περιορίζοντας τα δικαιώματα των διεργασιών των +δοχείων σε μονάχα όσα χρειάζονται. Το Docker παρέχει αρκετά υπάρχοντα μέσα +άμυνας προκειμένου να προστατευτεί από επιθέσεις ακόμα και χωρίς επιπρόσθετες +ρυθμίσεις. Παρ' όλα αυτά, οι αρχικές ρυθμίσεις ασφαλείας του είναι πιο +ελαστικές απ' όσο χρειάζεται προκειμένου να συνεχίζει να λειτουργεί κανονικά +για όλους τους χρήστες, αφήνοντας έτσι τους διαχειριστές ασφαλείας υπεύθυνους +να χρησιμοποιήσουν όσες δυνατότητες είναι απαραίτητες προκειμένου να ανταπεξέλθουν σε κάθε επίθεση ανάλογα με το περιβάλλον και τις ανάγκες τους. \clearpage @@ -1949,46 +2009,46 @@ Seccomp \footfullcite{seccomp} (στην περίπτωση χρήσης LXC), \item \textbf{Άρνηση υπηρεσίας}: - Μια από τις πιο συνηθισμένες επιθέσεις σε πόρους διαθέσιμους μέσω - δικτύου είναι η άρνηση υπηρεσίας. Κατά τη διάρκεια μιας τέτοιας - επίθεσης, μια διεργασία ή ένα σύνολο διεργασιών επιχειρεί να - καταναλώσει όλους τους πόρους του συστήματος προκειμένου να μην μπορεί - να εξυπηρετήσει άλλους χρήστες. Αυτό μπορεί να συμβεί εάν ένα δοχείο - βρεθεί υπό τον έλεγχο ενός επιτιθέμενου και επιχειρήσει να διεκδικήσει - πόρους που κανονικά δε χρειάζεται. Για να ανταπεξέλθει ένα σύστημα σε - μια επίθεση άρνησης υπηρεσίας, πρέπει να γίνει χρήση των δυνατοτήτων - που αναφέραμε στο \ref{dockerAttackVectorMitigation} με σκοπό τον - αυστηρότερο έλεγχο διαμοιρασμού των πόρων του συστήματος. Με τον - καθορισμό διαθέσιμων πόρων για κάθε δοχείο εξ αρχής, δεν υπάρχει - κίνδυνος να προσπαθήσει κάποιο δοχείο να διεκδικήσει περισσότερους. + Μια από τις πιο συνηθισμένες επιθέσεις σε πόρους διαθέσιμους μέσω + δικτύου είναι η άρνηση υπηρεσίας. Κατά τη διάρκεια μιας τέτοιας + επίθεσης, μια διεργασία ή ένα σύνολο διεργασιών επιχειρεί να + καταναλώσει όλους τους πόρους του συστήματος προκειμένου να μην μπορεί + να εξυπηρετήσει άλλους χρήστες. Αυτό μπορεί να συμβεί εάν ένα δοχείο + βρεθεί υπό τον έλεγχο ενός επιτιθέμενου και επιχειρήσει να διεκδικήσει + πόρους που κανονικά δε χρειάζεται. Για να ανταπεξέλθει ένα σύστημα σε + μια επίθεση άρνησης υπηρεσίας, πρέπει να γίνει χρήση των δυνατοτήτων + που αναφέραμε στο \ref{dockerAttackVectorMitigation} με σκοπό τον + αυστηρότερο έλεγχο διαμοιρασμού των πόρων του συστήματος. Με τον + καθορισμό διαθέσιμων πόρων για κάθε δοχείο εξ αρχής, δεν υπάρχει + κίνδυνος να προσπαθήσει κάποιο δοχείο να διεκδικήσει περισσότερους. \clearpage \item \textbf{Αποδράσεις Δοχείων (Container Breakouts)}: - Σε τέτοιου είδους επιθέσεις, ένας επιτιθέμενος προσπαθεί αφού απέκτησε - πρόσβαση σε ένα δοχείο, να καταφέρει μέσω αυτού να έχει πρόσβαση στα - αρχεία του κύριου συστήματος. Αυτό μπορεί να συμβεί με τη χρήση μιας - συνάρτησης που απαιτεί δικαιώματα διαχειριστικού λογαριασμού μέσα από - το δοχείο προκειμένου να κάνει κλήση μιας ικανότητας (capability) στην - οποία είχε πρόσβαση εξ αρχής. Σύμφωνα με το Docker η μόνη έκδοση που - μπορούσε να επηρεαστεί από αυτή την ευπάθεια ήταν η 0.11 και στην - επόμενη διορθώθηκε. Για την πρόληψη μελλοντικών μεθόδων διεκπεραίωσης - τέτοιου είδους επίθεσης, συνίσταται να τίθενται τα δοχεία και οι - αποθηκευτικοί τους χώροι σε κατάσταση μονάχα ανάγνωσης, καθώς και να - αποφεύγεται η χρήση της παραμέτρου \textquote{privileged}. + Σε τέτοιου είδους επιθέσεις, ένας επιτιθέμενος προσπαθεί αφού απέκτησε + πρόσβαση σε ένα δοχείο, να καταφέρει μέσω αυτού να έχει πρόσβαση στα + αρχεία του κύριου συστήματος. Αυτό μπορεί να συμβεί με τη χρήση μιας + συνάρτησης που απαιτεί δικαιώματα διαχειριστικού λογαριασμού μέσα από + το δοχείο προκειμένου να κάνει κλήση μιας ικανότητας (capability) στην + οποία είχε πρόσβαση εξ αρχής. Σύμφωνα με το Docker η μόνη έκδοση που + μπορούσε να επηρεαστεί από αυτή την ευπάθεια ήταν η 0.11 και στην + επόμενη διορθώθηκε. Για την πρόληψη μελλοντικών μεθόδων διεκπεραίωσης + τέτοιου είδους επίθεσης, συνίσταται να τίθενται τα δοχεία και οι + αποθηκευτικοί τους χώροι σε κατάσταση μονάχα ανάγνωσης, καθώς και να + αποφεύγεται η χρήση της παραμέτρου \textquote{privileged}. \item \textbf{Δηλητηριασμένες εικόνες δοχείων}: - Οι εικόνες δοχείων μπορεί να περιέχουν κακόβουλο λογισμικό ή λογισμικό - για το οποίο έχουν βρεθεί πλέον ευπάθειες. Ο τωρινός τρόπος ελέγχου - εγκυρότητάς τους βασίζεται μονάχα στην παρουσία ενός υπογεγραμμένου - manifest αλλά δε γίνεται ποτέ αυθεντικοποίηση του αθροίσματος ελέγχου - (checksum) της κάθε εικόνας. Αυτό αφήνει ανοιχτό το ενδεχόμενο ένας - επιτιθέμενος να διαδώσει οποιαδήποτε εικόνα μαζί με το υπογεγραμμένο - manifest της. Επιβάλλεται οι χρήστες να κατεβάζουν εικόνες από - εγκεκριμένους προμηθευτές και επιπρόσθετα να τις ελέγχουν με κατάλληλα - εργαλεία ανίχνευσης τρωτοτήτων προτού τις χρησιμοποιήσουν. + Οι εικόνες δοχείων μπορεί να περιέχουν κακόβουλο λογισμικό ή λογισμικό + για το οποίο έχουν βρεθεί πλέον ευπάθειες. Ο τωρινός τρόπος ελέγχου + εγκυρότητάς τους βασίζεται μονάχα στην παρουσία ενός υπογεγραμμένου + manifest αλλά δε γίνεται ποτέ αυθεντικοποίηση του αθροίσματος ελέγχου + (checksum) της κάθε εικόνας. Αυτό αφήνει ανοιχτό το ενδεχόμενο ένας + επιτιθέμενος να διαδώσει οποιαδήποτε εικόνα μαζί με το υπογεγραμμένο + manifest της. Επιβάλλεται οι χρήστες να κατεβάζουν εικόνες από + εγκεκριμένους προμηθευτές και επιπρόσθετα να τις ελέγχουν με κατάλληλα + εργαλεία ανίχνευσης τρωτοτήτων προτού τις χρησιμοποιήσουν. \item \textbf{Απόκτηση μυστικών κωδικών/κλειδιών}: @@ -2018,31 +2078,31 @@ Seccomp \footfullcite{seccomp} (στην περίπτωση χρήσης LXC), \item \textbf{Πλαστογράφηση ARP (ARP spoofing)}: - Σε μια επίθεση πλαστογράφησης Address Resource Protocol (ARP), ο - επιτιθέμενος επιχειρεί να στείλει ψεύτικα ARP μηνύματα σε ένα δίκτυο - τοπικής περιοχής (Local Area Network - LAN). Είναι πιθανό να - προσποιηθεί πως η συσκευή του είναι μια από τις συσκευές της - επιχείρησης, αλλάζοντας τη MAC διεύθυνσή του στην IP μιας συσκευής που - το σύστημα αναγνωρίζει. Επομένως, το σύστημα της επιχείρησης, θα - συμπεριφέρεται στην συσκευή του επιτιθέμενου με τον ίδιο τρόπο που θα - συμπεριφερόταν στην αυθεντική συσκευή. Δηλαδή, στέλνοντας σε αυτόν όλα - τα πακέτα και τα δεδομένα που προορίζονταν για εκείνη. Το Docker - χρησιμοποιεί το ARP για να κάνει την αντιστοίχιση IPv4 σε MAC - διευθύνσεις, οι οποίες χρησιμοποιούνται από την εικονική γέφυρα δικτύου - για να διανέμουν σωστά τα πλαίσια (frames) Ethernet αφού δεν υπάρχει - φίλτρο για τα πακέτα ARP και επομένως κανένας μηχανισμός άμυνας. Γι' - αυτό τον λόγο τα δοχεία μπορούν να προσποιηθούν ότι είναι άλλα δοχεία ή - ακόμα και το κύριο μηχάνημα. Στην περίπτωση παραβίασης ενός δοχείου, - υπάρχει κίνδυνος ο επιτιθέμενος να υποκλέψει μυστικά της επιχείρησης ή - των τελικών χρηστών της υπηρεσίας που η επιχείρηση προσφέρει. Ένας από - τους τρόπους που βοηθάει στην αποφυγή τέτοιας επίθεσης είναι η εκτέλεση - δοχείων δίχως το NET\_RAW capability, αφού έτσι τα προγράμματα μέσα στο - δοχείο δε θα μπορούν να δημιουργήσουν PF\_PACKET sockets και θα ήταν - αδύνατη η διεκπεραίωση της επίθεσης. Βέβαια, αυτή η μέθοδος έχει - μειονεκτήματα αφού μπορεί αυτή η ικανότητα να ήταν άκρως απαραίτητη για - την ορθή λειτουργία της υπηρεσίας. Επομένως, μια εναλλακτική μέθοδος - προστασίας είναι η χρήση \textquote{ebtables} για φιλτράρισμα πλαισίων - Ethernet ούτως ώστε ARP πακέτα με λάθος πρωτόκολλο αποστολέα ή - διεύθυνση MAC να ανιχνεύονται εγκαίρως και να απορρίπτονται. + Σε μια επίθεση πλαστογράφησης Address Resource Protocol (ARP), ο + επιτιθέμενος επιχειρεί να στείλει ψεύτικα ARP μηνύματα σε ένα δίκτυο + τοπικής περιοχής (Local Area Network - LAN). Είναι πιθανό να + προσποιηθεί πως η συσκευή του είναι μια από τις συσκευές της + επιχείρησης, αλλάζοντας τη MAC διεύθυνσή του στην IP μιας συσκευής που + το σύστημα αναγνωρίζει. Επομένως, το σύστημα της επιχείρησης, θα + συμπεριφέρεται στην συσκευή του επιτιθέμενου με τον ίδιο τρόπο που θα + συμπεριφερόταν στην αυθεντική συσκευή. Δηλαδή, στέλνοντας σε αυτόν όλα + τα πακέτα και τα δεδομένα που προορίζονταν για εκείνη. Το Docker + χρησιμοποιεί το ARP για να κάνει την αντιστοίχιση IPv4 σε MAC + διευθύνσεις, οι οποίες χρησιμοποιούνται από την εικονική γέφυρα δικτύου + για να διανέμουν σωστά τα πλαίσια (frames) Ethernet αφού δεν υπάρχει + φίλτρο για τα πακέτα ARP και επομένως κανένας μηχανισμός άμυνας. Γι' + αυτό τον λόγο τα δοχεία μπορούν να προσποιηθούν ότι είναι άλλα δοχεία ή + ακόμα και το κύριο μηχάνημα. Στην περίπτωση παραβίασης ενός δοχείου, + υπάρχει κίνδυνος ο επιτιθέμενος να υποκλέψει μυστικά της επιχείρησης ή + των τελικών χρηστών της υπηρεσίας που η επιχείρηση προσφέρει. Ένας από + τους τρόπους που βοηθάει στην αποφυγή τέτοιας επίθεσης είναι η εκτέλεση + δοχείων δίχως το NET\_RAW capability, αφού έτσι τα προγράμματα μέσα στο + δοχείο δε θα μπορούν να δημιουργήσουν PF\_PACKET sockets και θα ήταν + αδύνατη η διεκπεραίωση της επίθεσης. Βέβαια, αυτή η μέθοδος έχει + μειονεκτήματα αφού μπορεί αυτή η ικανότητα να ήταν άκρως απαραίτητη για + την ορθή λειτουργία της υπηρεσίας. Επομένως, μια εναλλακτική μέθοδος + προστασίας είναι η χρήση \textquote{ebtables} για φιλτράρισμα πλαισίων + Ethernet ούτως ώστε ARP πακέτα με λάθος πρωτόκολλο αποστολέα ή + διεύθυνση MAC να ανιχνεύονται εγκαίρως και να απορρίπτονται. \end{itemize} diff --git a/Chapters/3.RelevantWork.tex b/Chapters/3.RelevantWork.tex index 7bfc436..4bc3c3e 100644 --- a/Chapters/3.RelevantWork.tex +++ b/Chapters/3.RelevantWork.tex @@ -41,11 +41,11 @@ \item \textbf{Ευκολία κατά την χρήση}: - Το εργαλείο πρέπει να μπορεί να χρησιμοποιηθεί εύκολα από έναν χρήστη - που έχει χρησιμοποιήσει στο παρελθόν εργαλεία γραμμής εντολών. Οι - παράμετροί του πρέπει να ακολουθούν ένα μοτίβο που θα διευκολύνει την - κατανόηση της λειτουργίας τους και τον συνδυασμό τους για ένα επιθυμητό - αποτέλεσμα. + Το εργαλείο πρέπει να μπορεί να χρησιμοποιηθεί εύκολα από έναν χρήστη + που έχει χρησιμοποιήσει στο παρελθόν εργαλεία γραμμής εντολών. Οι + παράμετροί του πρέπει να ακολουθούν ένα μοτίβο που θα διευκολύνει την + κατανόηση της λειτουργίας τους και τον συνδυασμό τους για ένα επιθυμητό + αποτέλεσμα. \item \textbf{Υποστήριξη μεγάλων ονομάτων στον κλάδο}: @@ -55,8 +55,8 @@ \item \textbf{Ευκολία στην επέκταση}: - Το εργαλείο πρέπει να είναι εύκολο στην επέκτασή του, ώστε να μπορεί να - αυτοματοποιηθεί περισσότερο η διαδικασία δημιουργίας εικονικών μηχανών. + Το εργαλείο πρέπει να είναι εύκολο στην επέκτασή του, ώστε να μπορεί να + αυτοματοποιηθεί περισσότερο η διαδικασία δημιουργίας εικονικών μηχανών. \end{itemize} @@ -107,21 +107,21 @@ \item \textbf{Σύγκριση με Terraform}: - Χρειάζεται την δημιουργία ενός αρχείου πριν την χρήση του και κάθε - αλλαγή απαιτεί την τροποποίηση του αρχείου αυτού. Αυτό το καθιστά - λιγότερο ευέλικτο σε σχέση με άλλα εργαλεία. Είναι σχετικά εύκολο στην - χρήση όπως τα υπόλοιπα και δύναται να χρησιμοποιήσει τα νέφη όλων των - μεγάλων παρόχων. Παρ' όλα αυτά δεν αποτελεί εργαλείο που μπορεί να - επεκταθεί εύκολα καθώς ο τρόπος λειτουργίας του το καθιστά αυτοτελές. + Χρειάζεται την δημιουργία ενός αρχείου πριν την χρήση του και κάθε + αλλαγή απαιτεί την τροποποίηση του αρχείου αυτού. Αυτό το καθιστά + λιγότερο ευέλικτο σε σχέση με άλλα εργαλεία. Είναι σχετικά εύκολο στην + χρήση όπως τα υπόλοιπα και δύναται να χρησιμοποιήσει τα νέφη όλων των + μεγάλων παρόχων. Παρ' όλα αυτά δεν αποτελεί εργαλείο που μπορεί να + επεκταθεί εύκολα καθώς ο τρόπος λειτουργίας του το καθιστά αυτοτελές. \item \textbf{Σύγκριση με Libcloud CLI}: - Το δεύτερο πιο πρόσφατο εργαλείο που κάνει χρήση της βιβλιοθήκης - libcloud μετά από αυτό που προτείνει η διπλωματική εργασία. Είναι - αρκετά ευέλικτο και εύκολο στην χρήση, παρ' όλα αυτά πλέον υποστηρίζει - μονάχα έναν πάροχο νέφους, ο οποίος δεν αποτελεί δημοφιλή επιλογή - γενικότερα. Θα μπορούσε να επεκταθεί η λειτουργικότητά του αλλά έχει να - ανανεωθεί από το 2018. + Το δεύτερο πιο πρόσφατο εργαλείο που κάνει χρήση της βιβλιοθήκης + libcloud μετά από αυτό που προτείνει η διπλωματική εργασία. Είναι + αρκετά ευέλικτο και εύκολο στην χρήση, παρ' όλα αυτά πλέον υποστηρίζει + μονάχα έναν πάροχο νέφους, ο οποίος δεν αποτελεί δημοφιλή επιλογή + γενικότερα. Θα μπορούσε να επεκταθεί η λειτουργικότητά του αλλά έχει να + ανανεωθεί από το 2018. \end{itemize} @@ -172,20 +172,20 @@ \item \textbf{JShielder} \footfullcite{jshielder}: - Το JShielder είναι ένα εργαλείο ανοιχτού κώδικα που αναπτύχθηκε από τον - Jason Soto με σκοπό την αυτοματοποίηση σκλήρυνσης λειτουργικών - συστημάτων Linux. Ο πηγαίος κώδικάς του βρίσκεται στο GitHub και ο - τρόπος λειτουργίας του είναι η εκτέλεσή του ως χρήστης με διαχειριστικά - δικαιώματα στο σύστημα. + Το JShielder είναι ένα εργαλείο ανοιχτού κώδικα που αναπτύχθηκε από τον + Jason Soto με σκοπό την αυτοματοποίηση σκλήρυνσης λειτουργικών + συστημάτων Linux. Ο πηγαίος κώδικάς του βρίσκεται στο GitHub και ο + τρόπος λειτουργίας του είναι η εκτέλεσή του ως χρήστης με διαχειριστικά + δικαιώματα στο σύστημα. \clearpage \item \textbf{nixarmor} \footfullcite{nixarmor}: - Ένα εργαλείο ανοιχτού κώδικα που στεγάζεται στο GitHub και αναπτύχθηκε - από τον Emir Ozer. Περιέχει διαφορετικά εκτελέσιμα αρχεία για την - σκλήρυνση διάφορων διανομών Linux, τα οποία μπορούν να εκτελεστούν ως - αυτόνομα προγράμματα από τον χρήστη. + Ένα εργαλείο ανοιχτού κώδικα που στεγάζεται στο GitHub και αναπτύχθηκε + από τον Emir Ozer. Περιέχει διαφορετικά εκτελέσιμα αρχεία για την + σκλήρυνση διάφορων διανομών Linux, τα οποία μπορούν να εκτελεστούν ως + αυτόνομα προγράμματα από τον χρήστη. \end{itemize} @@ -198,26 +198,26 @@ \item \textbf{Σύγκριση με JShielder}: - Το JShielder παρέχει ένα ικανοποιητικό εύρος σκλήρυνσης του συστήματος - και η ευκολία στην χρήση του το καθιστά ένα εργαλείο που μπορεί να - χρησιμοποιηθεί από έναν χρήστη με μικρή εμπειρία στον κλάδο. Παρ' όλα - αυτά, δεν υποστηρίζει πολλές διανομές και οι εκδόσεις των διανομών που - υποστηρίζονται μέσω αυτού είναι αρκετό καιρό ξεπερασμένες. Θα μπορούσε - να βελτιωθεί με μια ανανέωση του πηγαίου του κώδικα αλλά η ανάπτυξή του - φαίνεται να έχει σταματήσει το 2019. + Το JShielder παρέχει ένα ικανοποιητικό εύρος σκλήρυνσης του συστήματος + και η ευκολία στην χρήση του το καθιστά ένα εργαλείο που μπορεί να + χρησιμοποιηθεί από έναν χρήστη με μικρή εμπειρία στον κλάδο. Παρ' όλα + αυτά, δεν υποστηρίζει πολλές διανομές και οι εκδόσεις των διανομών που + υποστηρίζονται μέσω αυτού είναι αρκετό καιρό ξεπερασμένες. Θα μπορούσε + να βελτιωθεί με μια ανανέωση του πηγαίου του κώδικα αλλά η ανάπτυξή του + φαίνεται να έχει σταματήσει το 2019. \item \textbf{Σύγκριση με το nixarmor}: - Σε αντίθεση με το JShielder, το nixarmor για να χρησιμοποιηθεί με τον - ίδιο τρόπο που χρησιμοποιούνται τα υπόλοιπα εργαλεία θα πρέπει να - επεκταθεί με την προσθήκη κώδικα που να του επιτρέπει να ξεχωρίζει ποιο - είναι το κατάλληλο εκτελέσιμο για την κάθε διανομή. Στην αντίθετη - περίπτωση, πάλι η χρήση του είναι εύκολη διότι ο χρήστης μπορεί να - επιλέξει και να εκτελέσει χειροκίνητα ένα από τα εκτελέσιμα αρχεία που - περιέχει. Η σκλήρυνση που παρέχει καλύπτει πολλούς τομείς μιας διανομής - και μπορεί εύκολα να προστεθούν επιπλέον συναρτήσεις στον κώδικά του. - Παρ' όλα αυτά, η ανάπτυξή του έχει παύσει από το 2015 και οι - υποστηριζόμενες διανομές του έχουν περιοριστεί σε μονάχα 4. + Σε αντίθεση με το JShielder, το nixarmor για να χρησιμοποιηθεί με τον + ίδιο τρόπο που χρησιμοποιούνται τα υπόλοιπα εργαλεία θα πρέπει να + επεκταθεί με την προσθήκη κώδικα που να του επιτρέπει να ξεχωρίζει ποιο + είναι το κατάλληλο εκτελέσιμο για την κάθε διανομή. Στην αντίθετη + περίπτωση, πάλι η χρήση του είναι εύκολη διότι ο χρήστης μπορεί να + επιλέξει και να εκτελέσει χειροκίνητα ένα από τα εκτελέσιμα αρχεία που + περιέχει. Η σκλήρυνση που παρέχει καλύπτει πολλούς τομείς μιας διανομής + και μπορεί εύκολα να προστεθούν επιπλέον συναρτήσεις στον κώδικά του. + Παρ' όλα αυτά, η ανάπτυξή του έχει παύσει από το 2015 και οι + υποστηριζόμενες διανομές του έχουν περιοριστεί σε μονάχα 4. \end{itemize} @@ -226,7 +226,7 @@ Συγκριτικά με τα παραπάνω εργαλεία, το harden υποστηρίζει την ικανότητα αναγνώρισης της διανομής στην οποία εκτελείται και μπορεί δυναμικά να αλλοιώσει την συμπεριφορά του αναλόγως. Οι υποστηριζόμενες διανομές είναι 6 και οι -λειτουργίες του αν και σύμφωνα με τα αποτελέσματα του κεφαλαίου +λειτουργίες του αν και σύμφωνα με τα αποτελέσματα του Κεφαλαίου \ref{experimentationANDresults} είναι ικανοποιητικές, θα μπορούσαν εύκολα να επεκταθούν με την προσθήκη νέων συναρτήσεων. Επιπλέον, αυτό το ένα εκτελέσιμο, παράγει κατά την εκτέλεσή του δύο ακόμα, τα οποία θα εκτελούνται περιοδικά με diff --git a/Chapters/4.ProjectDevelopment.tex b/Chapters/4.ProjectDevelopment.tex index 7cf136f..87cd328 100644 --- a/Chapters/4.ProjectDevelopment.tex +++ b/Chapters/4.ProjectDevelopment.tex @@ -9,7 +9,7 @@ \section{Αποφάσεις που πάρθηκαν κατά την ανάπτυξη} \label{developmentDecisions} Κατά την ανάπτυξη του συστήματος, προκειμένου να επιτευχθούν οι στόχοι που -θέσαμε στην ενότητα \ref{overcomingDockerDisadvantages} και συγκεκριμένα για +θέσαμε στην Ενότητα \ref{overcomingDockerDisadvantages} και συγκεκριμένα για την επικοινωνία με διάφορους παρόχους νέφους, επιλέχθηκε να γίνει χρήση της βιβλιοθήκης libcloud \footfullcite{libcloud}. Μια από τις δύο επιλογές βιβλιοθηκών της Apache \footfullcite{apache} για την επικοινωνία με παρόχους @@ -37,14 +37,14 @@ libcloud αποτελεί μια προσπάθεια δημιουργίας ε παρούσα διπλωματική εργασία, χρειάζεται να γίνει χρήση των λειτουργιών \textquote{Compute} της βιβλιοθήκης. Στην αρχική σελίδα της, αναφέρεται υποστήριξη για πάνω από 50 παρόχους. Κατά την σελίδα τεκμηρίωσης -\footfullcite{libcloudProviders} για τις λειτουργίες \textquote{Compute}, -αναφέρονται 48 πάροχοι σε έναν πίνακα ο οποίος αναγράφει την υποστήριξη ή -απουσία αυτής, διάφορων συναρτήσεων εικονικών μηχανών. Στις συναρτήσεις αυτές -περιλαμβάνονται η δημιουργία εικονικών μηχανών, η εκκίνηση, η παύση, η διαγραφή -τους και εν γένει όσες λειτουργίες είναι απαραίτητες για την ολοκληρωμένη -λειτουργία του εργαλείου. Από αυτούς τους 48 παρόχους, οι 25 υποστηρίζουν και -τις 9 συναρτήσεις. Ωστόσο, από αυτούς τους 25 έπρεπε να αφαιρεθούν οι 20 για -λόγους όπως η μη ύπαρξη τεκμηρίωσης χρήσης από την libcloud, η μη συνέχιση της +\cite{libcloudProviders} για τις λειτουργίες \textquote{Compute}, αναφέρονται +48 πάροχοι σε έναν πίνακα ο οποίος αναγράφει την υποστήριξη ή απουσία αυτής, +διάφορων συναρτήσεων εικονικών μηχανών. Στις συναρτήσεις αυτές περιλαμβάνονται +η δημιουργία εικονικών μηχανών, η εκκίνηση, η παύση, η διαγραφή τους και εν +γένει όσες λειτουργίες είναι απαραίτητες για την ολοκληρωμένη λειτουργία του +εργαλείου. Από αυτούς τους 48 παρόχους, οι 25 υποστηρίζουν και τις 9 +συναρτήσεις. Ωστόσο, από αυτούς τους 25 έπρεπε να αφαιρεθούν οι 20 για λόγους +όπως η μη ύπαρξη τεκμηρίωσης χρήσης από την libcloud, η μη συνέχιση της λειτουργίας τους, η έλλειψη πληροφοριών τιμής ή δοκιμαστικής περιόδου για τις υπηρεσίες τους και η αδυναμία δημιουργίας λογαριασμού στην επίσημη σελίδα τους. Επομένως, υπάρχουν εν τέλει 5 πάροχοι νέφους που δύναται να χρησιμοποιηθούν @@ -90,7 +90,7 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή \multicolumn{1}{|c|}{} & CentOS \footfullcite{centos} & 7, 8, 9 & 8.4, 8.5 & Όλες \\ \cline{2-5} \multicolumn{1}{|c|}{} & Fedora \footfullcite{fedora} & 37 & 36, 37 & Όλες \\ \cline{2-5} \multicolumn{1}{|c|}{} & Red Hat Enterprise Linux \footfullcite{redhat} & 7.9, 8.6, 9 & 8.6, 9.1 & Όλες \\ \cline{2-5} -\multicolumn{1}{|c|}{} & openSUSE Leap \footfullcite{opensuse} & 15.3, 15.4 & 15.3 15.4 & Όλες \\ \hline +\multicolumn{1}{|c|}{} & openSUSE Leap \footfullcite{opensuse} & 15.3, 15.4 & 15.3, 15.4 & Όλες \\ \hline \end{tabular}} \label{table:supportedDistributions} \renewcommand{\arraystretch}{1} @@ -197,8 +197,8 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή την λειτουργία σύνδεσης μέσω SSH} \item \textbf{Το εργαλείο πρέπει να υποστηρίζει την αρχικοποίηση μονάχα - ενός παρόχου δίχως την συμπλήρωση κενών πεδίων για τους υπόλοιπους από - τον χρήστη} + ενός παρόχου δίχως την συμπλήρωση κενών πεδίων για τους υπόλοιπους + από τον χρήστη} \end{itemize} @@ -210,33 +210,32 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή που έχει χρησιμοποιήσει προγράμματα γραμμής εντολών στο παρελθόν} \item \textbf{Το εργαλείο πρέπει να δημιουργεί ξεχωριστό αρχείο για τις - ρυθμίσεις του στον ίδιο φάκελο που βρίσκεται και το εκτελέσιμο αρχείο του} + ρυθμίσεις του στον ίδιο φάκελο που βρίσκεται και το εκτελέσιμο αρχείο + του} - \item \textbf{Το εργαλείο πρέπει να κρατάει αρχείο των διευθύνσεων - IP των εικονικών μηχανών που δημιουργεί ώστε να μπορούν να - διαμορφωθούν περαιτέρω εάν ο χρήστης επιθυμεί να - χρησιμοποιήσει άλλα προγράμματα όπως το Ansible} + \item \textbf{Το εργαλείο πρέπει να κρατάει αρχείο των διευθύνσεων IP των + εικονικών μηχανών που δημιουργεί ώστε να μπορούν να διαμορφωθούν + περαιτέρω εάν ο χρήστης επιθυμεί να χρησιμοποιήσει άλλα προγράμματα + όπως το Ansible} \item \textbf{Το εργαλείο πρέπει να διαθέτει ένα μοτίβο εντολών που να μπορεί ο χρήστης να καταλαβαίνει και να διαμορφώνει ανάλογα με τις - ανάγκες του} + ανάγκες του} - \item \textbf{Το εργαλείο πρέπει να δημιουργεί κλειδιά SSH σε - περίπτωση που δεν υπάρχουν, στον ίδιο φάκελο με το εκτελέσιμο - αρχείο του} + \item \textbf{Το εργαλείο πρέπει να δημιουργεί κλειδιά SSH σε περίπτωση που + δεν υπάρχουν, στον ίδιο φάκελο με το εκτελέσιμο αρχείο του} \item \textbf{Το δεύτερο εκτελέσιμο αρχείο του εργαλείου πρέπει να - εγκαθιστά και να σκληραίνει και το Docker πέρα από το - λειτουργικό σύστημα} + εγκαθιστά και να σκληραίνει και το Docker πέρα από το λειτουργικό + σύστημα} \item \textbf{Το δεύτερο εκτελέσιμο αρχείο του εργαλείου πρέπει να - δημιουργεί στην εικονική μηχανή δύο επιπλέον εκτελέσιμα - αρχεία για περιοδική ενημέρωση των πακέτων και κλείσιμο - αχρησιμοποίητων θυρών} + δημιουργεί στην εικονική μηχανή δύο επιπλέον εκτελέσιμα αρχεία για + περιοδική ενημέρωση των πακέτων και κλείσιμο αχρησιμοποίητων θυρών} \item \textbf{Το δεύτερο εκτελέσιμο αρχείο του εργαλείου πρέπει να εγκαθιστά προγράμματα για την περαιτέρω σκλήρυνση του Docker και την - διευκόλυνση του χρήστη κατά την εγκατάσταση δοχείων} + διευκόλυνση του χρήστη κατά την εγκατάσταση δοχείων} \end{itemize} @@ -248,11 +247,11 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή \section{Διαγραμματική Μοντελοποίηση} \label{designModels} Οι παραπάνω απαιτήσεις και ο τρόπος λειτουργίας του εργαλείου, μεταφράζονται -καλύτερα στον χρήστη μέσω ενός σχεδιαγράμματος περίπτωσης χρήσης. Το σχήμα +καλύτερα στον χρήστη μέσω ενός σχεδιαγράμματος περίπτωσης χρήσης. Το Σχήμα \ref{fig:useCaseDiagram} δημιουργήθηκε με την βοήθεια του εργαλείου \textquote{yuml} \footfullcite{yuml}. Επιπλέον, με το εργαλείο \textquote{mermaid} \footfullcite{mermaid}, δημιουργήθηκε ένα διάγραμμα ροής -για το SecDep που απεικονίζεται στο σχήμα \ref{fig:flowchartDiagram}. Το +για το SecDep που απεικονίζεται στο Σχήμα \ref{fig:flowchartDiagram}. Το διάγραμμα ροής, απεικονίζει την ροή των εντολών που μπορεί να επιλεγούν από τον χρήστη κατά την εκτέλεση του προγράμματος. @@ -290,7 +289,7 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή να ζητήσει πληροφορίες για διαθέσιμους πόρους όπως οι εικονικές του μηχανές ή τα συστατικά που έχει στην διάθεσή του για την δημιουργία τους όπως οι διανομές, τα μεγέθη και οι τοποθεσίες τους. Αυτή η αλληλεπίδραση μεταξύ του -χρήστη και του παρόχου νέφους, απεικονίζεται στο σχήμα +χρήστη και του παρόχου νέφους, απεικονίζεται στο Σχήμα \ref{fig:sequenceDiagram}, το οποίο δημιουργήθηκε με το εργαλείο \textquote{mermaid}. @@ -311,7 +310,7 @@ Mε το \textquote{code2flow} \footfullcite{code2flow} δημιουργήθηκ διάγραμμα που απεικονίζει τις κλήσεις συναρτήσεων που γίνονται κατά την εκτέλεση του αρχείου secdep.py. Παράλληλα, το ίδιο αποτέλεσμα επιτεύχθηκε για το αρχείο harden με την βοήθεια του \textquote{callGraph} -\footfullcite{callGraph}. Τα παραπάνω απεικονίζονται στα σχήματα +\footfullcite{callGraph}. Τα παραπάνω απεικονίζονται στα Σχήματα \ref{fig:secdepFunctionCallDiagram} και \ref{fig:hardenFunctionCallDiagram} αντίστοιχα. @@ -372,7 +371,7 @@ pydeps -T png --cluster --include-missing --max-bacon=1 --noshow --reverse --ran \section{Αρχιτεκτονική Εργαλείου} \label{architecture} Οι διαθέσιμες συναρτήσεις και μεταβλητές του secdep.py, απεικονίζονται στα -σχήματα \ref{fig:secdepFunctions} και \ref{fig:secdepVariables} αντίστοιχα. Η +Σχήματα \ref{fig:secdepFunctions} και \ref{fig:secdepVariables} αντίστοιχα. Η δημιουργία τους πραγματοποιήθηκε με το εργαλείο \textquote{doxygen} \footfullcite{doxygen}. @@ -425,8 +424,8 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές \item \textbf{image} \item \textbf{confirm}: Για επιβεβαίωση της δημιουργίας της - εικονικής μηχανής χωρίς να χρειαστεί χειροκίνητη επιβεβαίωση από - τον χρήστη. + εικονικής μηχανής χωρίς να χρειαστεί χειροκίνητη επιβεβαίωση + από τον χρήστη. \item \textbf{deploy}: Για την εκτέλεση του harden. @@ -435,7 +434,8 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές \item \textbf{node\_action}: Η συνάρτηση \textquote{node\_action}, είναι αυτή που εκτελεί τις - ενέργειες πάνω στις εικονικές μηχανές. Στις ενέργειες αυτές περιλαμβάνονται: + ενέργειες πάνω στις εικονικές μηχανές. Στις ενέργειες αυτές + περιλαμβάνονται: \begin{itemize} diff --git a/Chapters/5.ProjectShowcase.tex b/Chapters/5.ProjectShowcase.tex index 61e658d..52e1197 100644 --- a/Chapters/5.ProjectShowcase.tex +++ b/Chapters/5.ProjectShowcase.tex @@ -41,7 +41,7 @@ git clone https://git.konsthol.eu/konsthol/SecDep.git \subsection{Εγκατάσταση των απαιτούμενων εξαρτήσεων} Μετά την ολοκλήρωση της εγκατάστασης του πηγαίου κώδικα του SecDep, αφού ο -χρήστης μεταβεί στον φάκελο με τα περιεχόμενα που απεικονίζονται στο σχήμα +χρήστης μεταβεί στον φάκελο με τα περιεχόμενα που απεικονίζονται στο Σχήμα \ref{fig:secdep_install_without_git}, επιβάλλεται να γίνει χρήση του προγράμματος pip \footfullcite{pip} για την εγκατάσταση των βιβλιοθηκών που απαιτούνται για την λειτουργία του εργαλείου. Αυτό επιτυγχάνεται με την diff --git a/Chapters/6.Experimentation.tex b/Chapters/6.Experimentation.tex index 980118e..ffc986c 100644 --- a/Chapters/6.Experimentation.tex +++ b/Chapters/6.Experimentation.tex @@ -32,8 +32,8 @@ Lynis και το LUNAR. \item \textbf{Το NVD (National Vulnerability Database)} - \item \textbf{Τα αρχεία ορισμού OVAL (Open Vulnerability and Assessment Language)} - που διατίθενται από τις διανομές Linux + \item \textbf{Τα αρχεία ορισμού OVAL (Open Vulnerability and Assessment + Language)} που διατίθενται από τις διανομές Linux \item \textbf{Συμβουλευτικές πηγές ασφαλείας} @@ -85,15 +85,15 @@ Lynis και το LUNAR. \item \textbf{Εκτεταμένη σάρωση}: - Στο δεύτερο επίπεδο αξιολόγησης, το Vuls χρειάζεται να συνδεθεί ως ένας - χρήστης ικανός να εκτελέσει εντολές διαχειριστικού επιπέδου. Η σάρωση - που πραγματοποιείται είναι πιο εκτεταμένη και περιλαμβάνει ελέγχους που - απαιτούν την ύπαρξη πακέτων λογισμικού στον απομακρυσμένο διακομιστή - όπως τα lsof, debian-goodies και reboot-notifier. + Στο δεύτερο επίπεδο αξιολόγησης, το Vuls χρειάζεται να συνδεθεί ως ένας + χρήστης ικανός να εκτελέσει εντολές διαχειριστικού επιπέδου. Η σάρωση + που πραγματοποιείται είναι πιο εκτεταμένη και περιλαμβάνει ελέγχους που + απαιτούν την ύπαρξη πακέτων λογισμικού στον απομακρυσμένο διακομιστή + όπως τα lsof, debian-goodies και reboot-notifier. \end{itemize} -Στο σχήμα \ref{fig:vuls-architecture}, όπως αυτό πάρθηκε από την επίσημη +Στο Σχήμα \ref{fig:vuls-architecture}, όπως αυτό πάρθηκε από την επίσημη ιστοσελίδα του εργαλείου, απεικονίζεται η αρχιτεκτονική του Vuls κατά την διαδικασία σάρωσης απομακρυσμένου διακομιστή. @@ -109,7 +109,7 @@ Lynis και το LUNAR. \clearpage -Στο σχήμα \ref{fig:vulsScan}, το οποίο παρομοίως αποκτήθηκε από την επίσημη +Στο Σχήμα \ref{fig:vulsScan}, το οποίο παρομοίως αποκτήθηκε από την επίσημη σελίδα του, απεικονίζεται η διαδικασία που ακολουθείται κατά την εκτέλεση της σάρωσης ενός συστήματος. @@ -137,7 +137,7 @@ Lynis και το LUNAR. εύκολα σε κάθε σύστημα Linux διότι πρόκειται για ένα απλό εκτελέσιμο αρχείο bash. -Στο σχήμα \ref{fig:lynisScan} απεικονίζεται ένα κομμάτι της αναφοράς που +Στο Σχήμα \ref{fig:lynisScan} απεικονίζεται ένα κομμάτι της αναφοράς που επιστρέφει. \begin{center} @@ -669,7 +669,7 @@ cd lunar διακομιστές μας, ο διακομιστής secdepawsHardened, σχετικά με τα CVEs που εντοπίστηκαν, έχει ασφαλιστεί κατά 26.615\%. Επιπροσθέτως, με βάση τα γραφήματα που παρήχθησαν από το VulsRepo, μπορούμε να διακρίνουμε μια άμεση πτώση των -ευπαθειών με βάση την κατηγορία σοβαρότητας τους στο σχήμα +ευπαθειών με βάση την κατηγορία σοβαρότητάς τους στο Σχήμα \ref{fig:vuls-cvss-severity-table}. \begin{center} @@ -786,7 +786,7 @@ cat lynis.log | grep -i index | sed 's/^ *//g' | cut -d' ' -f4 \end{savenotes} H αύξηση ασφάλειας του διακομιστή ανέρχεται στο 9.23077\% και απεικονίζεται -γραφικά στο σχήμα \ref{fig:lynis-security-index}. +γραφικά στο Σχήμα \ref{fig:lynis-security-index}. \begin{center} \begin{figure}[!ht] @@ -844,7 +844,7 @@ cat lunar.log | grep -i "warnings:" | awk '{print $2}' \end{table} \end{savenotes} -Από τον πίνακα \ref{table:lunar-warnings-table} διαπιστώνεται πως έχουμε +Από τον Πίνακα \ref{table:lunar-warnings-table} διαπιστώνεται πως έχουμε 2.25564\% αύξηση της ασφάλειας, το οποίο απεικονίζεται και ως εξής: \begin{center} diff --git a/Chapters/7.Conclusions.tex b/Chapters/7.Conclusions.tex index d33604a..3d2625a 100644 --- a/Chapters/7.Conclusions.tex +++ b/Chapters/7.Conclusions.tex @@ -25,7 +25,7 @@ \section{Συμπεράσματα} -Με βάση τα αποτελέσματα των πειραμάτων που πραγματοποιήθηκαν στο κεφάλαιο +Με βάση τα αποτελέσματα των πειραμάτων που πραγματοποιήθηκαν στο Κεφάλαιο \ref{experimentationANDresults}, μπορούμε να συμπεράνουμε ότι το εργαλείο SecDep, είναι ικανό να δημιουργήσει εικονικές μηχανές που έχουν σκληρύνει σε ικανοποιητικό βαθμό, χωρίς περαιτέρω παρέμβαση από τον χρήστη. Μπορεί λοιπόν να @@ -68,4 +68,4 @@ Docker, θα μπορούσε και αυτό να επεκταθεί, προσ διαδικασία σκλήρυνσης. Τα αποτελέσματα είναι ήδη αρκετά ικανοποιητικά, ωστόσο πάντα υπάρχουν περιθώρια βελτίωσης. -\clearpage +\clearpage % Needed to reset header diff --git a/Declaration/declaration.tex b/Declaration/declaration.tex index 529dbef..0144395 100644 --- a/Declaration/declaration.tex +++ b/Declaration/declaration.tex @@ -20,7 +20,7 @@ \item[\tiny{$\blacksquare$}] Όπου έχω συμβουλευτεί την δημοσιευμένη δουλειά τρίτων, αυτό αποδίδεται ορθώς. - \item[\tiny{$\blacksquare$}] Όπου έχω παραθέσει από δουλειά τρίτων, η πηγή + \item[\tiny{$\blacksquare$}] Όπου έχω παραθέσει δουλειά τρίτων, η πηγή δίνεται πάντα. Με εξαίρεση αυτές τις παραθέσεις, αυτή η διπλωματική εργασία είναι εξ ολοκλήρου προσωπική μου δουλειά. @@ -43,7 +43,7 @@ % Ημερομηνία:\\ % \rule[1em]{25em}{0.5pt} % This prints a line to write the date -% \small\noindent Αυτή η διπλωματική εργασία είναι διαθέσιμη υπό το: \\ +\small\noindent Αυτή η διπλωματική εργασία είναι διαθέσιμη υπό το: \\ \small\textbf{Αναφορά Δημιουργού - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 Διεθνές} \begin{center} diff --git a/SettingsAndPackages/formatsAndDefs.tex b/SettingsAndPackages/formatsAndDefs.tex index 5a49a6d..c21d87c 100644 --- a/SettingsAndPackages/formatsAndDefs.tex +++ b/SettingsAndPackages/formatsAndDefs.tex @@ -32,6 +32,8 @@ \usepackage{textcomp} % Make landscape pages display as landscape \usepackage{pdflscape} +% Better paragraph break in new pages +\usepackage[defaultlines=4,all]{nowidow} % Select alternative section titles (Better chapter, section and subsection titles) \usepackage{titlesec}