Can someone review this commit, please ?

This commit is contained in:
2024-01-24 03:16:19 +02:00
parent 0329acc55b
commit 4f517519e7
13 changed files with 1239 additions and 1188 deletions

View File

@@ -3,71 +3,91 @@
\lhead{\textgreek{Συντομογραφίες}} % Set the left side page header to "Abbreviations" \lhead{\textgreek{Συντομογραφίες}} % Set the left side page header to "Abbreviations"
\listofsymbols{ll} % Include a list of Abbreviations (a table of two columns) \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{AMI} & \textbf{A}mazon \textbf{M}achine \textbf{I}mage \\
\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{API} & \textbf{A}pplication \textbf{P}rogramming \textbf{I}nterface \\ \textbf{API} & \textbf{A}pplication \textbf{P}rogramming \textbf{I}nterface \\
\textbf{SDK} & \textbf{S}oftware \textbf{D}evelopment \textbf{K}it \\ \textbf{AppArmor} & \textbf{App}lication \textbf{Armor} \\
\textbf{OS} & \textbf{O}perating \textbf{S}ystem \\ \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{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{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{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{CERT} & \textbf{C}omputer \textbf{E}mergency \textbf{R}esponse \textbf{T}eam \\
\textbf{PoC} & \textbf{P}roof \textbf{o}f \textbf{C}oncept \\ \textbf{cgroups} & \textbf{c}ontrol \textbf{groups} \\
\textbf{SSH} & \textbf{S}ecure \textbf{SH}ell \\ \textbf{CI/CD} & \textbf{C}ontinuous \textbf{I}ntegration / \textbf{C}ontinuous \textbf{D}elivery \\
\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{CIS} & \textbf{C}enter for \textbf{I}nternet \textbf{S}ecurity \\ \textbf{CIS} & \textbf{C}enter for \textbf{I}nternet \textbf{S}ecurity \\
\textbf{ARP} & \textbf{A}ddress \textbf{R}esolution \textbf{P}rotocol \\ \textbf{CISA} & \textbf{C}ybersecurity \& \textbf{I}nfrastructure \textbf{S}ecurity \textbf{A}gency \\
\textbf{DNS} & \textbf{D}omain \textbf{N}ame \textbf{S}ystem \\ \textbf{CPE} & \textbf{C}ommon \textbf{P}latform \textbf{E}numeration \\
\textbf{MitM} & \textbf{M}an-\textbf{i}n-\textbf{t}he-\textbf{M}iddle \\
\textbf{CPU} & \textbf{C}entral \textbf{P}rocessing \textbf{U}nit \\ \textbf{CPU} & \textbf{C}entral \textbf{P}rocessing \textbf{U}nit \\
\textbf{SELinux} & \textbf{S}ecurity-\textbf{E}nhanced \textbf{Linux} \\ \textbf{CVE} & \textbf{C}ommon \textbf{V}ulnerabilities and \textbf{E}xposures \\
\textbf{SecComp} & \textbf{Sec}ure \textbf{Comp}uting \\ \textbf{CVSS} & \textbf{C}ommon \textbf{V}ulnerability \textbf{S}coring \textbf{S}ystem \\
\textbf{AppArmor} & \textbf{App}lication \textbf{Armor} \\ \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{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{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{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{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{Π}ληροφορικής \\ \textbf{ΤΠ} & \textbf{Τ}εχνολογίες \textbf{Π}ληροφοριών \\
} }
\lhead{} \lhead{}

View File

@@ -6,27 +6,27 @@
\hyphenation{αυτές νέφος} \hyphenation{αυτές νέφος}
\noindent Τη σημερινή εποχή, όλο και περισσότερος κόσμος βασίζεται πλέον σε \noindent Τη σημερινή εποχή, όλο και περισσότερος κόσμος βασίζεται πλέον σε
υπηρεσίες τύπου IaaS έναντι των παραδοσιακών επιτόπιων υποδομών για την παροχή υπηρεσίες τύπου IaaS (Infrastructure-as-a-Service) έναντι των παραδοσιακών
υπολογιστικής υποστήριξης σε εφαρμογές, υπηρεσίες και επιχειρησιακές επιτόπιων υποδομών για την παροχή υπολογιστικής υποστήριξης σε εφαρμογές,
διαδικασίες. Αυτό συμβαίνει διότι κατ' αυτό τον τρόπο μειώνονται τα έξοδα ενός υπηρεσίες και επιχειρησιακές διαδικασίες. Αυτό συμβαίνει διότι κατ' αυτό τον
οργανισμού ή μιας επιχείρησης εφόσον δεν υπάρχει ανάγκη δαπάνης/επένδυσης για τρόπο μειώνονται τα έξοδα ενός οργανισμού ή μιας επιχείρησης εφόσον δεν υπάρχει
την αγορά εξοπλισμού και το λειτουργικό κόστος χρήσης υπηρεσιών IaaS βασίζεται ανάγκη δαπάνης/επένδυσης για την αγορά εξοπλισμού και το λειτουργικό κόστος
σε ευέλικτα μοντέλα χρέωσης με βάση την χρήση (των πόρων υποδομής που χρήσης υπηρεσιών IaaS βασίζεται σε ευέλικτα μοντέλα χρέωσης με βάση την χρήση
προσφέρονται). Επιπλέον, είναι δυνατή η κλιμάκωση της προσφερόμενης (των πόρων υποδομής που προσφέρονται). Επιπλέον, είναι δυνατή η κλιμάκωση της
απομακρυσμένης υποδομής ανάλογα με τις ανάγκες του οργανισμού και του τρέχοντος προσφερόμενης απομακρυσμένης υποδομής ανάλογα με τις ανάγκες του οργανισμού και
φόρτου εργασίας των υπηρεσιών και εφαρμογών προς υποστήριξη. Με αυτόν τον του τρέχοντος φόρτου εργασίας των υπηρεσιών και εφαρμογών προς υποστήριξη. Με
τρόπο, μεταβιβάζεται η ευθύνη της διάθεσης και συντήρησης του εξοπλισμού σε αυτόν τον τρόπο, μεταβιβάζεται η ευθύνη της διάθεσης και συντήρησης του
τρίτους ενώ ταυτόχρονα εισάγεται ένα καινούριο μοντέλο εμπιστοσύνης ανάμεσα εξοπλισμού σε τρίτους ενώ ταυτόχρονα εισάγεται ένα καινούριο μοντέλο
στον χρήστη/οργανισμό και τον πάροχο νέφους. Η αύξηση ενδιαφέροντος από τις εμπιστοσύνης ανάμεσα στον χρήστη/οργανισμό και τον πάροχο νέφους. Η αύξηση
επιχειρήσεις προς τις τεχνολογίες εικονικοποίησης, οι οποίες αποτελούν τα ενδιαφέροντος από τις επιχειρήσεις προς τις τεχνολογίες εικονικοποίησης, οι
θεμέλια των υπηρεσιών IaaS, αλλά και η ραγδαία άνοδος της δημοτικότητας των οποίες αποτελούν τα θεμέλια των υπηρεσιών IaaS, αλλά και η ραγδαία άνοδος της
τεχνολογιών δοχείων (containers) όπως είναι το Docker, άρχισαν με την σειρά δημοτικότητας των τεχνολογιών δοχείων (containers) όπως είναι το Docker,
τους να ενισχύουν την υιοθέτηση της αρχιτεκτονικής μικρο-υπηρεσιών για την άρχισαν με την σειρά τους να ενισχύουν την υιοθέτηση της αρχιτεκτονικής
ανάπτυξη εφαρμογών. Μιας αρχιτεκτονικής που βασίζεται τόσο στις τεχνολογίες μικρο-υπηρεσιών για την ανάπτυξη εφαρμογών. Μιας αρχιτεκτονικής που βασίζεται
εικονικοποίησης για την στέγαση των εφαρμογών σε υποδομές νέφους όσο και στις τόσο στις τεχνολογίες εικονικοποίησης για την στέγαση των εφαρμογών σε υποδομές
τεχνολογίες δοχείων για την διαμέριση των λειτουργιών τους σε ένα σύνολο από νέφους όσο και στις τεχνολογίες δοχείων για την διαμέριση των λειτουργιών τους
συστατικά/δοχεία, προσφέροντας ένα κατάλληλο επίπεδο απόδοσης και σε ένα σύνολο από συστατικά/δοχεία, προσφέροντας ένα κατάλληλο επίπεδο απόδοσης
κλιμακωσιμότητας \footfullcite{awsMicroservices}. Ωστόσο, οι εφαρμογές αυτές και κλιμακωσιμότητας \cite{awsMicroservices}. Ωστόσο, οι εφαρμογές αυτές
παραμένουν άμεσα ευεπηρέαστες σε ζητήματα ασφάλειας που μπορεί να αφορούν το παραμένουν άμεσα ευεπηρέαστες σε ζητήματα ασφάλειας που μπορεί να αφορούν το
ίδιο το νέφος ή/και τις τεχνολογίες στις οποίες στηρίζεται. ίδιο το νέφος ή/και τις τεχνολογίες στις οποίες στηρίζεται.
@@ -34,7 +34,7 @@
Στην παρούσα εργασία θα αναλύσουμε πρώτα τα ζητήματα ασφαλείας που αφορούν το Στην παρούσα εργασία θα αναλύσουμε πρώτα τα ζητήματα ασφαλείας που αφορούν το
νέφος και ειδικότερα αυτά που αφορούν τις τεχνολογίες εικονικοποίησης και νέφος και ειδικότερα αυτά που αφορούν τις τεχνολογίες εικονικοποίησης και
δοχείων. Έπειτα, θα αναλύσουμε πως μπορεί να γίνει χρήση αυτών των 2 δοχείων. Έπειτα, θα αναλύσουμε πως μπορεί να γίνει χρήση αυτών των δύο
τεχνολογιών με περισσότερη ασφάλεια. Όμως, ο σκοπός της εργασίας προχωρά πέρα τεχνολογιών με περισσότερη ασφάλεια. Όμως, ο σκοπός της εργασίας προχωρά πέρα
από αυτό και μεταβαίνει σε ένα πρακτικό επίπεδο, προτείνοντας τη λύση ενός από αυτό και μεταβαίνει σε ένα πρακτικό επίπεδο, προτείνοντας τη λύση ενός
εργαλείου που υλοποιεί την προτεινόμενη, ασφαλή χρήση των τεχνολογιών αυτών. εργαλείου που υλοποιεί την προτεινόμενη, ασφαλή χρήση των τεχνολογιών αυτών.
@@ -51,7 +51,7 @@
των λειτουργικών συστημάτων. των λειτουργικών συστημάτων.
\vskip 60pt \vskip 60pt
\noindent \textbf{Λέξεις κλειδιά:} Νέφος, Ασφάλεια, Εικονικοποίηση, Δοχεία, Μικρο-υπηρεσίες, Αυτοματοποίηση \noindent \textbf{Λέξεις κλειδιά:} Νέφος, Ασφάλεια, Εικονικοποίηση, Εικονικές Μηχανές, Δοχεία, Μηχανή Δοχείων, Μικρο-υπηρεσίες, Αυτοματοποίηση, Σκλήρυνση
} }

View File

@@ -2,16 +2,17 @@
% skip indentation just for this paragraph % skip indentation just for this paragraph
\textenglish{ \textenglish{
\noindent Today, more and more people rely on IaaS services over traditional \noindent Today, more and more people rely on IaaS
on-premise infrastructure to provide computational support to applications, (Infrastructure-as-a-Service) services over a traditional on-premise
services and business processes. That happens because in this way, the costs of infrastructure to provide computational support to applications, services and
an organization or business are reduced, since there is no need for an upfront business processes. This is due to the fact that the costs of an organization
investment on the purchase of equipment. Also, the operational cost of using or business are reduced, since there is no need for an upfront investment on
IaaS services is based on flexible billing models according to the usage (of the purchase of equipment. Also, the operational cost of using IaaS services is
the offered infrastructure resources). In addition, it is possible to scale the based on flexible billing models according to the usage (of the offered
offered remote infrastructure, depending on the needs of the organization and infrastructure resources). In addition, it is possible to scale the offered
the current workload of the services and applications to be supported. In this remote infrastructure, depending on the needs of the organization and the
way, the responsibility for the equipment and its maintenance is transferred to 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 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 the user/organization and the cloud provider. The increased interest shown by
enterprises when in comes to virtualization technologies (which are a key 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 architecture based on virtualization technologies for hosting applications in
cloud infrastructures and container technologies for partitioning their cloud infrastructures and container technologies for partitioning their
functions into a set of containers and thus, providing an appropriate level of functions into a set of containers and thus, providing an appropriate level of
performance and scalability \footfullcite{awsMicroservices}. However, the performance and scalability \cite{awsMicroservices}. However, such applications
applications in question remain vulnerable to security issues that may be tied remain vulnerable to security issues that may be tied to the cloud and/or the
to the cloud and/or the technologies on which it is based on. technologies on which it is based.
} }
@@ -31,19 +32,19 @@ to the cloud and/or the technologies on which it is based on.
\textenglish{ \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. 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 Then, we will analyze how these two technologies can be used in a more secure
manner. However, the purpose of this paper goes beyond that and moves to a more manner. However, the purpose of this thesis goes beyond that and moves to a
practical level by proposing the solution of a tool that can implement the 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 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 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 an automated manner. In addition, it is capable of installing the Docker
Docker container engine on these virtual machines, which it can also harden. container engine on these virtual machines, which it can also harden. The main
The main goal of this work is to make it easier for an organization to install goal of this work is to make it easier for an organization to install and
and configure in an automated manner a secure, distributed environment for the configure in an automated manner a secure, distributed environment for the
deployment and operation of a microservices application. This automation lies 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 knowledge on technical or security issues in regard to infrastructure and
operating systems. operating systems.
@@ -52,7 +53,7 @@ operating systems.
\vskip 60pt \vskip 60pt
\textenglish{ \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
} }
} }

View File

@@ -1187,3 +1187,17 @@
url = {https://github.com/doxygen/doxygen}, url = {https://github.com/doxygen/doxygen},
urldate = {2024-01-05}, 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},
}

View File

@@ -1,10 +1,12 @@
\chapter{Εισαγωγή} \label{introduction} \chapter{Εισαγωγή} \label{introduction}
\hyphenation{πολλαπλών}
\noindent Παραδοσιακά, όταν ένας χρήστης/εταιρεία επιθυμούσε να διαθέτει μια \noindent Παραδοσιακά, όταν ένας χρήστης/εταιρεία επιθυμούσε να διαθέτει μια
υπηρεσία στο ευρύ κοινό θα έπρεπε να επενδύσει ένα κατάλληλο κεφάλαιο για την υπηρεσία στο ευρύ κοινό θα έπρεπε να επενδύσει ένα κατάλληλο κεφάλαιο για την
αγορά εξοπλισμού. Σε περίπτωση που η υπηρεσία αυτή τύγχανε ευρείας αποδοχής, αγορά εξοπλισμού. Σε περίπτωση που η υπηρεσία αυτή τύγχανε ευρείας αποδοχής,
καθίστατο επιτακτική η ανάγκη της επέκτασης του υφιστάμενου εξοπλισμού αλλά και καθίστατο επιτακτική η ανάγκη της επέκτασης του υφιστάμενου εξοπλισμού αλλά και
της εγκατάστασης όλων των αναγκαίων πόρων λογισμικού (βάσεις δεδομένων της εγκατάστασης όλων των αναγκαίων πόρων λογισμικού (βάσεων δεδομένων
(Databases), λογισμικό της υπηρεσίας, αρχείων ρυθμίσεων, κ.λπ.) στα νέα (Databases), λογισμικό της υπηρεσίας, αρχείων ρυθμίσεων, κ.λπ.) στα νέα
κομμάτια εξοπλισμού που αγοράσθηκαν. Η παραπάνω διαδικασία απαιτούσε επιπλέον κομμάτια εξοπλισμού που αγοράσθηκαν. Η παραπάνω διαδικασία απαιτούσε επιπλέον
κεφάλαιο και αρκετές εργατοώρες προκειμένου να γίνει πράξη. Επιπρόσθετα, η κεφάλαιο και αρκετές εργατοώρες προκειμένου να γίνει πράξη. Επιπρόσθετα, η
@@ -15,31 +17,33 @@
όταν η Amazon, ψάχνοντας τρόπους να κλιμακώσει τις υπηρεσίες που προσέφερε στον όταν η Amazon, ψάχνοντας τρόπους να κλιμακώσει τις υπηρεσίες που προσέφερε στον
τομέα του ηλεκτρονικού εμπορίου (e-commerce), δημιούργησε την θυγατρική της, τομέα του ηλεκτρονικού εμπορίου (e-commerce), δημιούργησε την θυγατρική της,
AWS (Amazon Web Services). Η AWS άρχισε να προσφέρει υπηρεσίες AWS (Amazon Web Services). Η AWS άρχισε να προσφέρει υπηρεσίες
νεφο-υπολογιστικής και συγκεκριμένα, την EC2 (Elastic Compute Cloud), μια νεφο-υπολογιστικής (Cloud Computing Services) και συγκεκριμένα, την EC2
υπηρεσία τύπου IaaS (Infrastructure as a Service). Πρόκειται για την πρώτη (Elastic Compute Cloud), μια υπηρεσία τύπου IaaS (Infrastructure as a Service)
υπηρεσία ενοικίασης υπολογιστικών πόρων προς αξιοποίηση από οργανισμούς και (Υποδομή ως Υπηρεσία). Πρόκειται για την πρώτη υπηρεσία ενοικίασης
επιχειρήσεις προκειμένου να επιταχυνθεί η διαδικασία διάθεσης των δικών τους υπολογιστικών πόρων προς αξιοποίηση από οργανισμούς και επιχειρήσεις
υπηρεσιών. Αυτό το μοντέλο λειτουργίας παρέχει πολλά πλεονεκτήματα, όπως το προκειμένου να επιταχυνθεί η διαδικασία διάθεσης των δικών τους υπηρεσιών. Αυτό
μικρότερο κόστος εκκίνησης διάθεσης υπηρεσιών, η διευκόλυνση κλιμάκωσής τους το μοντέλο λειτουργίας παρέχει πολλά πλεονεκτήματα, όπως το μικρότερο κόστος
(είτε οριζόντιας όπου μοιράζεται ο φόρτος εργασίας σε παραπάνω διακομιστές είτε εκκίνησης διάθεσης υπηρεσιών, η διευκόλυνση κλιμάκωσής τους (είτε οριζόντιας
κάθετης κατά την οποία ένας διακομιστής αναβαθμίζεται με ισχυρότερες όπου μοιράζεται ο φόρτος εργασίας σε παραπάνω διακομιστές είτε κάθετης κατά την
προδιαγραφές \footfullcite{cloudzeroScalability}) και η απαλλαγή ευθύνης οποία ένας διακομιστής αναβαθμίζεται με ισχυρότερες προδιαγραφές
σχετικά με την συνεχή λειτουργία του εξοπλισμού στον οποίο στεγάζονται. \cite{cloudzeroScalability}) και η απαλλαγή ευθύνης σχετικά με την συνεχή
λειτουργία του εξοπλισμού στον οποίο στεγάζονται.
Λόγω της ευρείας αποδοχής της και των πολλών πλεονεκτημάτων που παρέχει, πολλές Λόγω της ευρείας αποδοχής των υπηρεσιών IaaS της AWS και των πολλών
άλλες εταιρείες, όπως η Google, IBM και Microsoft, άρχισαν να προσφέρουν και πλεονεκτημάτων που αυτές παρέχουν, πολλές άλλες εταιρείες, όπως η Google, IBM
αυτές υπηρεσίες ιδίου τύπου. Σήμερα, ο μέσος καταναλωτής έχει στην διάθεση του και Microsoft, άρχισαν να προσφέρουν και αυτές υπηρεσίες του ίδιου τύπου.
μια πληθώρα εταιρειών που προσφέρουν υπηρεσίες νεφο-υπολογιστικής και μάλιστα Σήμερα, ο μέσος καταναλωτής έχει στην διάθεση του μια πληθώρα εταιρειών που
μερικές από αυτές, όπως η Linode, Vultr και Digital Ocean, προσφέρουν ως την προσφέρουν υπηρεσίες νεφο-υπολογιστικής και μάλιστα μερικές από αυτές, όπως η
κύρια υπηρεσία τους τη δυνατότητα διάθεσης υπολογιστικών πόρων στους χρήστες με Linode, Vultr και Digital Ocean, προσφέρουν ως την κύρια υπηρεσία τους τη
τη μορφή ενοικίασης εικονικών μηχανών. δυνατότητα διάθεσης υπολογιστικών πόρων στους χρήστες με τη μορφή ενοικίασης
εικονικών μηχανών (Virtual Machines).
\section{Ασφάλεια Περιβαλλόντων Νέφους} \label{cloudComputingSecurity} \section{Ασφάλεια Περιβαλλόντων Νέφους} \label{cloudComputingSecurity}
Η ασφάλεια των περιβαλλόντων νέφους είναι ένα θέμα που απασχολεί πολύ τους Η ασφάλεια των περιβαλλόντων νέφους είναι ένα θέμα που απασχολεί πολύ τους
χρήστες και ακόμα περισσότερο τις επιχειρήσεις που βασίζονται σε υπηρεσίες χρήστες και ακόμα περισσότερο τις επιχειρήσεις που βασίζονται σε υπηρεσίες
νεφο-υπολογιστικής για την διάθεση των δικών τους υπηρεσιών. Η επίτευξη της νεφο-υπολογιστικής για την διάθεση των δικών τους υπηρεσιών. Η επίτευξη της
εξαρτάται από 3 βασικούς παράγοντες. Ο πρώτος είναι η ασφάλεια των υποδομών εξαρτάται από τρεις βασικούς παράγοντες. Ο πρώτος είναι η ασφάλεια των υποδομών
νέφους, όπου στην περίπτωση χρήσης υπηρεσιών IaaS υπεύθυνος είναι ο πάροχος νέφους, όπου στην περίπτωση χρήσης υπηρεσιών IaaS υπεύθυνος είναι ο πάροχος
νέφους. Ο δεύτερος παράγοντας είναι η ασφάλεια των τεχνολογιών εικονικοποίησης νέφους. Ο δεύτερος παράγοντας είναι η ασφάλεια των τεχνολογιών εικονικοποίησης
που χρησιμοποιούνται, όπου υπεύθυνος είναι εν μέρει ο πάροχος για τις που χρησιμοποιούνται, όπου υπεύθυνος είναι εν μέρει ο πάροχος για τις
@@ -47,29 +51,28 @@ AWS (Amazon Web Services). Η AWS άρχισε να προσφέρει υπηρ
(εικονικούς) διακομιστές του και ο τελικός χρήστης εφόσον προβεί στην χρήση (εικονικούς) διακομιστές του και ο τελικός χρήστης εφόσον προβεί στην χρήση
δοχείων. Ο τρίτος και τελευταίος παράγοντας είναι οι ενέργειες στις οποίες δοχείων. Ο τρίτος και τελευταίος παράγοντας είναι οι ενέργειες στις οποίες
οφείλει να προβεί ο χρήστης προκειμένου να διατηρήσει ή να ενισχύσει την οφείλει να προβεί ο χρήστης προκειμένου να διατηρήσει ή να ενισχύσει την
ασφάλεια σύμφωνα με τις ανάγκες του. ασφάλεια της υπηρεσίας του (που θα φιλοξενείται από μια υποδομή νέφους) σύμφωνα
με τις ανάγκες του.
Όταν επιλέξει ένας χρήστης να δημιουργήσει εικονικές μηχανές μέσω μιας από τις Όταν επιλέξει ένας χρήστης να δημιουργήσει εικονικές μηχανές μέσω μιας από τις
πλατφόρμες IaaS, προς διευκόλυνσή του η διαδικασία γίνεται και μέσω γραφικού διαθέσιμες πλατφόρμες IaaS, προς διευκόλυνσή του η διαδικασία γίνεται και μέσω
περιβάλλοντος της μορφής Point and Click. Στις εικονικές μηχανές που γραφικού περιβάλλοντος της μορφής Point and Click. Στις εικονικές μηχανές που
προσφέρονται, τις περισσότερες φορές διατίθενται διάφορες διανομές λειτουργικού προσφέρονται, τις περισσότερες φορές διατίθενται διάφορες διανομές λειτουργικού
συστήματος Linux, οι οποίες ενδέχεται να έχουν εγκατεστημένα και ρυθμισμένα εκ συστήματος Linux, οι οποίες ενδέχεται να έχουν εγκατεστημένα και ρυθμισμένα εκ
των προτέρων διάφορα λογισμικά, όπως το σύστημα διαχείρισης βάσεων δεδομένων των προτέρων διάφορα λογισμικά, όπως το σύστημα διαχείρισης βάσεων δεδομένων
MySQL και το διακομιστή ιστού Nginx. Με αυτό τον τρόπο, η διαδικασία MySQL \footfullcite{mysql} και το διακομιστή ιστού Nginx \footfullcite{nginx}.
δημιουργίας εικονικής μηχανής είναι αρκετά εύκολη για τον χρήστη, ο οποίος δεν Με αυτό τον τρόπο, η διαδικασία δημιουργίας εικονικής μηχανής είναι αρκετά
χρειάζεται να έχει ειδικές γνώσεις στο υλικό για να το πετύχει αυτό. Στην εύκολη για τον χρήστη, ο οποίος δεν χρειάζεται να έχει ειδικές γνώσεις στο
προκειμένη περίπτωση, ενώ υπήρχε μηδενική δυσκολία για την απόκτηση εικονικής υλικό για να το πετύχει αυτό. Στην προκειμένη περίπτωση, ενώ υπάρχει μηδενική
μηχανής εξοπλισμένης με λειτουργικό σύστημα και πιθανότατα απαραίτητα προς δυσκολία για την απόκτηση εικονικής μηχανής εξοπλισμένης με λειτουργικό σύστημα
χρήση προγράμματα, η ασφάλειά της δεν είναι πάντοτε εγγυημένη. Πολλά από τα και πιθανότατα απαραίτητα προς χρήση προγράμματα, η ασφάλειά της δεν είναι
προγράμματα που θα χρησιμοποιήσει ο χρήστης δεν παρέχουν εξ αρχής πάντοτε εγγυημένη. Πολλά από τα προγράμματα που θα χρησιμοποιήσει ο χρήστης δεν
ενεργοποιημένες τις παραμέτρους ασφαλείας που μπορεί να υποστηρίζουν διότι δεν παρέχουν εξ αρχής ενεργοποιημένες τις παραμέτρους ασφαλείας που μπορεί να
δύναται να υπάρχει μια ασφαλής ρύθμιση που να καλύπτει όλα τα πιθανά σενάρια υποστηρίζουν διότι δεν δύναται να υπάρχει μια ασφαλής ρύθμιση που να καλύπτει
χρήσης. Επιπλέον, η ρύθμιση των παραμέτρων ασφαλείας είναι μια διαδικασία που όλα τα πιθανά σενάρια χρήσης. Επιπλέον, η ρύθμιση των παραμέτρων ασφαλείας
απαιτεί εξειδικευμένες γνώσεις και είναι αρκετά εύκολο όχι μόνο να παραλειφθεί είναι μια διαδικασία που απαιτεί εξειδικευμένες γνώσεις και είναι αρκετά εύκολο
αλλά και να γίνει λανθασμένα λόγω έλλειψης οικειότητας με τα εργαλεία που έχει όχι μόνο να παραλειφθεί αλλά και να γίνει λανθασμένα λόγω έλλειψης οικειότητας
στην διάθεση του ο χρήστης. με τα εργαλεία που έχει στην διάθεση του ο χρήστης.
\clearpage
Όπως αναφέρεται και στο \citealt{balduzzi2012security}, υπάρχουν υπηρεσίες IaaS Όπως αναφέρεται και στο \citealt{balduzzi2012security}, υπάρχουν υπηρεσίες IaaS
που προσφέρουν διανομές λειτουργικού συστήματος Linux με εγκατεστημένα και που προσφέρουν διανομές λειτουργικού συστήματος Linux με εγκατεστημένα και
@@ -81,125 +84,74 @@ MySQL και το διακομιστή ιστού Nginx. Με αυτό τον τ
ευαίσθητων προσωπικών δεδομένων. Στην περίπτωση που και ο πάροχος νέφους έχει ευαίσθητων προσωπικών δεδομένων. Στην περίπτωση που και ο πάροχος νέφους έχει
παραλείψει να εφαρμόσει τις απαραίτητες ενημερώσεις ασφαλείας στις τεχνολογίες παραλείψει να εφαρμόσει τις απαραίτητες ενημερώσεις ασφαλείας στις τεχνολογίες
εικονικοποίησης που χρησιμοποιεί, είναι πιθανό κάποιο από τα προγράμματα αυτά εικονικοποίησης που χρησιμοποιεί, είναι πιθανό κάποιο από τα προγράμματα αυτά
να μπορέσει να πραγματοποιήσει μια επίθεση hyperjacking να μπορέσει να πραγματοποιήσει μια επίθεση hyperjacking \cite{Hyperjacking} και
\footfullcite{Hyperjacking} και να αποκτήσει έλεγχο του υπερ-επόπτη με να αποκτήσει έλεγχο του υπερ-επόπτη με αποτέλεσμα να είναι σε θέση να
αποτέλεσμα να είναι σε θέση να προκαλέσει ζημιές είτε σε διαφορετικές εικονικές προκαλέσει ζημιές είτε σε διαφορετικές εικονικές μηχανές είτε στον (φυσικό)
μηχανές είτε στον (φυσικό) διακομιστή στον οποίο εκτελείται. διακομιστή στον οποίο εκτελείται.
\section{Εικονικοποίηση και τεχνολογίες υλοποίησης της} \label{virtualizationTechnologiesIntroduction} \section{Εικονικοποίηση και τεχνολογίες υλοποίησής της} \label{virtualizationTechnologiesIntroduction}
Η εικονικοποίηση είναι ένας όρος που χρησιμοποιούμε όταν θέλουμε να αναφερθούμε Η εικονικοποίηση αποτελεί μια τεχνολογία που επιτρέπει την διαμέριση πόρων ενός
στην αναπαράσταση πόρων σε εικονική μορφή με σκοπό την αναδιαμόρφωσή τους ούτως φυσικού μηχανήματος σε πολλά μικρότερα υποσύνολα αυτών. Με αυτόν τον τρόπο,
ώστε να ικανοποιούνται οι ανάγκες ενός συστήματος. Εφαρμόζεται σε μια πληθώρα καθίσταται ευκολότερη η διαχείρισή τους και αυξάνεται η απόδοση του υποκείμενου
πόρων όπως οι διακομιστές, το λειτουργικό σύστημα, ακόμα και τα δεδομένα. Η πιο υλικού, αφού μπορεί να χρησιμοποιείται στο έπακρον. Υπάρχουν πολλά είδη
συνηθισμένη χρήση εικονικοποίησης είναι αυτή των διακομιστών η οποία αποτελεί εικονικοποίησης που αναλύονται πιο λεπτομερώς στο
και τον πυλώνα της νεφο-υπολογιστικής. Προκειμένου να επιτευχθεί, απαιτείται η \ref{virtualizationImplementations} αλλά οι δύο βασικότερες υλοποιήσεις της
χρήση ενός υπερ-επόπτη. Ένα λογισμικό υπεύθυνο για την κατάτμηση των φυσικών είναι η εικονικοποίηση διακομιστών και λειτουργικών συστημάτων (δοχειοποίηση).
πόρων ενός διακομιστή σε μια ή περισσότερες εικονικές αναπαραστάσεις ενός
συνόλου αυτών με σκοπό να χρησιμοποιηθούν ως ξεχωριστοί διακομιστές.
Για έναν υπερ-επόπτη υπάρχουν δύο κατηγορίες στις οποίες μπορεί να ανήκει. Είτε Στην εικονικοποίηση διακομιστών, ένας φυσικός διακομιστής χωρίζει με την
πρόκειται για υπερ-επόπτη τύπου 1 στην περίπτωση απευθείας πρόσβασης με το βοήθεια ενός υπερ-επόπτη τους πόρους του όπως τη μνήμη, τον αποθηκευτικό χώρο
υλικό, είτε τύπου 2 εάν υπάρχει ήδη λειτουργικό σύστημα εγκατεστημένο στον και τον επεξεργαστή του σε πολλά μικρότερα εικονικά μηχανήματα. Κάθε εικονικό
υποκείμενο διακομιστή προς κατάτμηση. Η επιλογή τύπου υπερ-επόπτη είναι άμεσα μηχάνημα μπορεί να εκτελεί διαφορετικό λειτουργικό σύστημα και να έχει
εξαρτώμενη από τις ανάγκες του κάθε χρήστη. Στην περίπτωση που η ταχύτητα και η διαφορετικές ρυθμίσεις από τα υπόλοιπα. Η διάθεση ενός εικονικού μηχανήματος
απόδοση είναι υψίστης σημασίας, η άμεση πρόσβαση του υπερ-επόπτη τύπου 1 στο δεν περιορίζεται μονάχα σε τοπικούς υπολογιστές και έτσι πολλές φορές
υλικό συμβάλλει στην επίτευξη της διατήρησης των δύο αυτών προδιαγραφών σε συνηθίζεται η ενοικίαση τέτοιων μηχανημάτων προκειμένου να μπορέσουν να
κατάλληλες τιμές. Από την άλλη, ένας υπερ-επόπτης τύπου 2 δεν έρχεται σε χρησιμοποιηθούν από τρίτα πρόσωπα για την επίτευξη των δικών τους διεργασιών.
αντιπαράθεση με το υποκείμενο ΛΣ και επιτρέπει την χρήση προγραμμάτων που το ΛΣ
πιθανόν να μην είναι σε θέση να εκτελέσει.
\clearpage Η δοχειοποίηση αποτελεί μια ειδική περίπτωση εικονικοποίησης όπου αντί για το
υλικό, εικονικοποιείται το λειτουργικό σύστημα. Αυτό, καθιστά την δοχειοποίηση
πιο αποδοτική από την εικονικοποίηση διακομιστών καθώς δεν χρειάζεται να
εκτελεστεί ένας υπερ-επόπτης για την διαχείριση υπολογιστικών πόρων. Επιπλέον,
η δοχειοποίηση επιτρέπει την εκτέλεση περισσότερων εικονικών περιβαλλόντων στον
ίδιο φυσικό διακομιστή και έτσι, η απόδοση του υλικού αυξάνεται ακόμα
περισσότερο. Συνήθως χρησιμοποιείται για την διάθεση προγραμμάτων στο ευρύ
κοινό, τα οποία ακολουθούν την αρχιτεκτονική μικρο-υπηρεσιών (microservices)
και επειδή περιέχουν όλες τις απαραίτητες βιβλιοθήκες για την εκτέλεσή τους,
χωρίς να βασίζονται στο υποκείμενο νέφος στο οποίο στεγάζονται, αποτελούν
αρκετά δημοφιλή επιλογή τεχνολογίας διάθεσης υπηρεσιών.
Η εικονικοποίηση διακομιστών χωρίζεται σε δύο κατηγορίες βάσει της μεθόδου Τα δοχεία είναι ένα προϊόν της δοχειοποίησης και αποτελούν το αποτέλεσμα της
επίτευξης της. Την πλήρη εικονικοποίηση και την παρα-εικονικοποίηση εικονικοποίησης σε επίπεδο λειτουργικού συστήματος. Με την βοήθεια του
\footfullcite{abacusFullParaOSVirtualization}. Στην πρώτη περίπτωση το λειτουργικού συστήματος, δημιουργούνται εικονικά περιβάλλοντα στα οποία μπορούν
λειτουργικό σύστημα που εκτελείται στον εικονικό διακομιστή συμπεριφέρεται όπως αυτά να εκτελεστούν. Ουσιαστικά, μια μηχανή δοχείων αιτείται από το λειτουργικό
θα συμπεριφερόταν σε έναν φυσικό διακομιστή. Αυτό συμβαίνει διότι από μεριάς σύστημα την διάθεση ενός εικονικού περιβάλλοντος για την εκτέλεση των
του λειτουργικού συστήματος δεν υπάρχει επίγνωση της εικονικοποίησης που έχει διεργασιών ενός προγράμματος. Το πρόγραμμα αυτό, καθώς και όλες οι βιβλιοθήκες
λάβει μέρος για να δημιουργηθούν οι εικονικοί πόροι στους οποίους στεγάζεται. Η που χρειάζεται, καθορίζονται σε μια εικόνα δοχείου (container image) την οποία
πλήρης εικονικοποίηση μπορεί να είναι δύο ειδών. Υποβοηθούμενη από το λογισμικό η μηχανή δοχείων θα πρέπει να ανακτήσει, να αποθηκεύσει και με βάση αυτήν να
ή από το υλικό. Στο πρώτο είδος, πραγματοποιείται εικονικοποίηση ολόκληρου του δημιουργήσει το αντιστοιχούμενο δοχείο που αυτή περιγράφει.
υλικού μέσω του υπερ-επόπτη που εκτελείται στο ΛΣ ενώ στο δεύτερο όπου δεν
υπάρχει ΛΣ, δύναται το λειτουργικό σύστημα του εικονικού διακομιστή να κάνει
χρήση της φυσικής κεντρικής μονάδας επεξεργασίας του διακομιστή φιλοξενίας εάν
αυτή το υποστηρίζει \footfullcite{geeksforgeeksHardwareAssistedVirtualization}.
Στην περίπτωση της παρα-εικονικοποίησης το λειτουργικό σύστημα αναγνωρίζει την
ύπαρξη του υπερ-επόπτη και απαιτείται η τροποποίηση και των δύο ώστε να μπορούν
να επικοινωνούν με χρήση υπερ-κλήσεων. Αν και το γεγονός αυτό μειώνει την
συμβατότητα σε σχέση με την πλήρη εικονικοποίηση, η άμεση επικοινωνία του
λειτουργικού συστήματος με τον υπερ-επόπτη συμβάλλει στην αύξηση της
αποδοτικότητας.
\section{Εισαγωγή στα δοχεία και τον τρόπο λειτουργίας τους} \label{containerTechnologies} Τα δοχεία αποτελούν μια ελαφρύτερη εναλλακτική λύση σε σύγκριση με τις
εικονικές μηχανές και είθισται να προτιμώνται για την ανάπτυξη και διάθεση
Τα δοχεία αποτελούν και αυτά κομμάτι των τεχνολογιών εικονικοποίησης αλλά σε εφαρμογών. Αυτό οφείλεται στο γεγονός ότι η μεταφορά και αναδημιουργία τους
επίπεδο λειτουργικού συστήματος. Κατά την περιγραφή της διαδικασίας δημιουργίας μπορεί να πραγματοποιηθεί σε κάθε περιβάλλον και νέφος, καθώς και στο γεγονός
δοχείων δεν χρησιμοποιείται πλέον ο όρος εικονικοποίηση αλλά δοχειοποίηση ότι απαιτούν λιγότερους πόρους σε σχέση με τις εικονικές μηχανές διότι οι
(containerization). Σε αντίθεση με τις τεχνολογίες εικονικοποίησης που υποκείμενοι πόροι του συστήματος μπορούν να μοιραστούν μεταξύ των διαφορετικών
αναφέρθηκαν στο \ref{virtualizationTechnologiesIntroduction}, για την δοχείων.
δοχειοποίηση δεν είναι αναγκαία η ύπαρξη υπερ-επόπτη αλλά έναν παρόμοιο ρόλο
παίρνει η μηχανή δοχείων. Επιπλέον, ενώ οι εικονικές μηχανές καταλήγουν να
περιέχουν εικονικό αντίγραφο του υλικού, δικό τους λειτουργικό σύστημα και
εγκατεστημένα πακέτα προς υποστήριξη ενός λογισμικού, τα δοχεία αποτελούνται
μονάχα από το λογισμικό προς εκτέλεση και τις εξαρτήσεις που χρειάζεται
προκειμένου να είναι λειτουργικό.
\clearpage
Τα απαραίτητα συστατικά για την επίτευξη της δοχειοποίησης είναι μια εικόνα
δοχείου και μια μηχανή δοχείων. Στην εικόνα δοχείου εμπεριέχονται τα συστατικά
μέρη ενός λογισμικού και οδηγίες συναρμολόγησής του προς ανάγνωση από την
μηχανή δοχείων. Από εκεί και πέρα, για την δημιουργία δοχείων υπάρχει μια
αλληλουχία βημάτων που πρέπει να έρθει εις πέρας. Αρχικά, η μηχανή δοχείων θα
προσπελάσει την εικόνα δοχείου προκειμένου να εξακριβώσει τις προδιαγραφές του.
Έπειτα, με την βοήθεια των μεθόδων απομόνωσης που έχει στην διάθεση της μέσω
των μηχανισμών εικονικοποίησης του πυρήνα του λειτουργικού συστήματος
φιλοξενίας, θα δημιουργήσει ένα εικονικό περιβάλλον απομονωμένο από το φυσικό
ήδη υπάρχον και τέλος, θα πραγματοποιήσει εκκίνηση του δοχείου ως διεργασία του
συστήματος.
Ορισμένα από αυτά τα βήματα περιλαμβάνουν και άλλες διαδικασίες για τις οποίες
είναι υπεύθυνα συγκεκριμένα προγράμματα με τα οποία συνεργάζεται η μηχανή
δοχείων. Υπάρχουν και μηχανές δοχείων χαμηλού επιπέδου έναντι των πιο γνωστών
υψηλού επιπέδου όπως το Docker, στις οποίες λείπουν λειτουργίες όπως η απόκτηση
εικόνων δοχείων από ένα κεντρικό αποθετήριο και ο έλεγχος εγκυρότητας των
ρυθμίσεων των εικόνων αυτών. Οι μηχανές δοχείων υψηλού επιπέδου είναι
ουσιαστικά μια συλλογή εργαλείων που διευκολύνουν την δοχειοποίηση
απαλλάσσοντας τον χρήστη από την ανάγκη της χειροκίνητης εκτέλεσης των βημάτων
της \footfullcite{sysdigContainerRuntime}.
Το τελικό επιθυμητό αποτέλεσμα είναι η δημιουργία ενός απομονωμένου
περιβάλλοντος στο οποίο πραγματοποιείται η εκτέλεση ενός λογισμικού με
βιβλιοθήκες και εξαρτήσεις διαφορετικών εκδόσεων συγκριτικά με αυτές που μπορεί
να προϋπάρχουν στο σύστημα. Το περιβάλλον αυτό είναι υποχρεωμένο να
χρησιμοποιήσει ένα υποσύνολο των πόρων του συστήματος που του απονεμήθηκε μέσω
της μηχανής δοχείων. Τα παραπάνω είναι εφικτά και με την χρήση εικονικών
μηχανών αλλά με κόστος την επιβάρυνση του συστήματος φιλοξενίας λόγω της
αδυναμίας διαμοιρασμού των πόρων με τον τρόπο που το επιτυγχάνουν τα δοχεία.
Κάθε δοχείο μοιράζεται τον πυρήνα του λειτουργικού συστήματος φιλοξενίας με τα
υπόλοιπα και κάθε στρώση μιας εικόνας δοχείου αντιστοιχουμένη σε ένα
στιγμιότυπο λογισμικού, δύναται να χρησιμοποιηθεί ταυτοχρόνως από περισσότερα
του ενός δοχεία προς αποφυγή διπλής αποθήκευσης
\footfullcite{codemotionContainerImages}. Επιπλέον, κάθε εικόνα δοχείου δύναται
να χρησιμοποιηθεί ως πρότυπο για την δημιουργία μιας καινούριας, καθιστώντας
έτσι ευκολότερη την επεκτασιμότητα ενός λογισμικού σε αντίθεση με τις εικονικές
μηχανές όπου κάθε νέο στιγμιότυπό τους απαιτεί την επαναληπτική εκτέλεση των
βημάτων δημιουργίας τους.
\subsection{Μηχανές δοχείων και εικονικοποίηση σε επίπεδο ΛΣ} \label{osVirtualization} \subsection{Μηχανές δοχείων και εικονικοποίηση σε επίπεδο ΛΣ} \label{osVirtualization}
Πολλά λειτουργικά συστήματα, ειδικά αυτά που κάνουν χρήση του πυρήνα Linux Πολλά λειτουργικά συστήματα, ειδικά αυτά που κάνουν χρήση του πυρήνα Linux
διαθέτουν μηχανισμούς απομόνωσης διεργασιών και δυνατότητες εικονικοποίησης διαθέτουν μηχανισμούς απομόνωσης διεργασιών και δυνατότητες εικονικοποίησης
(λειτουργικού συστήματος), όπως είναι οι ομάδες ελέγχου (control groups) με τις (λειτουργικού συστήματος), όπως είναι οι ομάδες ελέγχου (control groups) με τις
οποίες μπορεί να επιτευχθεί ο περιορισμός πόρων σε ένα υποσύνολο διεργασιών και οποίες μπορεί να επιτευχθεί ο περιορισμός πόρων σε ένα υποσύνολο διεργασιών,
οι χώροι ονομάτων χρηστών (user namespaces) που προσφέρουν την δυνατότητα καθώς και οι χώροι ονομάτων χρηστών (user namespaces) που προσφέρουν την
περιορισμού των δικαιωμάτων που έχει μια διεργασία στο σύστημα αρχείων. Με την δυνατότητα περιορισμού των δικαιωμάτων που έχει μια διεργασία στο σύστημα
βοήθεια των εργαλείων που έχουν στην διάθεσή τους, δύναται να πραγματοποιηθεί αρχείων. Με την βοήθεια των εργαλείων που έχουν οι μηχανές δοχείων στην διάθεσή
εικονικοποίηση σε επίπεδο ΛΣ. Μια μέθοδος εικονικοποίησης διακομιστών όπου ο τους, δύναται να πραγματοποιηθεί εικονικοποίηση σε επίπεδο ΛΣ. Μια μέθοδος
πυρήνας ενός ΛΣ επιτρέπει την ύπαρξη πολλαπλών απομονωμένων περιβαλλόντων εικονικοποίησης διακομιστών όπου ο πυρήνας ενός ΛΣ επιτρέπει την ύπαρξη
\footfullcite{teimouriOsVirtualizationDefinition}, τα οποία συμπεριφέρονται ως πολλαπλών απομονωμένων περιβαλλόντων \cite{teimouriOsVirtualizationDefinition},
ξεχωριστοί διακομιστές \footfullcite{webopediaOsVirtualizationDefinition}. τα οποία συμπεριφέρονται ως ξεχωριστοί διακομιστές
\cite{webopediaOsVirtualizationDefinition}.
Μια από τις υποχρεώσεις της μηχανής δοχείων είναι η επικοινωνία με τον πυρήνα Μια από τις υποχρεώσεις της μηχανής δοχείων είναι η επικοινωνία με τον πυρήνα
του λειτουργικού συστήματος φιλοξενίας για να επιτευχθεί αυτή η εικονικοποίηση. του λειτουργικού συστήματος φιλοξενίας για να επιτευχθεί αυτή η εικονικοποίηση.
@@ -235,32 +187,32 @@ MySQL και το διακομιστή ιστού Nginx. Με αυτό τον τ
εκτελεστεί μαζί με μια εφαρμογή, τις βιβλιοθήκες και τις εξαρτήσεις της. Από εκτελεστεί μαζί με μια εφαρμογή, τις βιβλιοθήκες και τις εξαρτήσεις της. Από
την άλλη, ένα δοχείο αντί να εικονικοποιήσει το υλικό, εικονικοποιεί το την άλλη, ένα δοχείο αντί να εικονικοποιήσει το υλικό, εικονικοποιεί το
λειτουργικό σύστημα ούτως ώστε κάθε δοχείο να περιέχει μόνο την εφαρμογή, τις λειτουργικό σύστημα ούτως ώστε κάθε δοχείο να περιέχει μόνο την εφαρμογή, τις
βιβλιοθήκες και τις εξαρτήσεις της \footfullcite{ibmContainerVsVm}. βιβλιοθήκες και τις εξαρτήσεις της \cite{ibmContainerVsVm}.
Το σχήμα \ref{fig:containerVsVm} παρουσιάζει τις διαφορές ανάμεσα στην \clearpage
αρχιτεκτονική της εικονικοποίησης και των δοχείων:
\noindent Το Σχήμα \ref{fig:containerVsVm} παρουσιάζει τις διαφορές ανάμεσα
στην αρχιτεκτονική της εικονικοποίησης και των δοχείων.
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \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}} \captionof{figure}{Χρήση εικονικοποίησης έναντι δοχείων \cite{redhatVirtualizationDefinition}}
\label{fig:containerVsVm} \label{fig:containerVsVm}
\end{figure} \end{figure}
\vspace*{-30pt} \vspace*{-30pt}
\end{center} \end{center}
\clearpage
Η απουσία του εικονικού λειτουργικού υλικού είναι που καθιστά τα δοχεία Η απουσία του εικονικού λειτουργικού υλικού είναι που καθιστά τα δοχεία
γρήγορα, φορητά και μικρότερα σε μέγεθος. Για να γίνει πιο εμφανής η διαφορά, γρήγορα, φορητά και μικρότερα σε μέγεθος. Για να γίνει πιο εμφανής η διαφορά,
σύμφωνα με τη Red Hat \footfullcite{redhatContainerVsVm}, το μέγεθος των σύμφωνα με τη Red Hat \cite{redhatContainerVsVm}, το μέγεθος των εικονικών
εικονικών μηχανών είναι της τάξεως των gigabyte ενώ των δοχείων είναι της μηχανών είναι της τάξεως των gigabyte ενώ των δοχείων είναι της τάξεως των
τάξεως των megabyte. Πολλές φορές, όπως αναφέρεται και στο megabyte. Πολλές φορές, όπως αναφέρεται και σε μια δημοσίευση
\cite{ibmContainerVsVm} \footfullcite{ibmContainerVsVm}, τα δοχεία \cite{ibmContainerVsVm} της \citeauthor{ibmContainerVsVm}, τα δοχεία
χρησιμοποιούνται για εφαρμογές αρχιτεκτονικής μικρο-υπηρεσιών (microservices), χρησιμοποιούνται για εφαρμογές αρχιτεκτονικής μικρο-υπηρεσιών (microservices),
όπου κάθε ξεχωριστό κομμάτι (δηλ. μικρο-υπηρεσία) αντιπροσωπεύει ένα συστατικό όπου κάθε ξεχωριστό κομμάτι (δηλ. μικρο-υπηρεσία) αντιπροσωπεύει ένα συστατικό
της εφαρμογής που παίρνει την μορφή δοχείου. Με αυτόν τον τρόπο, είναι της εφαρμογής που παίρνει την μορφή ενός δοχείου. Με αυτόν τον τρόπο, είναι
ευκολότερη η κλιμάκωση μιας εφαρμογής απ' ότι θα ήταν με μια μονολιθική ευκολότερη η κλιμάκωση μιας εφαρμογής απ' ότι θα ήταν με μια μονολιθική
αρχιτεκτονική. Αυτό συμβαίνει διότι μπορεί να κλιμακώνεται μόνο το μέρος ή τα αρχιτεκτονική. Αυτό συμβαίνει διότι μπορεί να κλιμακώνεται μόνο το μέρος ή τα
μέρη της που έχουν αύξηση του φόρτου εργασίας τους, μέσω της χρήσης μέρη της που έχουν αύξηση του φόρτου εργασίας τους, μέσω της χρήσης
@@ -272,15 +224,18 @@ MySQL και το διακομιστή ιστού Nginx. Με αυτό τον τ
στιγμιότυπα (δηλ. μεγάλο αριθμό δοχείων) ανά πάσα χρονική στιγμή, απαιτείται η στιγμιότυπα (δηλ. μεγάλο αριθμό δοχείων) ανά πάσα χρονική στιγμή, απαιτείται η
χρήση μιας πλατφόρμας ενορχήστρωσης δοχείων για την αυτοματοποίηση της χρήση μιας πλατφόρμας ενορχήστρωσης δοχείων για την αυτοματοποίηση της
εγκατάστασης, εκτέλεσης και κλιμάκωσης της εφαρμογής κατά μήκος πολλαπλών πόρων εγκατάστασης, εκτέλεσης και κλιμάκωσης της εφαρμογής κατά μήκος πολλαπλών πόρων
(δηλ. εικονικών ή φυσικών μηχανών) όπως είναι το Kubernetes ή το Docker Swarm. (δηλ. εικονικών ή φυσικών μηχανών), όπως είναι το Kubernetes ή το Docker Swarm.
Από την άλλη, αν είναι επιθυμητή η ενορχήστρωση των δοχείων μιας εφαρμογής σε
έναν πόρο (φυσικό ή εικονικό μηχάνημα), τότε είναι δυνατή η χρήση εργαλείων
όπως το Docker Compose.
Το μόνο μειονέκτημα της τεχνολογίας των δοχείων, το οποίο δεν επηρεάζει κατά Το μόνο μειονέκτημα της τεχνολογίας των δοχείων, το οποίο δεν επηρεάζει κατά
πολύ τη χρήση τους, είναι το γεγονός ότι δοχεία που δημιουργήθηκαν για να πολύ τη χρήση τους, είναι το γεγονός ότι δοχεία που δημιουργήθηκαν για να
εκτελούν προγράμματα που απαιτούν την ύπαρξη του λειτουργικού συστήματος εκτελούν προγράμματα που απαιτούν την ύπαρξη του λειτουργικού συστήματος
Windows δε μπορούν να εκτελεστούν σε ένα περιβάλλον με τον πυρήνα του Linux και Windows δε μπορούν να εκτελεστούν σε ένα περιβάλλον με τον πυρήνα του Linux και
το ίδιο ισχύει και αντιστρόφως \footfullcite{containerOSlimitations}. το ίδιο ισχύει και αντιστρόφως \cite{containerOSlimitations}.
Εν γένει τα βασικότερα πλεονεκτήματα των δοχείων σε σχέση με τις εικονικές Εν γένει, τα βασικότερα πλεονεκτήματα των δοχείων σε σχέση με τις εικονικές
μηχανές είναι ο διαμοιρασμός του πυρήνα του λειτουργικού συστήματος φιλοξενίας μηχανές είναι ο διαμοιρασμός του πυρήνα του λειτουργικού συστήματος φιλοξενίας
και η μεταφερσιμότητα τους. Το γεγονός ότι μοιράζονται τον ίδιο πυρήνα έχει ως και η μεταφερσιμότητα τους. Το γεγονός ότι μοιράζονται τον ίδιο πυρήνα έχει ως
αποτέλεσμα να μην χρειάζεται να απονεμηθούν πόροι για εικονικοποίηση μηχανών με αποτέλεσμα να μην χρειάζεται να απονεμηθούν πόροι για εικονικοποίηση μηχανών με
@@ -297,20 +252,19 @@ Docker) όπου μάλιστα η ταχύτητα δημιουργίας το
και Container (δοχείο) αν και είναι διαφορετικοί. Παρ' όλα αυτά, η ιδέα της και Container (δοχείο) αν και είναι διαφορετικοί. Παρ' όλα αυτά, η ιδέα της
δημιουργίας απομονωμένων περιβαλλόντων εκτέλεσης λογισμικού υπήρχε προτού βγει δημιουργίας απομονωμένων περιβαλλόντων εκτέλεσης λογισμικού υπήρχε προτού βγει
το Docker στην αγορά. Ιστορικά, οι πρώτες τεχνολογίες περί δοχείων έκαναν την το Docker στην αγορά. Ιστορικά, οι πρώτες τεχνολογίες περί δοχείων έκαναν την
είσοδο τους από το 1979, όταν εισήχθη το chroot \footfullcite{chrootCommand} είσοδο τους από το 1979, όταν εισήχθη το chroot \cite{chrootCommand} στην
στην έβδομη έκδοση του Unix \footfullcite{containerHistory}. Πρόκειται για μια έβδομη έκδοση του Unix \cite{containerHistory}. Πρόκειται για μια εντολή που
εντολή που περιορίζει την πρόσβαση αρχείων που διαθέτει μια εφαρμογή, σε ένα περιορίζει την πρόσβαση αρχείων που διαθέτει μια εφαρμογή, σε ένα συγκεκριμένο
συγκεκριμένο φάκελο ο οποίος ορίζεται ως ο καινούριος διαχειριστικός (root). Ο φάκελο, ο οποίος ορίζεται ως ο καινούριος αρχικός (root). Ο κύριος σκοπός του
κύριος σκοπός του chroot ήταν η ενίσχυση της ασφάλειας ούτως ώστε στην chroot ήταν η ενίσχυση της ασφάλειας ούτως ώστε στην περίπτωση εκμετάλλευσης
περίπτωση εκμετάλλευσης μιας εσωτερικής ευπάθειας της εφαρμογής, να παραμένουν μιας εσωτερικής ευπάθειας της εφαρμογής, να παραμένουν ανεπηρέαστα τα μέρη του
ανεπηρέαστα τα μέρη του συστήματος εκτός του φακέλου στον οποίο είχε πρόσβαση. συστήματος εκτός του φακέλου στον οποίο είχε πρόσβαση. Εκείνη την εποχή αυτό
Εκείνη την εποχή αυτό ήταν αρκετό, αλλά οι απαιτήσεις ασφαλείας με τον καιρό ήταν αρκετό, αλλά οι απαιτήσεις ασφαλείας με τον καιρό αυξάνονταν και υπήρχε η
αυξάνονταν και υπήρχε η ανάγκη διαφορετικών μεθόδων απομόνωσης μιας και από ανάγκη διαφορετικών μεθόδων απομόνωσης μιας και από κατασκευής του, το chroot
κατασκευής του, το chroot δεν περιόριζε έναν χρήστη ή μια διεργασία με δεν περιόριζε έναν χρήστη ή μια διεργασία με διαχειριστικά δικαιώματα
διαχειριστικά δικαιώματα \footfullcite{chrootRestrictions}. Μερικά χρόνια \cite{chrootRestrictions}. Μερικά χρόνια αργότερα, το 2004 δημιουργήθηκαν και
αργότερα, το 2004 δημιουργήθηκαν και ενσωματώθηκαν στον πυρήνα του Linux οι ενσωματώθηκαν στον πυρήνα του Linux οι ομάδες ελέγχου με την βοήθεια των οποίων
ομάδες ελέγχου με την βοήθεια των οποίων ήταν πλέον δυνατή η απομόνωση πόρων ήταν πλέον δυνατή η απομόνωση πόρων του συστήματος σε ένα υποσύνολο διεργασιών.
του συστήματος σε ένα υποσύνολο διεργασιών.
Αυτές οι τεχνολογίες σήμαναν της έναρξη της ιδέας της δοχειοποίησης και έτσι το Αυτές οι τεχνολογίες σήμαναν της έναρξη της ιδέας της δοχειοποίησης και έτσι το
2008 ήρθε στο προσκήνιο το LXC (Linux Container Technology) \footfullcite{LXC}. 2008 ήρθε στο προσκήνιο το LXC (Linux Container Technology) \footfullcite{LXC}.
@@ -320,58 +274,57 @@ Docker) όπου μάλιστα η ταχύτητα δημιουργίας το
εικονικοποίηση ενός στιγμιότυπου Linux σε μορφή δοχείου και παρείχε αρκετές εικονικοποίηση ενός στιγμιότυπου Linux σε μορφή δοχείου και παρείχε αρκετές
λειτουργίες όπως η δημιουργία, η εκκίνηση και η διαγραφή LXC δοχείων. Παρ' όλα λειτουργίες όπως η δημιουργία, η εκκίνηση και η διαγραφή LXC δοχείων. Παρ' όλα
αυτά, επικεντρωνόταν στην δοχειοποίηση λειτουργικών συστημάτων και όχι αυτά, επικεντρωνόταν στην δοχειοποίηση λειτουργικών συστημάτων και όχι
εφαρμογών \footfullcite{LXCvsDocker}, καθιστώντας δύσκολη και περίπλοκη την εφαρμογών \cite{LXCvsDocker}, καθιστώντας δύσκολη και περίπλοκη την χρήση του
χρήση του όταν η κύρια ανάγκη ήταν η απομόνωση εφαρμογών. όταν η κύρια ανάγκη ήταν η απομόνωση εφαρμογών.
Ενώ λοιπόν προϋπήρχαν εργαλεία διαχείρισης δοχείων τα οποία χρησιμοποιούνται Ενώ λοιπόν προϋπήρχαν εργαλεία διαχείρισης δοχείων, τα οποία χρησιμοποιούνται
ακόμα και στις μέρες μας, λόγω του συνδυασμού της δυσκολίας στην χρήση τους και ακόμα και στις μέρες μας, λόγω του συνδυασμού της δυσκολίας στην χρήση τους και
του εξειδικευμένου σκοπού ύπαρξής τους δεν είχαν υιοθετηθεί αρκετά. Όλα τα του εξειδικευμένου σκοπού ύπαρξής τους δεν είχαν υιοθετηθεί αρκετά. Όλα τα
παραπάνω οδήγησαν στην δημιουργία του Docker το 2013, με την έλευση του οποίου παραπάνω οδήγησαν στην δημιουργία του Docker το 2013, με την έλευση του οποίου
η τεχνολογία των δοχείων εκτοξεύτηκε. Το Docker είναι ένα σύνολο προϊόντων η τεχνολογία των δοχείων εκτοξεύτηκε. Το Docker είναι ένα σύνολο προϊόντων PaaS
PaaS, παρέχοντας μια πλατφόρμα με μηχανισμούς για συναρμολόγηση, θέση σε (Platform-as-a-Service) (Πλατφόρμα ως Υπηρεσία), παρέχοντας μια πλατφόρμα με
λειτουργία, εκτέλεση, ενημέρωση και διαχείριση προγραμμάτων σε μορφή δοχείων. μηχανισμούς για συναρμολόγηση, θέση σε λειτουργία, εκτέλεση, ενημέρωση και
Σε αντίθεση με το LXC, αποτελεί μια μηχανή δοχείων υψηλού επιπέδου με κύριο διαχείριση προγραμμάτων σε μορφή δοχείων. Σε αντίθεση με το LXC, αποτελεί μια
στόχο την δοχειοποίηση εφαρμογών. Εκτός από τον διαχωρισμό ανάμεσα στον πηγαίο μηχανή δοχείων υψηλού επιπέδου με κύριο στόχο την δοχειοποίηση εφαρμογών. Εκτός
κώδικα, τις βιβλιοθήκες και εξαρτήσεις ενός λογισμικού από το κύριο σύστημα από τον διαχωρισμό ανάμεσα στον πηγαίο κώδικα, τις βιβλιοθήκες και εξαρτήσεις
(φιλοξενίας) παρέχει και δυνατότητες επικοινωνίας με αποθετήρια εικόνων δοχείωv ενός λογισμικού από το κύριο σύστημα (φιλοξενίας), παρέχει και δυνατότητες
όπως είναι το Docker Hub \footfullcite{dockerhub}, το επίσημο αποθετήριο του επικοινωνίας με αποθετήρια εικόνων δοχείωv, όπως είναι το Docker Hub
Docker, το Quay \footfullcite{quay}, ένα εναλλακτικό αποθετήριο της Red Hat ή \footfullcite{dockerhub}, το επίσημο αποθετήριο του Docker, το Quay
οποιοδήποτε άλλο αποθετήριο συμβατό με τις προδιαγραφές που έχει ορίσει η OCI \footfullcite{quay}, ένα εναλλακτικό αποθετήριο της Red Hat ή οποιοδήποτε άλλο
(Open Container Initiative) \footfullcite{oci}. Μέσω τέτοιων υπηρεσιών, οι αποθετήριο συμβατό με τις προδιαγραφές που έχει ορίσει η OCI (Open Container
χρήστες έχουν πρόσβαση και διαμοιράζονται χιλιάδες εικόνες δοχείων που τους Initiative) \footfullcite{oci}. Μέσω τέτοιων υπηρεσιών, οι χρήστες έχουν
επιτρέπουν να ολοκληρώσουν διάφορα μέρη μιας υπάρχουσας ή νέας εφαρμογής. πρόσβαση και διαμοιράζονται χιλιάδες εικόνες δοχείων που τους επιτρέπουν να
Επιπλέον, όντας μια μηχανή δοχείων υψηλού επιπέδου όλες οι λειτουργίες που θα ολοκληρώσουν διάφορα μέρη μιας υπάρχουσας ή νέας εφαρμογής. Επιπλέον, όντας μια
απαιτούσαν εξειδικευμένες γνώσεις προκειμένου να πραγματοποιηθούν, έχουν μηχανή δοχείων υψηλού επιπέδου όλες οι λειτουργίες που θα απαιτούσαν
συμπυκνωθεί σε απλές εντολές καθιστώντας έτσι εύκολη την χρήση του για εξειδικευμένες γνώσεις προκειμένου να πραγματοποιηθούν, έχουν συμπυκνωθεί σε
προγραμματιστές κάθε επιπέδου και απλοποιώντας κατά πολύ την διαδικασία απλές εντολές καθιστώντας έτσι εύκολη την χρήση του για προγραμματιστές κάθε
ανάπτυξης και παράδοσης κατανεμημένων εφαρμογών. Προσφέροντας μια φιλική προς επιπέδου και απλοποιώντας κατά πολύ την διαδικασία ανάπτυξης και παράδοσης
τον χρήστη διεπαφή, έλεγχο εκδόσεων (version control) για δοχεία κατανεμημένων εφαρμογών. Προσφέροντας μια φιλική προς τον χρήστη διεπαφή,
\footfullcite{LXCvsDocker2} και ένα οικοσύστημα γύρω από όλα αυτά, είναι έλεγχο εκδόσεων (version control) για δοχεία \cite{LXCvsDocker2} και ένα
εμφανής ο λόγος που κατάφερε να επισκιάσει το LXC. οικοσύστημα γύρω από όλα αυτά, είναι εμφανής ο λόγος που κατάφερε να επισκιάσει
το LXC.
\clearpage
\subsection{Χρήση δοχείων στην ανάπτυξη και παράδοση εφαρμογών} \label{containerUsage} \subsection{Χρήση δοχείων στην ανάπτυξη και παράδοση εφαρμογών} \label{containerUsage}
Οι μέθοδοι ανάπτυξης και παράδοσης εφαρμογών έχουν αλλάξει δραματικά τα Οι μέθοδοι ανάπτυξης και παράδοσης εφαρμογών έχουν αλλάξει δραματικά τα
τελευταία χρόνια. Από τις παραδοσιακές μεθόδους όπως το μοντέλο καταρράκτη τελευταία χρόνια. Από τις παραδοσιακές μεθόδους, όπως το μοντέλο καταρράκτη
(waterfall) \footfullcite{waterfall} βάσει του οποίου υπήρχε ένα συγκεκριμένο (waterfall) \cite{waterfall} βάσει του οποίου υπήρχε ένα συγκεκριμένο
αμετάβλητο σχέδιο που καλούνταν να ακολουθήσει μια ομάδα ανάπτυξης λογισμικού, αμετάβλητο σχέδιο που καλούνταν να ακολουθήσει μια ομάδα ανάπτυξης λογισμικού,
έχουμε φτάσει σε μια εποχή όπου οι απαιτήσεις της αγοράς αλλάζουν συνεχώς, με έχουμε φτάσει σε μια εποχή όπου οι απαιτήσεις της αγοράς αλλάζουν συνεχώς, με
αποτέλεσμα να υπάρχει ανάγκη για καινούριες μεθόδους που να ανταποκρίνονται αποτέλεσμα να υπάρχει ανάγκη για καινούριες μεθόδους που να ανταποκρίνονται
στις αλλαγές αυτές. Έτσι, έχουν δημιουργηθεί μεθοδολογίες όπως η Agile στις αλλαγές αυτές. Έτσι, έχουν δημιουργηθεί μεθοδολογίες όπως η Agile
\footfullcite{agile} κατά την οποία η ανάπτυξη και η παράδοση λογισμικού \cite{agile} κατά την οποία η ανάπτυξη και η παράδοση λογισμικού
πραγματοποιείται σε πολλές μικρές και ευμετάβλητες φάσεις προκειμένου να πραγματοποιείται σε πολλές μικρές και ευμετάβλητες φάσεις προκειμένου να
προσαρμόζεται στις αλλαγές που ενδέχεται να υπάρξουν στον αρχικό σχεδιασμό. Η προσαρμόζεται στις αλλαγές που ενδέχεται να υπάρξουν στον αρχικό σχεδιασμό. Η
μεθοδολογία αυτή συνεργάζεται με πρακτικές όπως το DevOps \footfullcite{devops} μεθοδολογία αυτή συνεργάζεται με πρακτικές όπως το DevOps \cite{devops} όπου οι
όπου οι ομάδες υπεύθυνες για την ανάπτυξη και λειτουργία μιας εφαρμογής ομάδες υπεύθυνες για την ανάπτυξη και λειτουργία μιας εφαρμογής επικοινωνούν
επικοινωνούν στενά με σκοπό να υπάρχει μια συνεχής ροή παραγωγής και παράδοσης στενά με σκοπό να υπάρχει μια συνεχής ροή παραγωγής και παράδοσης λογισμικού.
λογισμικού. Αυτό επιτυγχάνεται με μια υποκατηγορία του DevOps, το CI/CD Αυτό επιτυγχάνεται με μια υποκατηγορία του DevOps, το CI/CD (Continuous
(Continuous Integration/Continuous Delivery) \footfullcite{cicd}. Κατά το Integration/Continuous Delivery) (Συνεχής Ενοποίηση/Συνεχής Παράδοση)
μοντέλο αυτό, δημιουργούνται αυτοματοποιημένες διαδικασίες που εκτελούνται κατά \cite{cicd}. Κατά το μοντέλο αυτό, δημιουργούνται αυτοματοποιημένες διαδικασίες
την διάρκεια της ανάπτυξης και παράδοσης μιας εφαρμογής προκειμένου να που εκτελούνται κατά την διάρκεια της ανάπτυξης και παράδοσης μιας εφαρμογής
πραγματοποιείται έλεγχος της ποιότητας του κώδικα, να εντοπίζονται σφάλματα και προκειμένου να πραγματοποιείται έλεγχος της ποιότητας του κώδικα, να
να παράγονται εκτελέσιμα πακέτα. εντοπίζονται σφάλματα και να παράγονται εκτελέσιμα πακέτα.
Τα δοχεία αποτελούν ιδανική επιλογή για την εφαρμογή των παραπάνω μεθοδολογιών Τα δοχεία αποτελούν ιδανική επιλογή για την εφαρμογή των παραπάνω μεθοδολογιών
και πρακτικών καθώς επιτρέπουν το γρήγορο και αποτελεσματικό πακετάρισμα και πρακτικών καθώς επιτρέπουν το γρήγορο και αποτελεσματικό πακετάρισμα
@@ -384,19 +337,13 @@ Docker, το Quay \footfullcite{quay}, ένα εναλλακτικό αποθε
μειώνει ιδιαίτερα το κόστος λειτουργίας και αυξάνει την κλιμακωσιμότητα. μειώνει ιδιαίτερα το κόστος λειτουργίας και αυξάνει την κλιμακωσιμότητα.
Επιπλέον, λόγω της ταχείας διάθεσης και εκτέλεσής τους, συμβαδίζουν πλήρως με Επιπλέον, λόγω της ταχείας διάθεσης και εκτέλεσής τους, συμβαδίζουν πλήρως με
τον ρυθμό ανάπτυξης και παράδοσης που υποστηρίζουν οι παραπάνω μεθοδολογίες. τον ρυθμό ανάπτυξης και παράδοσης που υποστηρίζουν οι παραπάνω μεθοδολογίες.
Έχοντας αυτά υπόψιν, γίνεται εμφανής και ο λόγος που τα δοχεία είναι η Έχοντας αυτά υπόψιν, γίνεται εμφανής και ο λόγος που τα δοχεία είναι η
προτιμότερη επιλογή για την ανάπτυξη και παράδοση εφαρμογών που ακολουθούν την προτιμότερη επιλογή για την ανάπτυξη και παράδοση εφαρμογών που ακολουθούν την
αρχιτεκτονική μικρο-υπηρεσιών. Σε αυτήν την περίπτωση, η εφαρμογή αποτελείται αρχιτεκτονική μικρο-υπηρεσιών. Επιπρόσθετα, η ανεξαρτησία των δοχείων μεταξύ
από πολλά δοχεία όπου το κάθε ένα από αυτά είναι υπεύθυνο για μια συγκεκριμένη τους, καθιστά πιο σταθερή την εφαρμογή αφού σε περίπτωση που κάποιο από αυτά
λειτουργία της (μικρο-υπηρεσία). Τα δοχεία αυτά είναι ανεξάρτητα μεταξύ τους αποτύχει, η υπόλοιπη εφαρμογή θα συνεχίσει να λειτουργεί κανονικά και η
και κατά την ανάγκη κλιμάκωσης μιας συγκεκριμένης λειτουργίας της εφαρμογής ανακατασκευή του δοχείου που απέτυχε μπορεί να επιτευχθεί εύκολα και γρήγορα με
αυτό μπορεί να επιτευχθεί δίχως την περιττή κλιμάκωση όλων των υπολοίπων. μια απλή τροποποίηση της εκάστοτε εικόνας δοχείου.
Επιπρόσθετα, η ανεξαρτησία των δοχείων μεταξύ τους, καθιστά πιο σταθερή την
εφαρμογή αφού σε περίπτωση που κάποιο από αυτά αποτύχει, η υπόλοιπη εφαρμογή θα
συνεχίσει να λειτουργεί κανονικά και η ανακατασκευή του δοχείου που απέτυχε
μπορεί να επιτευχθεί εύκολα και γρήγορα με μια απλή τροποποίηση της εκάστοτε
εικόνας δοχείου.
\subsection{Χρήσεις του Docker στο νέφος} \label{dockerInCloudComputing} \subsection{Χρήσεις του Docker στο νέφος} \label{dockerInCloudComputing}
@@ -404,30 +351,27 @@ Docker, το Quay \footfullcite{quay}, ένα εναλλακτικό αποθε
τόσο για επιχειρήσεις που λειτουργούν αποκλειστικά με ενοικιαζόμενους τόσο για επιχειρήσεις που λειτουργούν αποκλειστικά με ενοικιαζόμενους
υπολογιστικούς πόρους όσο και για αυτές που επιλέγουν να λειτουργούν με έναν υπολογιστικούς πόρους όσο και για αυτές που επιλέγουν να λειτουργούν με έναν
συνδυασμό ενοικιαζόμενων και ιδιόκτητων φυσικών εγκαταστάσεων. Υπάρχουν δύο συνδυασμό ενοικιαζόμενων και ιδιόκτητων φυσικών εγκαταστάσεων. Υπάρχουν δύο
βασικές περιπτώσεις χρήσης του Docker στο νέφος. Συγκεκριμένα αυτές είναι, η βασικές περιπτώσεις χρήσης του Docker στο νέφος. Συγκεκριμένα αυτές είναι: η
εγκατάσταση δοχείων σε εικονικές μηχανές και η εγκατάσταση δοχείων έμμεσα σε εγκατάσταση δοχείων σε εικονικές μηχανές και η εγκατάσταση δοχείων έμμεσα σε
πόρους χωρίς την ανάγκη δημιουργίας εικονικής μηχανής. Η δεύτερη περίπτωση πόρους χωρίς την ανάγκη δημιουργίας εικονικής μηχανής. Η δεύτερη περίπτωση
χρήσης εντάσσεται στην κατηγορία υπηρεσιών CaaS (Container as a Service) όπως η χρήσης εντάσσεται στην κατηγορία υπηρεσιών CaaS \cite{caas} (Container as a
ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία Service), όπως η ECS (Elastic Container Service) της Amazon. Μια υπηρεσία όπου
\footfullcite{caas} των υπηρεσιών IaaS (Infrastructure as a Service) όπου ένας ένας πάροχος νέφους αντί να παρέχει πρόσβαση σε υπολογιστικούς πόρους γενικού
πάροχος νέφους αντί να παρέχει πρόσβαση σε υπολογιστικούς πόρους γενικού
σκοπού, παρέχει μια ευέλικτη υποδομή έτοιμη για την εκτέλεση δοχείων σκοπού, παρέχει μια ευέλικτη υποδομή έτοιμη για την εκτέλεση δοχείων
\footfullcite{caasVsIaas}. \cite{caasVsIaas}.
\clearpage Από τις δύο αυτές επιλογές, η πρώτη προσφέρει μια ευελιξία ως προς την
διαμόρφωση του περιβάλλοντος εκτέλεσης των δοχείων. Οι χρήστες έχουν την
Από τις δύο αυτές επιλογές, η πιο δημοφιλής είναι η πρώτη καθώς προσφέρει μια δυνατότητα να ακολουθήσουν ορισμένες ορθές πρακτικές ασφαλείας που μπορεί να
ευελιξία ως προς την διαμόρφωση του περιβάλλοντος εκτέλεσης των δοχείων. Οι έχουν θεσπιστεί στην εταιρεία τους, να εγκαταστήσουν επιπλέον λογισμικό
χρήστες έχουν την δυνατότητα να ακολουθήσουν ορισμένες ορθές πρακτικές παρακολούθησης και ελέγχου ποιότητας των δοχείων και να προσαρμόσουν το
ασφαλείας που μπορεί να έχουν θεσπιστεί στην εταιρεία τους, να εγκαταστήσουν περιβάλλον εκτέλεσης των δοχείων στις ανάγκες τους. Επιπλέον, η ύπαρξη μιας
επιπλέον λογισμικό παρακολούθησης και ελέγχου ποιότητας των δοχείων και να επιπλέον στρώσης απομόνωσης μεταξύ των δοχείων και του κύριου συστήματος
προσαρμόσουν το περιβάλλον εκτέλεσης των δοχείων στις ανάγκες τους. Επιπλέον, η αποτελεί ένα επιπρόσθετο εμπόδιο σε περιπτώσεις που ένα δοχείο βρεθεί σε
ύπαρξη μιας επιπλέον στρώσης απομόνωσης μεταξύ των δοχείων και του κύριου κατάσταση παραβίασης. Το Docker επιτρέποντας μέσω των δοχείων την περιορισμένη
συστήματος αποτελεί ένα επιπρόσθετο εμπόδιο σε περιπτώσεις που ένα δοχείο έκθεση των πόρων του συστήματος στον έξω κόσμο, καθιστά ευκολότερη την
βρεθεί σε κατάσταση παραβίασης. Το Docker επιτρέποντας μέσω των δοχείων την ανίχνευση και απομόνωση των προβλημάτων ασφαλείας, όπως επίσης και την
περιορισμένη έκθεση των πόρων του συστήματος στον έξω κόσμο, καθιστά ευκολότερη αποκατάστασή τους.
την ανίχνευση και απομόνωση των προβλημάτων ασφαλείας όπως επίσης και την
αποκατάσταση τους.
Από την άλλη, η δεύτερη περίπτωση χρήσης επιτρέπει στους χρήστες να Από την άλλη, η δεύτερη περίπτωση χρήσης επιτρέπει στους χρήστες να
επικεντρωθούν στην ανάπτυξη των δοχειοποιημένων εφαρμογών και να αφήσουν την επικεντρωθούν στην ανάπτυξη των δοχειοποιημένων εφαρμογών και να αφήσουν την
@@ -436,36 +380,34 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία
ή δεν είναι σε θέση να διαθέσουν τον απαιτούμενο χρόνο για αυτό. Η χρήση ή δεν είναι σε θέση να διαθέσουν τον απαιτούμενο χρόνο για αυτό. Η χρήση
υπηρεσιών CaaS αυτομάτως εξασφαλίζει στους χρήστες τα πλεονεκτήματα των υπηρεσιών CaaS αυτομάτως εξασφαλίζει στους χρήστες τα πλεονεκτήματα των
υπηρεσιών IaaS όπως η κλιμάκωση, η αντοχή σε αποτυχίες και η ευελιξία, ενώ υπηρεσιών IaaS όπως η κλιμάκωση, η αντοχή σε αποτυχίες και η ευελιξία, ενώ
ταυτόχρονα προσφέρει και τα πλεονεκτήματα των δοχείων όπως η ταχεία διάθεση και ταυτόχρονα προσφέρει και τα πλεονεκτήματα των δοχείων, όπως η ταχεία διάθεση
απόσυρσή τους αλλά και η υψηλή τους απόδοση κατά την εκτέλεση. Συγκεκριμένα, και απόσυρσή τους αλλά και η υψηλή τους απόδοση κατά την εκτέλεση.
μέσω των υπηρεσιών CaaS, οι χρήστες διαθέτουν δυνατότητες ενορχήστρωσης δοχείων Συγκεκριμένα, μέσω των υπηρεσιών CaaS, οι χρήστες διαθέτουν δυνατότητες
\footfullcite{howCaasWorks} χωρίς την ανάγκη χειροκίνητου στησίματος πλατφορμών ενορχήστρωσης δοχείων \cite{howCaasWorks} χωρίς την ανάγκη χειροκίνητου
όπως το Kubernetes \footfullcite{kubernetes} και το Docker Swarm στησίματος πλατφορμών αυτού του είδους όπως είναι το Kubernetes
\footfullcite{dockerSwarm}. \cite{kubernetes} και το Docker Swarm \cite{dockerSwarm}.
\clearpage
Σε κάθε περίπτωση, λόγω των πλεονεκτημάτων που παρέχει η χρήση δοχείων, είναι Σε κάθε περίπτωση, λόγω των πλεονεκτημάτων που παρέχει η χρήση δοχείων, είναι
πολύ συνήθης η θέση σε λειτουργία, εφαρμογών μέσω Docker σε περιβάλλοντα νέφους πολύ συνήθης η θέση σε λειτουργία, εφαρμογών μέσω Docker σε περιβάλλοντα νέφους
επειδή απομονώνει τις αναγκαίες βιβλιοθήκες και εξαρτήσεις τους από το υπόλοιπο επειδή απομονώνει τις αναγκαίες βιβλιοθήκες και εξαρτήσεις τους από το υπόλοιπο
σύστημα και επιτρέπει την αποδοτικότερη διαχείριση των εφαρμογών αυτών μέσω της σύστημα και επιτρέπει την αποδοτικότερη διαχείριση των εφαρμογών αυτών μέσω της
διεπαφής του με εντολές για εκκίνηση, επιτήρηση πόρων, παύση και άλλες διεπαφής του με εντολές για εκκίνηση, επιτήρηση πόρων, παύση και άλλες
λειτουργίες. Τα προβλήματα που μπορεί να προέκυπταν σε ένα περιβάλλον ανάπτυξης λειτουργίες. Τα προβλήματα που μπορεί να προέκυπταν σε ένα περιβάλλον
όπως μη συμβατές εκδόσεις προγραμμάτων και δυσκολία διαχείρισής τους ανάπτυξης, όπως μη συμβατές εκδόσεις προγραμμάτων και δυσκολία διαχείρισής
εξαλείφονται με την χρήση δοχείων αφήνοντας το Docker να εγκαθιδρύσει έναν τους, εξαλείφονται με την χρήση δοχείων αφήνοντας το Docker να εγκαθιδρύσει
συστημικό τρόπο διανομής και ελέγχου εφαρμογών. Επιπροσθέτως, καθιστά πολύ έναν συστημικό τρόπο διανομής και ελέγχου εφαρμογών. Επιπροσθέτως, καθιστά πολύ
εύκολη τη μεταφορά τους σε οποιοδήποτε μηχάνημα (εφόσον αυτό υποστηρίζει την εύκολη τη μεταφορά τους σε οποιοδήποτε μηχάνημα (εφόσον αυτό υποστηρίζει την
εκτέλεση της μηχανής δοχείων του Docker) ή ακόμα και νέφος, θέτοντας το εκτέλεση της μηχανής δοχείων του Docker) ή ακόμα και νέφος, θέτοντας το
κορυφαία επιλογή για επιχειρήσεις που επιλέγουν να ακολουθήσουν την στρατηγική κορυφαία επιλογή για επιχειρήσεις που επιλέγουν να ακολουθήσουν την στρατηγική
πολλαπλών νεφών (multi-cloud computing) κατά την κατασκευή εφαρμογών. Δηλαδή να πολλαπλών νεφών (multi-cloud computing) κατά την κατασκευή εφαρμογών. Δηλαδή να
μην βασίζονται αποκλειστικά σε έναν πάροχο νέφους για όλες τις λειτουργίες μιας μην βασίζονται αποκλειστικά σε έναν πάροχο νέφους για όλες τις λειτουργίες μιας
εφαρμογής \footfullcite{multiCloud} αλλά να εκμεταλλεύονται οφέλη από πολλούς εφαρμογής \cite{multiCloud} αλλά να εκμεταλλεύονται οφέλη από πολλούς παρόχους
παρόχους με βάση τις ανάγκες τους. με βάση τις ανάγκες τους.
\section{Ασφάλεια του συστήματος κατά τη χρήση του Docker} \label{dockerSecurity} \section{Ασφάλεια του συστήματος κατά τη χρήση του Docker} \label{dockerSecurity}
Μία από τις πιο σημαντικές προκλήσεις των επιχειρήσεων κατά την διάθεση Μία από τις πιο σημαντικές προκλήσεις των επιχειρήσεων κατά την διάθεση
υπηρεσιών είναι η επίτευξη και διατήρηση της ασφάλειας. Παραδοσιακά κατά την υπηρεσιών είναι η επίτευξη και διατήρηση της ασφάλειας. Παραδοσιακά, κατά την
επιλογή χρήσης τεχνολογιών εικονικοποίησης, ανάμεσα στις επιλογές επιλογή χρήσης τεχνολογιών εικονικοποίησης, ανάμεσα στις επιλογές
εικονικοποίησης υλικού και εικονικοποίησης ΛΣ είθισται να προτιμάται η δεύτερη. εικονικοποίησης υλικού και εικονικοποίησης ΛΣ είθισται να προτιμάται η δεύτερη.
Μια λογική απόφαση εάν αναλογιστεί κανείς τα πλεονεκτήματα που προσφέρει τόσο Μια λογική απόφαση εάν αναλογιστεί κανείς τα πλεονεκτήματα που προσφέρει τόσο
@@ -474,49 +416,48 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία
αυτά, η επιλογή αυτή είναι και λιγότερο ασφαλής στην περίπτωση που αφεθεί στις αυτά, η επιλογή αυτή είναι και λιγότερο ασφαλής στην περίπτωση που αφεθεί στις
αρχικές ρυθμίσεις. αρχικές ρυθμίσεις.
\clearpage
Για τον λόγο αυτό, εάν η μέγιστη δυνατή απόδοση δεν είναι μια από τις κύριες Για τον λόγο αυτό, εάν η μέγιστη δυνατή απόδοση δεν είναι μια από τις κύριες
προτεραιότητες της επιχείρησης, προκειμένου να αυξηθεί η ασφάλεια του προτεραιότητες της επιχείρησης, προκειμένου να αυξηθεί η ασφάλεια του
συστήματος διατηρώντας τα πλεονεκτήματα του Docker όσον αφορά την συστήματος διατηρώντας τα πλεονεκτήματα του Docker όσον αφορά την
μεταφερσιμότητα και την απαλλαγή από τις εξαρτήσεις του εκάστοτε προγράμματος μεταφερσιμότητα και την απαλλαγή από τις εξαρτήσεις του εκάστοτε προγράμματος
ακόμα και χωρίς την περαιτέρω διαμόρφωση των ρυθμίσεών του, η προτεινόμενη ακόμα και χωρίς την περαιτέρω διαμόρφωση των ρυθμίσεών του, η προτεινόμενη
χρήση είναι η εκτέλεσή του μέσω μιας εικονικής μηχανής. Η στρώση απομόνωσης χρήση είναι η εκτέλεσή του μέσω μιας εικονικής μηχανής. Σε περιπτώσεις
μέσω της εικονικοποίησης υλικού ανάμεσα στα προγράμματα και το μηχάνημα στο ιδιόκτητης υποδομής, η στρώση απομόνωσης μέσω της εικονικοποίησης υλικού
οποίο εκτελούνται αποτελεί ένα παραπάνω εμπόδιο που θα πρέπει να ξεπεράσει ένας ανάμεσα στα προγράμματα και το μηχάνημα στο οποίο εκτελούνται αποτελεί ένα
επιτιθέμενος για να προκαλέσει ζημιές στο κύριο σύστημα, αφού θα πρέπει πρώτα παραπάνω εμπόδιο που θα πρέπει να ξεπεράσει ένας επιτιθέμενος για να προκαλέσει
να περάσει από τον εικονικό πυρήνα και έπειτα από τον υπερ-επόπτη. Παράλληλα, ο ζημιές στο κύριο σύστημα, αφού θα πρέπει πρώτα να περάσει από τον εικονικό
συνδυασμός με την αρχιτεκτονική δοχείων παρέχει ένα επιπρόσθετο επίπεδο πυρήνα και έπειτα από τον υπερ-επόπτη. Παράλληλα, ο συνδυασμός με την
απομόνωσης εφόσον στην προκειμένη περίπτωση η άμεση επικοινωνία με τον πυρήνα αρχιτεκτονική δοχείων παρέχει ένα επιπρόσθετο επίπεδο απομόνωσης εφόσον στην
του συστήματος αφορά το φιλοξενούμενο ΛΣ και όχι το κύριο σύστημα. προκειμένη περίπτωση η άμεση επικοινωνία με τον πυρήνα του συστήματος αφορά το
φιλοξενούμενο ΛΣ και όχι το κύριο σύστημα.
Παρ' όλα αυτά, υπάρχουν περιπτώσεις όπου η απόδοση του συστήματος δεν δύναται Παρ' όλα αυτά, υπάρχουν περιπτώσεις όπου η απόδοση του συστήματος δεν δύναται
να θυσιαστεί για χάρη της ασφάλειας. Σε αυτές τις περιπτώσεις, επιβάλλεται η να θυσιαστεί για χάρη της ασφάλειας. Σε αυτές τις περιπτώσεις, επιβάλλεται η
τροποποίηση των ρυθμίσεων και του τρόπου λειτουργίας του Docker ώστε να τροποποίηση των ρυθμίσεων και του τρόπου λειτουργίας του Docker ώστε να
μπορέσει να επιτευχθεί μια ικανοποιητική ισορροπία μεταξύ της ασφάλειας και της μπορέσει να επιτευχθεί μια ικανοποιητική ισορροπία μεταξύ της ασφάλειας και της
απόδοσης του συστήματος. Με βάση μια έρευνα που πραγματοποιήθηκε από την IBM απόδοσης του συστήματος. Με βάση μια έρευνα που πραγματοποιήθηκε από την IBM
σχετικά με την ασφάλεια των δοχείων \footfullcite{containerSecurity}, βρέθηκε σχετικά με την ασφάλεια των δοχείων \cite{containerSecurity}, βρέθηκε πως ένα
πως ένα ορθώς ασφαλισμένο δοχείο μπορεί να παρέχει το ίδιο επίπεδο ασφάλειας με ορθώς ασφαλισμένο δοχείο μπορεί να παρέχει το ίδιο επίπεδο ασφάλειας με μια
μια εικονική μηχανή ή ακόμα και μεγαλύτερο. Συγκεκριμένα, στην έρευνα αυτή εικονική μηχανή ή ακόμα και μεγαλύτερο. Συγκεκριμένα, στην έρευνα αυτή
αναφέρεται πως προκειμένου να ποσοτικοποιηθεί η ασφάλεια των δοχείων θα πρέπει αναφέρεται πως προκειμένου να ποσοτικοποιηθεί η ασφάλεια των δοχείων θα πρέπει
να ληφθεί υπόψιν το ποσοστό των υποδομών που βρίσκεται υπό την ευθύνη του να ληφθεί υπόψιν το ποσοστό των υποδομών που βρίσκεται υπό την ευθύνη του
χρήστη και να θεωρηθεί δεδομένο πως οι πάροχοι νέφους θα ακολουθήσουν όλες τις χρήστη και να θεωρηθεί δεδομένο πως οι πάροχοι νέφους θα ακολουθήσουν όλες τις
ορθές πρακτικές ασφαλείας για να προστατεύσουν το κομμάτι των υποδομών που τους ορθές πρακτικές ασφαλείας για να προστατεύσουν το κομμάτι των υποδομών που τους
αντιστοιχεί. Σε αυτήν την περίπτωση, εάν ο χρήστης χρησιμοποιεί υπηρεσίες CaaS, αντιστοιχεί. Σε αυτήν την περίπτωση, εάν ο χρήστης χρησιμοποιεί υπηρεσίες CaaS,
τότε είναι υπεύθυνος για περίπου το ίδιο ποσοστό υποδομών με τον πάροχο και τότε είναι υπεύθυνος για την ασφάλιση πολύ μικρότερου ποσοστού επιφάνειας
επωφελείται άμεσα από τις προσπάθειες ασφάλισης του παρόχου για το ποσοστό του. επίθεσης συγκριτικά με τον πάροχο και επωφελείται άμεσα από τις προσπάθειες
Επομένως, συμπεραίνεται πως από την οπτική γωνία του τελικού χρήστη είναι πιο ασφάλισης του παρόχου για το ποσοστό του. Επομένως, συμπεραίνεται πως από την
ασφαλές να χρησιμοποιήσει τεχνολογίες εικονικοποίησης ΛΣ μέσω ενός παρόχου οπτική γωνία του τελικού χρήστη είναι πιο ασφαλές να χρησιμοποιήσει τεχνολογίες
νέφους για την παροχή των υπηρεσιών του εικονικοποίησης ΛΣ μέσω ενός παρόχου νέφους για την παροχή των υπηρεσιών του
\footfullcite{containerSecurityExplained}. \cite{containerSecurityExplained}.
\subsection{Πλεονεκτήματα ασφαλείας με τη χρήση του Docker} \label{dockerSecurityAdvatnages} \subsection{Πλεονεκτήματα ασφαλείας με τη χρήση του Docker} \label{dockerSecurityAdvatnages}
Με τη χρήση της αρχιτεκτονικής δοχείων και ειδικότερα του Docker, έρχονται Με τη χρήση της αρχιτεκτονικής δοχείων και ειδικότερα του Docker, έρχονται
αρκετά εγγενή οφέλη ασφαλείας \footfullcite{dockerInherentSecurity}. Ένα βασικό αρκετά εγγενή οφέλη ασφαλείας \cite{dockerInherentSecurity}. Ένα βασικό όφελος
όφελος αποτελεί η διαφάνεια. Λόγω της φύσης τους, τα δοχεία επιτρέπουν την αποτελεί η διαφάνεια. Λόγω της φύσης τους, τα δοχεία επιτρέπουν την ακριβή
ακριβή κατανόηση του κώδικα που εκτελείται μέσα σε αυτά, σε αντίθεση με την κατανόηση του κώδικα που εκτελείται μέσα σε αυτά, σε αντίθεση με την περίπτωση
περίπτωση χρήσης αποκλειστικά εικονικών μηχανών. Επιπρόσθετα, κατά την εμφάνιση χρήσης αποκλειστικά εικονικών μηχανών. Επιπρόσθετα, κατά την εμφάνιση
προβλημάτων σε μία υπηρεσία με αρχιτεκτονική μικρο-υπηρεσιών που κάνει χρήση προβλημάτων σε μία υπηρεσία με αρχιτεκτονική μικρο-υπηρεσιών που κάνει χρήση
δοχείων, είναι διακριτή η διευκόλυνση στον εντοπισμό της πηγής τους. δοχείων, είναι διακριτή η διευκόλυνση στον εντοπισμό της πηγής τους.
@@ -540,27 +481,26 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία
θα μπορούσαν να επιφέρουν τυχόν ενημερώσεις των εξαρτήσεων της εφαρμογής χωρίς θα μπορούσαν να επιφέρουν τυχόν ενημερώσεις των εξαρτήσεων της εφαρμογής χωρίς
την ταυτόχρονη ενημέρωση της εφαρμογής της ίδιας. την ταυτόχρονη ενημέρωση της εφαρμογής της ίδιας.
\clearpage
\subsection{Μειονεκτήματα ασφαλείας με τη χρήση του Docker} \label{dockerSecurityDisadvantages} \subsection{Μειονεκτήματα ασφαλείας με τη χρήση του Docker} \label{dockerSecurityDisadvantages}
Παρ' όλα τα προαναφερόμενα πλεονεκτήματα του Docker όπως η δυνατότητα απαλλαγής Παρ' όλα τα προαναφερόμενα πλεονεκτήματα του Docker, όπως η δυνατότητα
από εξαρτήσεις του εκάστοτε συστήματος και η ευελιξία διαχείρισης των δοχείων απαλλαγής από εξαρτήσεις του εκάστοτε συστήματος και η ευελιξία διαχείρισης των
του, αυτό υπόκειται σε αρκετές ατασθαλίες σε σχέση με την ασφάλεια. Οι πιο δοχείων του, αυτό εμφανίζει αρκετές τρωτότητες σε σχέση με την ασφάλεια. Οι πιο
αξιοσημείωτες από αυτές είναι η ανάγκη εκτέλεσης του Docker με διαχειριστικά αξιοσημείωτες από αυτές είναι η ανάγκη εκτέλεσης του Docker με διαχειριστικά
δικαιώματα και η αρχικά ελαστικότερη απ' ό,τι χρειάζεται απομόνωσή του από τον δικαιώματα και η αρχικά ελαστικότερη απ' ό,τι χρειάζεται απομόνωσή του από τον
πυρήνα του συστήματος. Ο άμεσος αντίκτυπος των παραπάνω είναι πως τα δοχεία πυρήνα του συστήματος. Ο άμεσος αντίκτυπος των παραπάνω είναι πως τα δοχεία
είναι πιο ευάλωτα από άλλες τεχνολογίες σε επιθέσεις τύπου άρνησης υπηρεσιών είναι πιο ευάλωτα από άλλες τεχνολογίες σε επιθέσεις τύπου άρνησης υπηρεσιών
και σε επιθέσεις που εκμεταλλεύονται ευπάθειες του πυρήνα με σκοπό να ξεφύγουν και σε επιθέσεις που εκμεταλλεύονται ευπάθειες του πυρήνα με σκοπό να ξεφύγουν
από το δοχείο και να αποκτήσουν πρόσβαση στο κύριο σύστημα (Container Escape από το δοχείο και να αποκτήσουν πρόσβαση στο κύριο σύστημα μέσω αυτού
\footfullcite{containerEscapeTechniques}). (Container Escape \cite{containerEscapeTechniques}).
Το γεγονός που αυξάνει τον κίνδυνο κατά την διάρκεια μιας επίθεσης τύπου Το γεγονός που αυξάνει τον κίνδυνο κατά την διάρκεια μιας επίθεσης τύπου
άρνησης υπηρεσιών είναι πως σε αντίθεση με μια εικονική μηχανή όπου επιλέγεται άρνησης υπηρεσιών είναι πως σε αντίθεση με μια εικονική μηχανή, όπου επιλέγεται
το εύρος πρόσβασης στους πόρους του συστήματος κατά τη δημιουργία της, η αρχική το εύρος πρόσβασης στους πόρους του συστήματος κατά τη δημιουργία της, η αρχική
ρύθμιση του Docker επιτρέπει στα δοχεία να χρησιμοποιήσουν το ίδιο ποσοστό ρύθμιση του Docker επιτρέπει στα δοχεία να χρησιμοποιήσουν το ίδιο ποσοστό
πόρων με το κύριο σύστημα, δηλαδή δεν υπάρχουν περιορισμοί. Επομένως, εάν ένα πόρων με το κύριο σύστημα, δηλαδή δεν υπάρχουν περιορισμοί. Επομένως,
δοχείο βρεθεί υπό τον έλεγχο ενός επιτιθέμενου, αυτό μπορεί δυνητικά να ανεξαρτήτως του αν ένα δοχείο βρεθεί υπό τον έλεγχο ενός επιτιθέμενου ή αυτός
απλά κατευθύνει πολλά αιτήματα προς αυτό εξωτερικά, αυτό μπορεί δυνητικά να
εμποδίσει την εκτέλεση άλλων δοχείων ή ακόμα και την εκτέλεση άλλων εφαρμογών εμποδίσει την εκτέλεση άλλων δοχείων ή ακόμα και την εκτέλεση άλλων εφαρμογών
που εκτελούνται στο σύστημα. που εκτελούνται στο σύστημα.
@@ -570,12 +510,9 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία
απευθείας επικοινωνίας τους με τον πυρήνα του συστήματος, τα δοχεία είναι άμεσα απευθείας επικοινωνίας τους με τον πυρήνα του συστήματος, τα δοχεία είναι άμεσα
ευεπηρέαστα από ευπάθειες του πυρήνα. Συνεπώς, ένας επιτιθέμενος που στοχεύει ευεπηρέαστα από ευπάθειες του πυρήνα. Συνεπώς, ένας επιτιθέμενος που στοχεύει
ένα δοχείο μπορεί να εκμεταλλευτεί μια ευπάθεια του πυρήνα προκειμένου να ένα δοχείο μπορεί να εκμεταλλευτεί μια ευπάθεια του πυρήνα προκειμένου να
αποκτήσει πρόσβαση στο κύριο σύστημα και εφόσον η εκτέλεση του Docker γίνεται αποκτήσει πρόσβαση στο κύριο σύστημα - εφόσον η εκτέλεση του Docker γίνεται με
με διαχειριστικά δικαιώματα, μετά από μια επιτυχημένη επίθεση Container Escape διαχειριστικά δικαιώματα, μετά από μια επιτυχημένη επίθεση Container Escape θα
θα έχει διαχειριστικά δικαιώματα και ο ίδιος έχει διαχειριστικά δικαιώματα και ο ίδιος \cite{containerEscapeRepercussions}.
\footfullcite{containerEscapeRepercussions}.
\clearpage
\subsection{Ξεπερνώντας τα μειονεκτήματα ασφαλείας του Docker} \label{overcomingDockerDisadvantages} \subsection{Ξεπερνώντας τα μειονεκτήματα ασφαλείας του Docker} \label{overcomingDockerDisadvantages}
@@ -585,54 +522,71 @@ AppArmor ή κανόνων SELinux προκειμένου να απομονωθ
σύστημα. Στην πραγματικότητα, αυτές οι πρακτικές λαμβάνουν υπόψιν τους κυρίως σύστημα. Στην πραγματικότητα, αυτές οι πρακτικές λαμβάνουν υπόψιν τους κυρίως
τα δοχεία και όχι τη μηχανή δοχείων καθ' αυτού. Γι' αυτό τον λόγο, πολλές φορές τα δοχεία και όχι τη μηχανή δοχείων καθ' αυτού. Γι' αυτό τον λόγο, πολλές φορές
πρέπει να ακολουθούνται και καλύτερες πρακτικές κατά τη λειτουργία/χρήση του πρέπει να ακολουθούνται και καλύτερες πρακτικές κατά τη λειτουργία/χρήση του
Docker, όπως η αποφυγή χρήσης του διαχειριστικού λογαριασμού (σε διεργασίες) Docker, όπως η σκλήρυνσή του, η αποφυγή χρήσης του διαχειριστικού λογαριασμού
όσον αφορά τα δοχεία και η αποφυγή λήψης δοχείων από μη έμπιστες πηγές. Υπάρχει (σε διεργασίες) όσον αφορά τα δοχεία και η αποφυγή λήψης δοχείων από μη
επομένως ανάγκη δημιουργίας ενός εργαλείου που αυτοματοποιημένα μπορεί να έμπιστες πηγές. Υπάρχει επομένως ανάγκη δημιουργίας ενός εργαλείου που
δημιουργεί ασφαλή εικονικοποιημένα περιβάλλοντα, καθώς και να εγκαθιστά σε αυτοματοποιημένα μπορεί να δημιουργεί ασφαλή εικονικοποιημένα περιβάλλοντα,
αυτά, με βάση τις προαναφερόμενες οδηγίες προστασίας του Docker και των δοχείων καθώς και να εγκαθιστά σε αυτά, με βάση τις προαναφερόμενες οδηγίες προστασίας
του, μια σκληρυμένη έκδοση του Docker. του Docker και των δοχείων του, μια σκληρυμένη έκδοση του Docker.
Με τη χρήση του εργαλείου SecDep που θα περιγράψουμε παρακάτω στο κεφάλαιο Με τη χρήση του εργαλείου SecDep που αναπτύχθηκε στα πλαίσια της παρούσας
διπλωματικής εργασίας, το οποίο θα περιγράψουμε παρακάτω στο Κεφάλαιο
\ref{installationANDShowcase}, θα επιτευχθεί η ασφάλιση του Docker και του \ref{installationANDShowcase}, θα επιτευχθεί η ασφάλιση του Docker και του
συστήματος με αυτοματοποιημένο τρόπο ακολουθώντας ορθές πρακτικές, συστήματος με αυτοματοποιημένο τρόπο ακολουθώντας ορθές πρακτικές,
χρησιμοποιώντας ένα ασφαλέστερο από το αρχικό Container Runtime και εκτελώντας χρησιμοποιώντας ένα ασφαλέστερο από το αρχικό Container Runtime και εκτελώντας
το Docker εξ ολοκλήρου χωρίς την ανάγκη διαχειριστικών δικαιωμάτων. Το εργαλείο το Docker εξ ολοκλήρου χωρίς την ανάγκη διαχειριστικών δικαιωμάτων. Το εργαλείο
αυτό επικοινωνεί με πολλούς παρόχους νέφους στέλνοντας τους παραμέτρους για τις αυτό εστιάζει στην χρήση εικονικοποιημένων περιβαλλόντων, μιας και παρέχουν
προδιαγραφές εικονικών μηχανών προκειμένου να μπορέσουν να δημιουργηθούν περισσότερα επίπεδα προς διείσδυση για έναν επιτιθέμενο, εμποδίζοντάς τον στην
αυτόματα, επιτρέποντας έτσι την δημιουργία πολλαπλών ασφαλών περιβαλλόντων ώστε επίτευξη του στόχου αυτού. Επικοινωνεί με πολλούς παρόχους νέφους στέλνοντάς
να μπορεί ένας χρήστης να εγκαθιστά εκεί τα δοχεία της εφαρμογής του. Η τους παραμέτρους για τις προδιαγραφές εικονικών μηχανών προκειμένου να
μπορέσουν να δημιουργηθούν αυτόματα. Με αυτόν τον τρόπο, επιτρέπει την
δημιουργία πολλαπλών ασφαλών περιβαλλόντων ώστε να μπορεί ένας χρήστης να
εγκαθιστά εκεί τα δοχεία της εφαρμογής του. Με την εφαρμογή των κατάλληλων
μέτρων και πρακτικών ασφαλείας σε κάθε επίπεδο, τα περιβάλλοντα αυτά
σκληρύνονται, μικραίνοντας με αυτό τον τρόπο την πιθανότητα διείσδυσης. Η
σκλήρυνση του ΛΣ επιτυγχάνεται με την εκτέλεση πολλών βημάτων στα οποία μεταξύ σκλήρυνση του ΛΣ επιτυγχάνεται με την εκτέλεση πολλών βημάτων στα οποία μεταξύ
άλλων περιλαμβάνεται η σκλήρυνση του SSH, ο εντοπισμός, η εγκατάσταση, η άλλων περιλαμβάνεται η σκλήρυνση του SSH, ο εντοπισμός, η εγκατάσταση, η
ρύθμιση και η ενεργοποίηση του κατάλληλου προγράμματος για ανάχωμα ασφαλείας ρύθμιση και η ενεργοποίηση των κατάλληλων για την εκάστοτε διανομή,
και για παροχή MAC (Mandatory Access Control) και η δημιουργία και ενεργοποίηση προγραμμάτων για ανάχωμα ασφαλείας και για παροχή MAC (Mandatory Access
περιοδικά εκτελέσιμων προγραμμάτων για την ενημέρωση του συστήματος και το Control) και η δημιουργία και ενεργοποίηση περιοδικά εκτελέσιμων προγραμμάτων
άνοιγμα/κλείσιμο θυρών προγραμμάτων. Η απεξάρτηση από τον διαχειριστικό για την ενημέρωση του συστήματος και το άνοιγμα/κλείσιμο θυρών προγραμμάτων. Η
λογαριασμό επιτυγχάνεται χάρη στη δουλειά του Akihiro Suda πάνω στο rootlesskit απεξάρτηση από τον διαχειριστικό λογαριασμό επιτυγχάνεται χάρη στη δουλειά του
\footfullcite{AkihiroSuda}, επιτρέποντας έτσι την χρήση ενός πλαστού Akihiro Suda πάνω στο rootlesskit \footfullcite{AkihiroSuda}, επιτρέποντας έτσι
διαχειριστικού λογαριασμού προκειμένου να μπορέσει η μηχανή δοχείων να την χρήση ενός πλαστού διαχειριστικού λογαριασμού προκειμένου να μπορέσει η
εκτελεστεί υπό την κυριότητα οποιουδήποτε χρήστη του συστήματος. Τέλος, η μηχανή δοχείων να εκτελεστεί υπό την κυριότητα οποιουδήποτε χρήστη του
αντικατάσταση του αρχικού Container Runtime με το αντίστοιχο του gVisor συστήματος. Τέλος, η αντικατάσταση του αρχικού Container Runtime με το
\footfullcite{gVisor}, εισάγει ένα πιο συμπαγές τείχος προστασίας απέναντι σε αντίστοιχο του gVisor \footfullcite{gVisor}, εισάγει ένα πιο συμπαγές τείχος
συνηθισμένες επιθέσεις κατά των δοχείων, καθιστώντας το σύστημα μας πιο ασφαλές προστασίας απέναντι σε συνηθισμένες επιθέσεις κατά των δοχείων, καθιστώντας το
συγκριτικά με τις αρχικές/προκαθορισμένες ρυθμίσεις. σύστημα μας πιο ασφαλές συγκριτικά με τις αρχικές/προκαθορισμένες ρυθμίσεις.
Η χρήση του εργαλείου έρχεται με πολλά πλεονεκτήματα για τον χρήστη. Κατ'
αρχήν, το εργαλείο είναι εύκολο στη χρήση και στην εγκατάσταση, καθώς παρέχει
πλούσια τεκμηρίωση και οδηγίες εγκατάστασης στο αποθετήριό του. Απαιτούνται
ελάχιστες γνώσεις στον τομέα των τεχνολογιών νέφους από τον χρήστη. Επιπλέον,
είναι ευέλικτο και επεκτάσιμο διότι αποτελείται από δύο εκτελέσιμα προγράμματα
τα οποία μπορεί κάθε χρήστης να τροποποιήσει και να προσθέσει τις δικές του
λειτουργίες. Τέλος, οι παράμετροι του είναι εύκολα κατανοητές και προσαρμόσιμες
στις ανάγκες του χρήστη. Επομένως, το εργαλείο αυτό αποτελεί ένα κατάλληλο μέσο
για την δημιουργία, διαχείριση και ασφάλιση περιβαλλόντων εφαρμογών που
εκτελούνται σε δοχεία.
\clearpage \clearpage
\section{Δομή Εργασίας} \label{structure} \section{Δομή Εργασίας} \label{structure}
Η υπόλοιπη δομή της αναφοράς είναι η εξής. Στο κεφάλαιο \ref{background} θα Η υπόλοιπη δομή της αναφοράς είναι η εξής. Στο Κεφάλαιο \ref{background}, θα
μελετήσουμε τον όρο νεφο-υπολογιστική, θα αναλύσουμε τις διάφορες τεχνολογίες αναλύσουμε τις διάφορες τεχνολογίες εικονικοποίησης και θα εμβαθύνουμε στην
εικονικοποίησης και θα εμβαθύνουμε στην τεχνολογία των δοχείων με επίκεντρο την τεχνολογία των δοχείων με επίκεντρο την ασφάλεια του Docker. Στο επόμενο
ασφάλεια του Docker. Στο επόμενο κεφάλαιο (δηλαδή το \ref{relevantWork}), θα κεφάλαιο (δηλαδή το \ref{relevantWork}), θα δούμε εργασίες σχετικές με την
δούμε εργασίες σχετικές με την παρούσα και θα πραγματοποιηθεί ανάλυση και παρούσα και θα πραγματοποιηθεί ανάλυση και σύγκριση αυτών με την προτεινόμενη
σύγκριση αυτών με την προτεινόμενη εργασία της διπλωματικής. Αμέσως μετά, στο εργασία της διπλωματικής. Αμέσως μετά, στο Κεφάλαιο \ref{projectDevelopment},
κεφάλαιο \ref{projectDevelopment}, αναφερόμαστε στην ανάπτυξη του προτεινόμενου αναφερόμαστε στην διαδικασία ανάπτυξης του προτεινόμενου εργαλείου και τα
εργαλείου και τα παράγωγά της (απαιτήσεις, σχεδιαστικά μοντέλα, κώδικα παράγωγά της (απαιτήσεις, σχεδιαστικά μοντέλα, κώδικας υλοποίησης κα.).
υλοποίησης κα.). Προχωρώντας στο κεφάλαιο \ref{installationANDShowcase}, θα Προχωρώντας στο Κεφάλαιο \ref{installationANDShowcase}, θα αναφερθούμε στις
αναφερθούμε στις οδηγίες εγκατάστασης και λειτουργίας του εργαλείου με βάση οδηγίες εγκατάστασης και λειτουργίας του εργαλείου με βάση στοχευμένα σενάρια
στοχευμένα σενάρια χρήσης. Έπειτα, στο κεφάλαιο \ref{experimentationANDresults} χρήσης. Έπειτα, στο Κεφάλαιο \ref{experimentationANDresults} αποτιμάται η
αποτιμάται η αποδοτικότητα του εργαλείου κατά την πραγματική χρήση του αποδοτικότητα του εργαλείου κατά την πραγματική χρήση του προκειμένου να
προκειμένου να εξετασθεί με πρακτικό τρόπο η ικανότητα εξασφάλισης των στόχων εξετασθεί με πρακτικό τρόπο η ικανότητα εξασφάλισης των στόχων του. Τέλος, στο
του. Τέλος, στο κεφάλαιο \ref{conclusions}, αναφέρονται δυνητικές επεκτάσεις Κεφάλαιο \ref{conclusions}, αναφέρονται δυνητικές επεκτάσεις και βελτιώσεις του
και βελτιώσεις του προτεινόμενου εργαλείου προκειμένου αυτό να μπορέσει να προτεινόμενου εργαλείου προκειμένου αυτό να μπορέσει να πάρει μια θέση στην
πάρει μια θέση στην αγορά. αγορά.

File diff suppressed because it is too large Load Diff

View File

@@ -41,11 +41,11 @@
\item \textbf{Ευκολία κατά την χρήση}: \item \textbf{Ευκολία κατά την χρήση}:
Το εργαλείο πρέπει να μπορεί να χρησιμοποιηθεί εύκολα από έναν χρήστη Το εργαλείο πρέπει να μπορεί να χρησιμοποιηθεί εύκολα από έναν χρήστη
που έχει χρησιμοποιήσει στο παρελθόν εργαλεία γραμμής εντολών. Οι που έχει χρησιμοποιήσει στο παρελθόν εργαλεία γραμμής εντολών. Οι
παράμετροί του πρέπει να ακολουθούν ένα μοτίβο που θα διευκολύνει την παράμετροί του πρέπει να ακολουθούν ένα μοτίβο που θα διευκολύνει την
κατανόηση της λειτουργίας τους και τον συνδυασμό τους για ένα επιθυμητό κατανόηση της λειτουργίας τους και τον συνδυασμό τους για ένα επιθυμητό
αποτέλεσμα. αποτέλεσμα.
\item \textbf{Υποστήριξη μεγάλων ονομάτων στον κλάδο}: \item \textbf{Υποστήριξη μεγάλων ονομάτων στον κλάδο}:
@@ -55,8 +55,8 @@
\item \textbf{Ευκολία στην επέκταση}: \item \textbf{Ευκολία στην επέκταση}:
Το εργαλείο πρέπει να είναι εύκολο στην επέκτασή του, ώστε να μπορεί να Το εργαλείο πρέπει να είναι εύκολο στην επέκτασή του, ώστε να μπορεί να
αυτοματοποιηθεί περισσότερο η διαδικασία δημιουργίας εικονικών μηχανών. αυτοματοποιηθεί περισσότερο η διαδικασία δημιουργίας εικονικών μηχανών.
\end{itemize} \end{itemize}
@@ -107,21 +107,21 @@
\item \textbf{Σύγκριση με Terraform}: \item \textbf{Σύγκριση με Terraform}:
Χρειάζεται την δημιουργία ενός αρχείου πριν την χρήση του και κάθε Χρειάζεται την δημιουργία ενός αρχείου πριν την χρήση του και κάθε
αλλαγή απαιτεί την τροποποίηση του αρχείου αυτού. Αυτό το καθιστά αλλαγή απαιτεί την τροποποίηση του αρχείου αυτού. Αυτό το καθιστά
λιγότερο ευέλικτο σε σχέση με άλλα εργαλεία. Είναι σχετικά εύκολο στην λιγότερο ευέλικτο σε σχέση με άλλα εργαλεία. Είναι σχετικά εύκολο στην
χρήση όπως τα υπόλοιπα και δύναται να χρησιμοποιήσει τα νέφη όλων των χρήση όπως τα υπόλοιπα και δύναται να χρησιμοποιήσει τα νέφη όλων των
μεγάλων παρόχων. Παρ' όλα αυτά δεν αποτελεί εργαλείο που μπορεί να μεγάλων παρόχων. Παρ' όλα αυτά δεν αποτελεί εργαλείο που μπορεί να
επεκταθεί εύκολα καθώς ο τρόπος λειτουργίας του το καθιστά αυτοτελές. επεκταθεί εύκολα καθώς ο τρόπος λειτουργίας του το καθιστά αυτοτελές.
\item \textbf{Σύγκριση με Libcloud CLI}: \item \textbf{Σύγκριση με Libcloud CLI}:
Το δεύτερο πιο πρόσφατο εργαλείο που κάνει χρήση της βιβλιοθήκης Το δεύτερο πιο πρόσφατο εργαλείο που κάνει χρήση της βιβλιοθήκης
libcloud μετά από αυτό που προτείνει η διπλωματική εργασία. Είναι libcloud μετά από αυτό που προτείνει η διπλωματική εργασία. Είναι
αρκετά ευέλικτο και εύκολο στην χρήση, παρ' όλα αυτά πλέον υποστηρίζει αρκετά ευέλικτο και εύκολο στην χρήση, παρ' όλα αυτά πλέον υποστηρίζει
μονάχα έναν πάροχο νέφους, ο οποίος δεν αποτελεί δημοφιλή επιλογή μονάχα έναν πάροχο νέφους, ο οποίος δεν αποτελεί δημοφιλή επιλογή
γενικότερα. Θα μπορούσε να επεκταθεί η λειτουργικότητά του αλλά έχει να γενικότερα. Θα μπορούσε να επεκταθεί η λειτουργικότητά του αλλά έχει να
ανανεωθεί από το 2018. ανανεωθεί από το 2018.
\end{itemize} \end{itemize}
@@ -172,20 +172,20 @@
\item \textbf{JShielder} \footfullcite{jshielder}: \item \textbf{JShielder} \footfullcite{jshielder}:
Το JShielder είναι ένα εργαλείο ανοιχτού κώδικα που αναπτύχθηκε από τον Το JShielder είναι ένα εργαλείο ανοιχτού κώδικα που αναπτύχθηκε από τον
Jason Soto με σκοπό την αυτοματοποίηση σκλήρυνσης λειτουργικών Jason Soto με σκοπό την αυτοματοποίηση σκλήρυνσης λειτουργικών
συστημάτων Linux. Ο πηγαίος κώδικάς του βρίσκεται στο GitHub και ο συστημάτων Linux. Ο πηγαίος κώδικάς του βρίσκεται στο GitHub και ο
τρόπος λειτουργίας του είναι η εκτέλεσή του ως χρήστης με διαχειριστικά τρόπος λειτουργίας του είναι η εκτέλεσή του ως χρήστης με διαχειριστικά
δικαιώματα στο σύστημα. δικαιώματα στο σύστημα.
\clearpage \clearpage
\item \textbf{nixarmor} \footfullcite{nixarmor}: \item \textbf{nixarmor} \footfullcite{nixarmor}:
Ένα εργαλείο ανοιχτού κώδικα που στεγάζεται στο GitHub και αναπτύχθηκε Ένα εργαλείο ανοιχτού κώδικα που στεγάζεται στο GitHub και αναπτύχθηκε
από τον Emir Ozer. Περιέχει διαφορετικά εκτελέσιμα αρχεία για την από τον Emir Ozer. Περιέχει διαφορετικά εκτελέσιμα αρχεία για την
σκλήρυνση διάφορων διανομών Linux, τα οποία μπορούν να εκτελεστούν ως σκλήρυνση διάφορων διανομών Linux, τα οποία μπορούν να εκτελεστούν ως
αυτόνομα προγράμματα από τον χρήστη. αυτόνομα προγράμματα από τον χρήστη.
\end{itemize} \end{itemize}
@@ -198,26 +198,26 @@
\item \textbf{Σύγκριση με JShielder}: \item \textbf{Σύγκριση με JShielder}:
Το JShielder παρέχει ένα ικανοποιητικό εύρος σκλήρυνσης του συστήματος Το JShielder παρέχει ένα ικανοποιητικό εύρος σκλήρυνσης του συστήματος
και η ευκολία στην χρήση του το καθιστά ένα εργαλείο που μπορεί να και η ευκολία στην χρήση του το καθιστά ένα εργαλείο που μπορεί να
χρησιμοποιηθεί από έναν χρήστη με μικρή εμπειρία στον κλάδο. Παρ' όλα χρησιμοποιηθεί από έναν χρήστη με μικρή εμπειρία στον κλάδο. Παρ' όλα
αυτά, δεν υποστηρίζει πολλές διανομές και οι εκδόσεις των διανομών που αυτά, δεν υποστηρίζει πολλές διανομές και οι εκδόσεις των διανομών που
υποστηρίζονται μέσω αυτού είναι αρκετό καιρό ξεπερασμένες. Θα μπορούσε υποστηρίζονται μέσω αυτού είναι αρκετό καιρό ξεπερασμένες. Θα μπορούσε
να βελτιωθεί με μια ανανέωση του πηγαίου του κώδικα αλλά η ανάπτυξή του να βελτιωθεί με μια ανανέωση του πηγαίου του κώδικα αλλά η ανάπτυξή του
φαίνεται να έχει σταματήσει το 2019. φαίνεται να έχει σταματήσει το 2019.
\item \textbf{Σύγκριση με το nixarmor}: \item \textbf{Σύγκριση με το nixarmor}:
Σε αντίθεση με το JShielder, το nixarmor για να χρησιμοποιηθεί με τον Σε αντίθεση με το JShielder, το nixarmor για να χρησιμοποιηθεί με τον
ίδιο τρόπο που χρησιμοποιούνται τα υπόλοιπα εργαλεία θα πρέπει να ίδιο τρόπο που χρησιμοποιούνται τα υπόλοιπα εργαλεία θα πρέπει να
επεκταθεί με την προσθήκη κώδικα που να του επιτρέπει να ξεχωρίζει ποιο επεκταθεί με την προσθήκη κώδικα που να του επιτρέπει να ξεχωρίζει ποιο
είναι το κατάλληλο εκτελέσιμο για την κάθε διανομή. Στην αντίθετη είναι το κατάλληλο εκτελέσιμο για την κάθε διανομή. Στην αντίθετη
περίπτωση, πάλι η χρήση του είναι εύκολη διότι ο χρήστης μπορεί να περίπτωση, πάλι η χρήση του είναι εύκολη διότι ο χρήστης μπορεί να
επιλέξει και να εκτελέσει χειροκίνητα ένα από τα εκτελέσιμα αρχεία που επιλέξει και να εκτελέσει χειροκίνητα ένα από τα εκτελέσιμα αρχεία που
περιέχει. Η σκλήρυνση που παρέχει καλύπτει πολλούς τομείς μιας διανομής περιέχει. Η σκλήρυνση που παρέχει καλύπτει πολλούς τομείς μιας διανομής
και μπορεί εύκολα να προστεθούν επιπλέον συναρτήσεις στον κώδικά του. και μπορεί εύκολα να προστεθούν επιπλέον συναρτήσεις στον κώδικά του.
Παρ' όλα αυτά, η ανάπτυξή του έχει παύσει από το 2015 και οι Παρ' όλα αυτά, η ανάπτυξή του έχει παύσει από το 2015 και οι
υποστηριζόμενες διανομές του έχουν περιοριστεί σε μονάχα 4. υποστηριζόμενες διανομές του έχουν περιοριστεί σε μονάχα 4.
\end{itemize} \end{itemize}
@@ -226,7 +226,7 @@
Συγκριτικά με τα παραπάνω εργαλεία, το harden υποστηρίζει την ικανότητα Συγκριτικά με τα παραπάνω εργαλεία, το harden υποστηρίζει την ικανότητα
αναγνώρισης της διανομής στην οποία εκτελείται και μπορεί δυναμικά να αλλοιώσει αναγνώρισης της διανομής στην οποία εκτελείται και μπορεί δυναμικά να αλλοιώσει
την συμπεριφορά του αναλόγως. Οι υποστηριζόμενες διανομές είναι 6 και οι την συμπεριφορά του αναλόγως. Οι υποστηριζόμενες διανομές είναι 6 και οι
λειτουργίες του αν και σύμφωνα με τα αποτελέσματα του κεφαλαίου λειτουργίες του αν και σύμφωνα με τα αποτελέσματα του Κεφαλαίου
\ref{experimentationANDresults} είναι ικανοποιητικές, θα μπορούσαν εύκολα να \ref{experimentationANDresults} είναι ικανοποιητικές, θα μπορούσαν εύκολα να
επεκταθούν με την προσθήκη νέων συναρτήσεων. Επιπλέον, αυτό το ένα εκτελέσιμο, επεκταθούν με την προσθήκη νέων συναρτήσεων. Επιπλέον, αυτό το ένα εκτελέσιμο,
παράγει κατά την εκτέλεσή του δύο ακόμα, τα οποία θα εκτελούνται περιοδικά με παράγει κατά την εκτέλεσή του δύο ακόμα, τα οποία θα εκτελούνται περιοδικά με

View File

@@ -9,7 +9,7 @@
\section{Αποφάσεις που πάρθηκαν κατά την ανάπτυξη} \label{developmentDecisions} \section{Αποφάσεις που πάρθηκαν κατά την ανάπτυξη} \label{developmentDecisions}
Κατά την ανάπτυξη του συστήματος, προκειμένου να επιτευχθούν οι στόχοι που Κατά την ανάπτυξη του συστήματος, προκειμένου να επιτευχθούν οι στόχοι που
θέσαμε στην ενότητα \ref{overcomingDockerDisadvantages} και συγκεκριμένα για θέσαμε στην Ενότητα \ref{overcomingDockerDisadvantages} και συγκεκριμένα για
την επικοινωνία με διάφορους παρόχους νέφους, επιλέχθηκε να γίνει χρήση της την επικοινωνία με διάφορους παρόχους νέφους, επιλέχθηκε να γίνει χρήση της
βιβλιοθήκης libcloud \footfullcite{libcloud}. Μια από τις δύο επιλογές βιβλιοθήκης libcloud \footfullcite{libcloud}. Μια από τις δύο επιλογές
βιβλιοθηκών της Apache \footfullcite{apache} για την επικοινωνία με παρόχους βιβλιοθηκών της Apache \footfullcite{apache} για την επικοινωνία με παρόχους
@@ -37,14 +37,14 @@ libcloud αποτελεί μια προσπάθεια δημιουργίας ε
παρούσα διπλωματική εργασία, χρειάζεται να γίνει χρήση των λειτουργιών παρούσα διπλωματική εργασία, χρειάζεται να γίνει χρήση των λειτουργιών
\textquote{Compute} της βιβλιοθήκης. Στην αρχική σελίδα της, αναφέρεται \textquote{Compute} της βιβλιοθήκης. Στην αρχική σελίδα της, αναφέρεται
υποστήριξη για πάνω από 50 παρόχους. Κατά την σελίδα τεκμηρίωσης υποστήριξη για πάνω από 50 παρόχους. Κατά την σελίδα τεκμηρίωσης
\footfullcite{libcloudProviders} για τις λειτουργίες \textquote{Compute}, \cite{libcloudProviders} για τις λειτουργίες \textquote{Compute}, αναφέρονται
αναφέρονται 48 πάροχοι σε έναν πίνακα ο οποίος αναγράφει την υποστήριξη ή 48 πάροχοι σε έναν πίνακα ο οποίος αναγράφει την υποστήριξη ή απουσία αυτής,
απουσία αυτής, διάφορων συναρτήσεων εικονικών μηχανών. Στις συναρτήσεις αυτές διάφορων συναρτήσεων εικονικών μηχανών. Στις συναρτήσεις αυτές περιλαμβάνονται
περιλαμβάνονται η δημιουργία εικονικών μηχανών, η εκκίνηση, η παύση, η διαγραφή η δημιουργία εικονικών μηχανών, η εκκίνηση, η παύση, η διαγραφή τους και εν
τους και εν γένει όσες λειτουργίες είναι απαραίτητες για την ολοκληρωμένη γένει όσες λειτουργίες είναι απαραίτητες για την ολοκληρωμένη λειτουργία του
λειτουργία του εργαλείου. Από αυτούς τους 48 παρόχους, οι 25 υποστηρίζουν και εργαλείου. Από αυτούς τους 48 παρόχους, οι 25 υποστηρίζουν και τις 9
τις 9 συναρτήσεις. Ωστόσο, από αυτούς τους 25 έπρεπε να αφαιρεθούν οι 20 για συναρτήσεις. Ωστόσο, από αυτούς τους 25 έπρεπε να αφαιρεθούν οι 20 για λόγους
λόγους όπως η μη ύπαρξη τεκμηρίωσης χρήσης από την libcloud, η μη συνέχιση της όπως η μη ύπαρξη τεκμηρίωσης χρήσης από την libcloud, η μη συνέχιση της
λειτουργίας τους, η έλλειψη πληροφοριών τιμής ή δοκιμαστικής περιόδου για τις λειτουργίας τους, η έλλειψη πληροφοριών τιμής ή δοκιμαστικής περιόδου για τις
υπηρεσίες τους και η αδυναμία δημιουργίας λογαριασμού στην επίσημη σελίδα τους. υπηρεσίες τους και η αδυναμία δημιουργίας λογαριασμού στην επίσημη σελίδα τους.
Επομένως, υπάρχουν εν τέλει 5 πάροχοι νέφους που δύναται να χρησιμοποιηθούν Επομένως, υπάρχουν εν τέλει 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|}{} & 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|}{} & 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|}{} & 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}} \end{tabular}}
\label{table:supportedDistributions} \label{table:supportedDistributions}
\renewcommand{\arraystretch}{1} \renewcommand{\arraystretch}{1}
@@ -197,8 +197,8 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
την λειτουργία σύνδεσης μέσω SSH} την λειτουργία σύνδεσης μέσω SSH}
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την αρχικοποίηση μονάχα \item \textbf{Το εργαλείο πρέπει να υποστηρίζει την αρχικοποίηση μονάχα
ενός παρόχου δίχως την συμπλήρωση κενών πεδίων για τους υπόλοιπους από ενός παρόχου δίχως την συμπλήρωση κενών πεδίων για τους υπόλοιπους
τον χρήστη} από τον χρήστη}
\end{itemize} \end{itemize}
@@ -210,33 +210,32 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
που έχει χρησιμοποιήσει προγράμματα γραμμής εντολών στο παρελθόν} που έχει χρησιμοποιήσει προγράμματα γραμμής εντολών στο παρελθόν}
\item \textbf{Το εργαλείο πρέπει να δημιουργεί ξεχωριστό αρχείο για τις \item \textbf{Το εργαλείο πρέπει να δημιουργεί ξεχωριστό αρχείο για τις
ρυθμίσεις του στον ίδιο φάκελο που βρίσκεται και το εκτελέσιμο αρχείο του} ρυθμίσεις του στον ίδιο φάκελο που βρίσκεται και το εκτελέσιμο αρχείο
του}
\item \textbf{Το εργαλείο πρέπει να κρατάει αρχείο των διευθύνσεων \item \textbf{Το εργαλείο πρέπει να κρατάει αρχείο των διευθύνσεων IP των
IP των εικονικών μηχανών που δημιουργεί ώστε να μπορούν να εικονικών μηχανών που δημιουργεί ώστε να μπορούν να διαμορφωθούν
διαμορφωθούν περαιτέρω εάν ο χρήστης επιθυμεί να περαιτέρω εάν ο χρήστης επιθυμεί να χρησιμοποιήσει άλλα προγράμματα
χρησιμοποιήσει άλλα προγράμματα όπως το Ansible} όπως το Ansible}
\item \textbf{Το εργαλείο πρέπει να διαθέτει ένα μοτίβο εντολών που να \item \textbf{Το εργαλείο πρέπει να διαθέτει ένα μοτίβο εντολών που να
μπορεί ο χρήστης να καταλαβαίνει και να διαμορφώνει ανάλογα με τις μπορεί ο χρήστης να καταλαβαίνει και να διαμορφώνει ανάλογα με τις
ανάγκες του} ανάγκες του}
\item \textbf{Το εργαλείο πρέπει να δημιουργεί κλειδιά SSH σε \item \textbf{Το εργαλείο πρέπει να δημιουργεί κλειδιά SSH σε περίπτωση που
περίπτωση που δεν υπάρχουν, στον ίδιο φάκελο με το εκτελέσιμο δεν υπάρχουν, στον ίδιο φάκελο με το εκτελέσιμο αρχείο του}
αρχείο του}
\item \textbf{Το δεύτερο εκτελέσιμο αρχείο του εργαλείου πρέπει να \item \textbf{Το δεύτερο εκτελέσιμο αρχείο του εργαλείου πρέπει να
εγκαθιστά και να σκληραίνει και το Docker πέρα από το εγκαθιστά και να σκληραίνει και το Docker πέρα από το λειτουργικό
λειτουργικό σύστημα} σύστημα}
\item \textbf{Το δεύτερο εκτελέσιμο αρχείο του εργαλείου πρέπει να \item \textbf{Το δεύτερο εκτελέσιμο αρχείο του εργαλείου πρέπει να
δημιουργεί στην εικονική μηχανή δύο επιπλέον εκτελέσιμα δημιουργεί στην εικονική μηχανή δύο επιπλέον εκτελέσιμα αρχεία για
αρχεία για περιοδική ενημέρωση των πακέτων και κλείσιμο περιοδική ενημέρωση των πακέτων και κλείσιμο αχρησιμοποίητων θυρών}
αχρησιμοποίητων θυρών}
\item \textbf{Το δεύτερο εκτελέσιμο αρχείο του εργαλείου πρέπει να \item \textbf{Το δεύτερο εκτελέσιμο αρχείο του εργαλείου πρέπει να
εγκαθιστά προγράμματα για την περαιτέρω σκλήρυνση του Docker και την εγκαθιστά προγράμματα για την περαιτέρω σκλήρυνση του Docker και την
διευκόλυνση του χρήστη κατά την εγκατάσταση δοχείων} διευκόλυνση του χρήστη κατά την εγκατάσταση δοχείων}
\end{itemize} \end{itemize}
@@ -248,11 +247,11 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
\section{Διαγραμματική Μοντελοποίηση} \label{designModels} \section{Διαγραμματική Μοντελοποίηση} \label{designModels}
Οι παραπάνω απαιτήσεις και ο τρόπος λειτουργίας του εργαλείου, μεταφράζονται Οι παραπάνω απαιτήσεις και ο τρόπος λειτουργίας του εργαλείου, μεταφράζονται
καλύτερα στον χρήστη μέσω ενός σχεδιαγράμματος περίπτωσης χρήσης. Το σχήμα καλύτερα στον χρήστη μέσω ενός σχεδιαγράμματος περίπτωσης χρήσης. Το Σχήμα
\ref{fig:useCaseDiagram} δημιουργήθηκε με την βοήθεια του εργαλείου \ref{fig:useCaseDiagram} δημιουργήθηκε με την βοήθεια του εργαλείου
\textquote{yuml} \footfullcite{yuml}. Επιπλέον, με το εργαλείο \textquote{yuml} \footfullcite{yuml}. Επιπλέον, με το εργαλείο
\textquote{mermaid} \footfullcite{mermaid}, δημιουργήθηκε ένα διάγραμμα ροής \textquote{mermaid} \footfullcite{mermaid}, δημιουργήθηκε ένα διάγραμμα ροής
για το SecDep που απεικονίζεται στο σχήμα \ref{fig:flowchartDiagram}. Το για το SecDep που απεικονίζεται στο Σχήμα \ref{fig:flowchartDiagram}. Το
διάγραμμα ροής, απεικονίζει την ροή των εντολών που μπορεί να επιλεγούν από τον διάγραμμα ροής, απεικονίζει την ροή των εντολών που μπορεί να επιλεγούν από τον
χρήστη κατά την εκτέλεση του προγράμματος. χρήστη κατά την εκτέλεση του προγράμματος.
@@ -290,7 +289,7 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
να ζητήσει πληροφορίες για διαθέσιμους πόρους όπως οι εικονικές του μηχανές ή να ζητήσει πληροφορίες για διαθέσιμους πόρους όπως οι εικονικές του μηχανές ή
τα συστατικά που έχει στην διάθεσή του για την δημιουργία τους όπως οι τα συστατικά που έχει στην διάθεσή του για την δημιουργία τους όπως οι
διανομές, τα μεγέθη και οι τοποθεσίες τους. Αυτή η αλληλεπίδραση μεταξύ του διανομές, τα μεγέθη και οι τοποθεσίες τους. Αυτή η αλληλεπίδραση μεταξύ του
χρήστη και του παρόχου νέφους, απεικονίζεται στο σχήμα χρήστη και του παρόχου νέφους, απεικονίζεται στο Σχήμα
\ref{fig:sequenceDiagram}, το οποίο δημιουργήθηκε με το εργαλείο \ref{fig:sequenceDiagram}, το οποίο δημιουργήθηκε με το εργαλείο
\textquote{mermaid}. \textquote{mermaid}.
@@ -311,7 +310,7 @@ Mε το \textquote{code2flow} \footfullcite{code2flow} δημιουργήθηκ
διάγραμμα που απεικονίζει τις κλήσεις συναρτήσεων που γίνονται κατά την διάγραμμα που απεικονίζει τις κλήσεις συναρτήσεων που γίνονται κατά την
εκτέλεση του αρχείου secdep.py. Παράλληλα, το ίδιο αποτέλεσμα επιτεύχθηκε για εκτέλεση του αρχείου secdep.py. Παράλληλα, το ίδιο αποτέλεσμα επιτεύχθηκε για
το αρχείο harden με την βοήθεια του \textquote{callGraph} το αρχείο harden με την βοήθεια του \textquote{callGraph}
\footfullcite{callGraph}. Τα παραπάνω απεικονίζονται στα σχήματα \footfullcite{callGraph}. Τα παραπάνω απεικονίζονται στα Σχήματα
\ref{fig:secdepFunctionCallDiagram} και \ref{fig:hardenFunctionCallDiagram} \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} \section{Αρχιτεκτονική Εργαλείου} \label{architecture}
Οι διαθέσιμες συναρτήσεις και μεταβλητές του secdep.py, απεικονίζονται στα Οι διαθέσιμες συναρτήσεις και μεταβλητές του secdep.py, απεικονίζονται στα
σχήματα \ref{fig:secdepFunctions} και \ref{fig:secdepVariables} αντίστοιχα. Η Σχήματα \ref{fig:secdepFunctions} και \ref{fig:secdepVariables} αντίστοιχα. Η
δημιουργία τους πραγματοποιήθηκε με το εργαλείο \textquote{doxygen} δημιουργία τους πραγματοποιήθηκε με το εργαλείο \textquote{doxygen}
\footfullcite{doxygen}. \footfullcite{doxygen}.
@@ -425,8 +424,8 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
\item \textbf{image} \item \textbf{image}
\item \textbf{confirm}: Για επιβεβαίωση της δημιουργίας της \item \textbf{confirm}: Για επιβεβαίωση της δημιουργίας της
εικονικής μηχανής χωρίς να χρειαστεί χειροκίνητη επιβεβαίωση από εικονικής μηχανής χωρίς να χρειαστεί χειροκίνητη επιβεβαίωση
τον χρήστη. από τον χρήστη.
\item \textbf{deploy}: Για την εκτέλεση του harden. \item \textbf{deploy}: Για την εκτέλεση του harden.
@@ -435,7 +434,8 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
\item \textbf{node\_action}: \item \textbf{node\_action}:
Η συνάρτηση \textquote{node\_action}, είναι αυτή που εκτελεί τις Η συνάρτηση \textquote{node\_action}, είναι αυτή που εκτελεί τις
ενέργειες πάνω στις εικονικές μηχανές. Στις ενέργειες αυτές περιλαμβάνονται: ενέργειες πάνω στις εικονικές μηχανές. Στις ενέργειες αυτές
περιλαμβάνονται:
\begin{itemize} \begin{itemize}

View File

@@ -41,7 +41,7 @@ git clone https://git.konsthol.eu/konsthol/SecDep.git
\subsection{Εγκατάσταση των απαιτούμενων εξαρτήσεων} \subsection{Εγκατάσταση των απαιτούμενων εξαρτήσεων}
Μετά την ολοκλήρωση της εγκατάστασης του πηγαίου κώδικα του SecDep, αφού ο Μετά την ολοκλήρωση της εγκατάστασης του πηγαίου κώδικα του SecDep, αφού ο
χρήστης μεταβεί στον φάκελο με τα περιεχόμενα που απεικονίζονται στο σχήμα χρήστης μεταβεί στον φάκελο με τα περιεχόμενα που απεικονίζονται στο Σχήμα
\ref{fig:secdep_install_without_git}, επιβάλλεται να γίνει χρήση του \ref{fig:secdep_install_without_git}, επιβάλλεται να γίνει χρήση του
προγράμματος pip \footfullcite{pip} για την εγκατάσταση των βιβλιοθηκών που προγράμματος pip \footfullcite{pip} για την εγκατάσταση των βιβλιοθηκών που
απαιτούνται για την λειτουργία του εργαλείου. Αυτό επιτυγχάνεται με την απαιτούνται για την λειτουργία του εργαλείου. Αυτό επιτυγχάνεται με την

View File

@@ -32,8 +32,8 @@ Lynis και το LUNAR.
\item \textbf{Το NVD (National Vulnerability Database)} \item \textbf{Το NVD (National Vulnerability Database)}
\item \textbf{Τα αρχεία ορισμού OVAL (Open Vulnerability and Assessment Language)} \item \textbf{Τα αρχεία ορισμού OVAL (Open Vulnerability and Assessment
που διατίθενται από τις διανομές Linux Language)} που διατίθενται από τις διανομές Linux
\item \textbf{Συμβουλευτικές πηγές ασφαλείας} \item \textbf{Συμβουλευτικές πηγές ασφαλείας}
@@ -85,15 +85,15 @@ Lynis και το LUNAR.
\item \textbf{Εκτεταμένη σάρωση}: \item \textbf{Εκτεταμένη σάρωση}:
Στο δεύτερο επίπεδο αξιολόγησης, το Vuls χρειάζεται να συνδεθεί ως ένας Στο δεύτερο επίπεδο αξιολόγησης, το Vuls χρειάζεται να συνδεθεί ως ένας
χρήστης ικανός να εκτελέσει εντολές διαχειριστικού επιπέδου. Η σάρωση χρήστης ικανός να εκτελέσει εντολές διαχειριστικού επιπέδου. Η σάρωση
που πραγματοποιείται είναι πιο εκτεταμένη και περιλαμβάνει ελέγχους που που πραγματοποιείται είναι πιο εκτεταμένη και περιλαμβάνει ελέγχους που
απαιτούν την ύπαρξη πακέτων λογισμικού στον απομακρυσμένο διακομιστή απαιτούν την ύπαρξη πακέτων λογισμικού στον απομακρυσμένο διακομιστή
όπως τα lsof, debian-goodies και reboot-notifier. όπως τα lsof, debian-goodies και reboot-notifier.
\end{itemize} \end{itemize}
Στο σχήμα \ref{fig:vuls-architecture}, όπως αυτό πάρθηκε από την επίσημη Στο Σχήμα \ref{fig:vuls-architecture}, όπως αυτό πάρθηκε από την επίσημη
ιστοσελίδα του εργαλείου, απεικονίζεται η αρχιτεκτονική του Vuls κατά την ιστοσελίδα του εργαλείου, απεικονίζεται η αρχιτεκτονική του Vuls κατά την
διαδικασία σάρωσης απομακρυσμένου διακομιστή. διαδικασία σάρωσης απομακρυσμένου διακομιστή.
@@ -109,7 +109,7 @@ Lynis και το LUNAR.
\clearpage \clearpage
Στο σχήμα \ref{fig:vulsScan}, το οποίο παρομοίως αποκτήθηκε από την επίσημη Στο Σχήμα \ref{fig:vulsScan}, το οποίο παρομοίως αποκτήθηκε από την επίσημη
σελίδα του, απεικονίζεται η διαδικασία που ακολουθείται κατά την εκτέλεση της σελίδα του, απεικονίζεται η διαδικασία που ακολουθείται κατά την εκτέλεση της
σάρωσης ενός συστήματος. σάρωσης ενός συστήματος.
@@ -137,7 +137,7 @@ Lynis και το LUNAR.
εύκολα σε κάθε σύστημα Linux διότι πρόκειται για ένα απλό εκτελέσιμο αρχείο εύκολα σε κάθε σύστημα Linux διότι πρόκειται για ένα απλό εκτελέσιμο αρχείο
bash. bash.
Στο σχήμα \ref{fig:lynisScan} απεικονίζεται ένα κομμάτι της αναφοράς που Στο Σχήμα \ref{fig:lynisScan} απεικονίζεται ένα κομμάτι της αναφοράς που
επιστρέφει. επιστρέφει.
\begin{center} \begin{center}
@@ -669,7 +669,7 @@ cd lunar
διακομιστές μας, ο διακομιστής secdepawsHardened, σχετικά με τα CVEs που διακομιστές μας, ο διακομιστής secdepawsHardened, σχετικά με τα CVEs που
εντοπίστηκαν, έχει ασφαλιστεί κατά 26.615\%. Επιπροσθέτως, με βάση τα γραφήματα εντοπίστηκαν, έχει ασφαλιστεί κατά 26.615\%. Επιπροσθέτως, με βάση τα γραφήματα
που παρήχθησαν από το VulsRepo, μπορούμε να διακρίνουμε μια άμεση πτώση των που παρήχθησαν από το VulsRepo, μπορούμε να διακρίνουμε μια άμεση πτώση των
ευπαθειών με βάση την κατηγορία σοβαρότητας τους στο σχήμα ευπαθειών με βάση την κατηγορία σοβαρότητάς τους στο Σχήμα
\ref{fig:vuls-cvss-severity-table}. \ref{fig:vuls-cvss-severity-table}.
\begin{center} \begin{center}
@@ -786,7 +786,7 @@ cat lynis.log | grep -i index | sed 's/^ *//g' | cut -d' ' -f4
\end{savenotes} \end{savenotes}
H αύξηση ασφάλειας του διακομιστή ανέρχεται στο 9.23077\% και απεικονίζεται H αύξηση ασφάλειας του διακομιστή ανέρχεται στο 9.23077\% και απεικονίζεται
γραφικά στο σχήμα \ref{fig:lynis-security-index}. γραφικά στο Σχήμα \ref{fig:lynis-security-index}.
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
@@ -844,7 +844,7 @@ cat lunar.log | grep -i "warnings:" | awk '{print $2}'
\end{table} \end{table}
\end{savenotes} \end{savenotes}
Από τον πίνακα \ref{table:lunar-warnings-table} διαπιστώνεται πως έχουμε Από τον Πίνακα \ref{table:lunar-warnings-table} διαπιστώνεται πως έχουμε
2.25564\% αύξηση της ασφάλειας, το οποίο απεικονίζεται και ως εξής: 2.25564\% αύξηση της ασφάλειας, το οποίο απεικονίζεται και ως εξής:
\begin{center} \begin{center}

View File

@@ -25,7 +25,7 @@
\section{Συμπεράσματα} \section{Συμπεράσματα}
Με βάση τα αποτελέσματα των πειραμάτων που πραγματοποιήθηκαν στο κεφάλαιο Με βάση τα αποτελέσματα των πειραμάτων που πραγματοποιήθηκαν στο Κεφάλαιο
\ref{experimentationANDresults}, μπορούμε να συμπεράνουμε ότι το εργαλείο \ref{experimentationANDresults}, μπορούμε να συμπεράνουμε ότι το εργαλείο
SecDep, είναι ικανό να δημιουργήσει εικονικές μηχανές που έχουν σκληρύνει σε SecDep, είναι ικανό να δημιουργήσει εικονικές μηχανές που έχουν σκληρύνει σε
ικανοποιητικό βαθμό, χωρίς περαιτέρω παρέμβαση από τον χρήστη. Μπορεί λοιπόν να ικανοποιητικό βαθμό, χωρίς περαιτέρω παρέμβαση από τον χρήστη. Μπορεί λοιπόν να
@@ -68,4 +68,4 @@ Docker, θα μπορούσε και αυτό να επεκταθεί, προσ
διαδικασία σκλήρυνσης. Τα αποτελέσματα είναι ήδη αρκετά ικανοποιητικά, ωστόσο διαδικασία σκλήρυνσης. Τα αποτελέσματα είναι ήδη αρκετά ικανοποιητικά, ωστόσο
πάντα υπάρχουν περιθώρια βελτίωσης. πάντα υπάρχουν περιθώρια βελτίωσης.
\clearpage \clearpage % Needed to reset header

View File

@@ -20,7 +20,7 @@
\item[\tiny{$\blacksquare$}] Όπου έχω συμβουλευτεί την δημοσιευμένη δουλειά \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 % \rule[1em]{25em}{0.5pt} % This prints a line to write the date
% \small\noindent Αυτή η διπλωματική εργασία είναι διαθέσιμη υπό το: \\ \small\noindent Αυτή η διπλωματική εργασία είναι διαθέσιμη υπό το: \\
\small\textbf{Αναφορά Δημιουργού - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 Διεθνές} \small\textbf{Αναφορά Δημιουργού - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 Διεθνές}
\begin{center} \begin{center}

View File

@@ -32,6 +32,8 @@
\usepackage{textcomp} \usepackage{textcomp}
% Make landscape pages display as landscape % Make landscape pages display as landscape
\usepackage{pdflscape} \usepackage{pdflscape}
% Better paragraph break in new pages
\usepackage[defaultlines=4,all]{nowidow}
% Select alternative section titles (Better chapter, section and subsection titles) % Select alternative section titles (Better chapter, section and subsection titles)
\usepackage{titlesec} \usepackage{titlesec}