QuickFix.
@@ -27,8 +27,10 @@
|
|||||||
\textbf{CVRF} & \textbf{C}ommon \textbf{V}ulnerability \textbf{R}eporting \textbf{F}ramework \\
|
\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{CWE} & \textbf{C}ommon \textbf{W}eakness \textbf{E}numeration \\
|
||||||
|
|
||||||
|
\textbf{DDoS} & \textbf{D}istributed \textbf{D}enial \textbf{o}f \textbf{S}ervice \\
|
||||||
\textbf{DevOps} & \textbf{Dev}elopment \textbf{Op}eration\textbf{s} \\
|
\textbf{DevOps} & \textbf{Dev}elopment \textbf{Op}eration\textbf{s} \\
|
||||||
\textbf{DNS} & \textbf{D}omain \textbf{N}ame \textbf{S}ystem \\
|
\textbf{DNS} & \textbf{D}omain \textbf{N}ame \textbf{S}ystem \\
|
||||||
|
\textbf{DoS} & \textbf{D}enial \textbf{o}f \textbf{S}ervice \\
|
||||||
|
|
||||||
\textbf{EBS} & \textbf{E}lastic \textbf{B}lock \textbf{S}tore \\
|
\textbf{EBS} & \textbf{E}lastic \textbf{B}lock \textbf{S}tore \\
|
||||||
\textbf{EC2} & \textbf{E}lastic \textbf{C}ompute \textbf{C}loud \\
|
\textbf{EC2} & \textbf{E}lastic \textbf{C}ompute \textbf{C}loud \\
|
||||||
@@ -44,6 +46,7 @@
|
|||||||
\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{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{IPv6} & \textbf{I}nternet \textbf{P}rotocol \textbf{v}ersion \textbf{6} \\
|
||||||
|
|
||||||
\textbf{KVM} & \textbf{K}ernel-based \textbf{V}irtual \textbf{M}achine \\
|
\textbf{KVM} & \textbf{K}ernel-based \textbf{V}irtual \textbf{M}achine \\
|
||||||
|
|
||||||
@@ -82,10 +85,12 @@
|
|||||||
|
|
||||||
\textbf{VBS} & \textbf{V}irtualization-\textbf{B}ased \textbf{S}ecurity \\
|
\textbf{VBS} & \textbf{V}irtualization-\textbf{B}ased \textbf{S}ecurity \\
|
||||||
\textbf{VM} & \textbf{V}irtual \textbf{M}achine \\
|
\textbf{VM} & \textbf{V}irtual \textbf{M}achine \\
|
||||||
|
\textbf{VMBR} & \textbf{V}irtual \textbf{M}achine \textbf{B}ased \textbf{R}ootkits \\
|
||||||
\textbf{VMM} & \textbf{V}irtual \textbf{M}achine \textbf{M}onitor \\
|
\textbf{VMM} & \textbf{V}irtual \textbf{M}achine \textbf{M}onitor \\
|
||||||
\textbf{Vuls} & \textbf{VUL}nerability \textbf{S}canner \\
|
\textbf{Vuls} & \textbf{VUL}nerability \textbf{S}canner \\
|
||||||
|
|
||||||
\textbf{XSS} & \textbf{C}ross \textbf{S}ite \textbf{S}cripting \\
|
\textbf{XML} & E\textbf{x}tensive \textbf{M}arkup \textbf{L}anguage \\
|
||||||
|
\textbf{XSS} & Cross (\textbf{X}) \textbf{S}ite \textbf{S}cripting \\
|
||||||
|
|
||||||
\textbf{ΛΣ} & \textbf{Λ}ειτουργικό \textbf{Σ}ύστημα \\
|
\textbf{ΛΣ} & \textbf{Λ}ειτουργικό \textbf{Σ}ύστημα \\
|
||||||
\textbf{ΤΠ} & \textbf{Τ}εχνολογίες \textbf{Π}ληροφοριών \\
|
\textbf{ΤΠ} & \textbf{Τ}εχνολογίες \textbf{Π}ληροφοριών \\
|
||||||
|
|||||||
171
Bibliography.bib
@@ -578,7 +578,7 @@
|
|||||||
@article{yasrab2018mitigating,
|
@article{yasrab2018mitigating,
|
||||||
title = {Mitigating docker security issues},
|
title = {Mitigating docker security issues},
|
||||||
author = {Yasrab, Robail},
|
author = {Yasrab, Robail},
|
||||||
year = {2018},
|
year = {2023},
|
||||||
journal = {arXiv preprint arXiv:1804.05039},
|
journal = {arXiv preprint arXiv:1804.05039},
|
||||||
urldate = {2023-07-29},
|
urldate = {2023-07-29},
|
||||||
}
|
}
|
||||||
@@ -741,6 +741,109 @@
|
|||||||
urldate = {2023-08-07},
|
urldate = {2023-08-07},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@article{litchfield2016virtualization,
|
||||||
|
title={Virtualization technology: Cross-vm cache side channel attacks make it vulnerable},
|
||||||
|
author={Litchfield, Alan and Shahzad, Abid},
|
||||||
|
journal={arXiv preprint arXiv:1606.01356},
|
||||||
|
year={2016},
|
||||||
|
urldate = {2024-02-04},
|
||||||
|
}
|
||||||
|
|
||||||
|
@inproceedings{zhang2012crossvmkeys,
|
||||||
|
author = {Zhang, Yinqian and Juels, Ari and Reiter, Michael K. and Ristenpart, Thomas},
|
||||||
|
title = {Cross-VM side channels and their use to extract private keys},
|
||||||
|
year = {2012},
|
||||||
|
isbn = {9781450316514},
|
||||||
|
publisher = {Association for Computing Machinery},
|
||||||
|
address = {New York, NY, USA},
|
||||||
|
url = {https://doi.org/10.1145/2382196.2382230},
|
||||||
|
doi = {10.1145/2382196.2382230},
|
||||||
|
booktitle = {Proceedings of the 2012 ACM Conference on Computer and Communications Security},
|
||||||
|
pages = {305–316},
|
||||||
|
numpages = {12},
|
||||||
|
keywords = {cache-based side channel, cross-vm side channel, side-channel attack},
|
||||||
|
location = {Raleigh, North Carolina, USA},
|
||||||
|
series = {CCS '12},
|
||||||
|
urldate = {2024-02-04},
|
||||||
|
}
|
||||||
|
|
||||||
|
@inproceedings{vmrollbackattack,
|
||||||
|
author = {Xia, Yubin and Liu, Yutao and Chen, Haibo and Zang, Binyu},
|
||||||
|
year = {2012},
|
||||||
|
month = {06},
|
||||||
|
pages = {1-5},
|
||||||
|
title = {Defending against VM rollback attack},
|
||||||
|
isbn = {978-1-4673-2264-5},
|
||||||
|
doi = {10.1109/DSNW.2012.6264690},
|
||||||
|
urldate = {2024-02-04},
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{technopediaVmHopping,
|
||||||
|
title = {Virtual Machine Hyper Jumping},
|
||||||
|
author = {Margaret Rouse},
|
||||||
|
year = {2015},
|
||||||
|
url = {https://www.techopedia.com/definition/30921/virtual-machine-hyper-jumping-vm-jumping},
|
||||||
|
urldate = {2024-02-04},
|
||||||
|
}
|
||||||
|
|
||||||
|
@article{abusaimeh2020virtual,
|
||||||
|
title = {Virtual machine escape in cloud computing services},
|
||||||
|
author = {Abusaimeh, Hesham},
|
||||||
|
journal = {International Journal of Advanced Computer Science and Applications},
|
||||||
|
volume = {11},
|
||||||
|
number = {7},
|
||||||
|
year = {2020},
|
||||||
|
publisher = {Science and Information (SAI) Organization Limited},
|
||||||
|
urldate = {2024-02-04},
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{containersVsVMs,
|
||||||
|
title = {A Complete Overview of Docker Architecture},
|
||||||
|
author = {Winnie Ondara},
|
||||||
|
year = {2022},
|
||||||
|
url = {https://www.cherryservers.com/blog/a-complete-overview-of-docker-architecture},
|
||||||
|
urldate = {2024-02-08},
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{containerRuntime,
|
||||||
|
title = {What are container runtimes?},
|
||||||
|
author = {Nived Velayudhan},
|
||||||
|
year = {2021},
|
||||||
|
url = {https://opensource.com/article/21/9/container-runtimes},
|
||||||
|
urldate = {2024-02-11},
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{kernexpcgroup,
|
||||||
|
title = {New Linux Kernel cgroups Vulnerability Could Let Attackers Escape Container},
|
||||||
|
author = {Ravie Lakshmanan},
|
||||||
|
year = {2022},
|
||||||
|
url = {https://thehackernews.com/2022/03/new-linux-kernel-cgroups-vulnerability.html},
|
||||||
|
urldate = {2024-02-11},
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{dirtyPipe,
|
||||||
|
title = {Escaping containers using the Dirty Pipe vulnerability},
|
||||||
|
author = {Eric Mountain and Tommy McCormick and Christophe Tafani-Dereeper and Frederic Baguelin},
|
||||||
|
year = {2022},
|
||||||
|
url = {https://securitylabs.datadoghq.com/articles/dirty-pipe-container-escape-poc/},
|
||||||
|
urldate = {2024-02-11},
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{dockermitm,
|
||||||
|
title = {Top Docker Security Vulnerabilities, Best Practices, \& Insights},
|
||||||
|
author = {Fortra's Alert Logic},
|
||||||
|
year = {2020},
|
||||||
|
url = {https://www.alertlogic.com/blog/top-docker-security-vulnerabilities-best-practices-insights/},
|
||||||
|
urldate = {2024-02-11},
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{arpdocker,
|
||||||
|
title = {ARP Spoofing},
|
||||||
|
author = {Imperva},
|
||||||
|
url = {https://www.imperva.com/learn/application-security/arp-spoofing/},
|
||||||
|
urldate = {2024-02-12},
|
||||||
|
}
|
||||||
|
|
||||||
@online{lynis,
|
@online{lynis,
|
||||||
title = {Lynis},
|
title = {Lynis},
|
||||||
author = {CISOfy},
|
author = {CISOfy},
|
||||||
@@ -748,6 +851,24 @@
|
|||||||
}
|
}
|
||||||
urldate = {2023-12-06},
|
urldate = {2023-12-06},
|
||||||
|
|
||||||
|
@online{docker-rootless-setup,
|
||||||
|
title = {Docker-Rootless Full Setup},
|
||||||
|
author = {zerint},
|
||||||
|
url = {https://github.com/zerint/docker-rootless-setup},
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{docksec,
|
||||||
|
title = {docksec},
|
||||||
|
author = {Ted LeRoy},
|
||||||
|
url = {https://github.com/TedLeRoy/docksec},
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{docker-bench-security,
|
||||||
|
title = {Docker Bench for Security},
|
||||||
|
author = {Docker},
|
||||||
|
url = {https://github.com/docker/docker-bench-security},
|
||||||
|
}
|
||||||
|
|
||||||
@online{lunar,
|
@online{lunar,
|
||||||
title = {Lunar},
|
title = {Lunar},
|
||||||
author = {Lateral Blast},
|
author = {Lateral Blast},
|
||||||
@@ -783,6 +904,12 @@
|
|||||||
}
|
}
|
||||||
urldate = {2023-11-10},
|
urldate = {2023-11-10},
|
||||||
|
|
||||||
|
@online{portainer,
|
||||||
|
title = {Portainer},
|
||||||
|
author = {Portainer},
|
||||||
|
url = {https://www.portainer.io/},
|
||||||
|
}
|
||||||
|
|
||||||
@online{secdep,
|
@online{secdep,
|
||||||
title = {SecDep},
|
title = {SecDep},
|
||||||
author = {konsthol},
|
author = {konsthol},
|
||||||
@@ -1052,6 +1179,48 @@
|
|||||||
url = {https://github.com/rkt/rkt},
|
url = {https://github.com/rkt/rkt},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@online{snyk,
|
||||||
|
title = {Snyk},
|
||||||
|
author = {Snyk},
|
||||||
|
url = {https://snyk.io/},
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{trivy,
|
||||||
|
title = {Trivy},
|
||||||
|
author = {Aqua Security},
|
||||||
|
url = {https://aquasecurity.github.io/trivy/v0.49/},
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{dotenv,
|
||||||
|
title = {python-dotenv},
|
||||||
|
author = {Saurabh Kumar},
|
||||||
|
url = {https://github.com/theskumar/python-dotenv},
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{rich,
|
||||||
|
title = {rich},
|
||||||
|
author = {Textualize},
|
||||||
|
url = {https://github.com/Textualize/rich},
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{shtab,
|
||||||
|
title = {shtab},
|
||||||
|
author = {Iterative},
|
||||||
|
url = {https://github.com/iterative/shtab},
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{paramiko,
|
||||||
|
title = {paramiko},
|
||||||
|
author = {paramiko},
|
||||||
|
url = {https://github.com/paramiko/paramiko},
|
||||||
|
}
|
||||||
|
|
||||||
|
@online{dockerCompose,
|
||||||
|
title = {Docker Compose},
|
||||||
|
author = {Docker},
|
||||||
|
url = {https://github.com/docker/compose},
|
||||||
|
}
|
||||||
|
|
||||||
inproceedings{manu2016study,
|
inproceedings{manu2016study,
|
||||||
author = {Manu, A.R. and Patel, Jitendra Kumar and Akhtar, Shakil and Agrawal, V.K. and Subramanya Murthy, K.N. Bala},
|
author = {Manu, A.R. and Patel, Jitendra Kumar and Akhtar, Shakil and Agrawal, V.K. and Subramanya Murthy, K.N. Bala},
|
||||||
booktitle = {2016 International Conference on Circuit, Power and Computing Technologies (ICCPCT)},
|
booktitle = {2016 International Conference on Circuit, Power and Computing Technologies (ICCPCT)},
|
||||||
|
|||||||
@@ -3,25 +3,31 @@
|
|||||||
\noindent Με την πάροδο των χρόνων και τη ραγδαία αύξηση ενδιαφέροντος προς τον
|
\noindent Με την πάροδο των χρόνων και τη ραγδαία αύξηση ενδιαφέροντος προς τον
|
||||||
κλάδο της υπολογιστικής νέφους, άρχισε να γίνεται όλο και πιο επιτακτική η
|
κλάδο της υπολογιστικής νέφους, άρχισε να γίνεται όλο και πιο επιτακτική η
|
||||||
ανάγκη για αυτοματοποιημένο στήσιμο και προστασία των υποδομών των
|
ανάγκη για αυτοματοποιημένο στήσιμο και προστασία των υποδομών των
|
||||||
επιχειρήσεων. Η χρήση τεχνολογιών εικονικοποίησης και η άνοδος υπηρεσιών IaaS,
|
επιχειρήσεων. Η χρήση τεχνολογιών εικονικοποίησης και η άνοδος των υπηρεσιών
|
||||||
έχει ελαφρύνει τον φόρτο εργασίας όσον αφορά το στήσιμο των υποδομών αυτών,
|
IaaS, έχει ελαφρύνει τον φόρτο εργασίας όσον αφορά το στήσιμο των υποδομών
|
||||||
αφού πλέον υπάρχουν πολλά εργαλεία στα οποία γίνεται καθορισμός τους. Η
|
αυτών, αφού πλέον υπάρχουν πολλά εργαλεία στα οποία γίνεται καθορισμός τους.
|
||||||
αυτοματοποίηση της ασφάλισής τους όμως είναι ακόμα σε πρώιμο στάδιο. Οι
|
Πέραν από εργαλεία στα οποία δηλώνονται οι προδιαγραφές μιας εικονικής μηχανής
|
||||||
περισσότερες υπηρεσίες που διατίθενται στους χρήστες κάνουν χρήση τεχνολογιών
|
σε πραγματικό χρόνο με την χρήση παραμέτρων, υπάρχουν και άλλα που ανήκουν στην
|
||||||
εικονικοποίησης έμμεσα από τον πάροχο νέφους που χρησιμοποιούν και τεχνολογίες
|
οικογένεια εργαλείων IaC (Infrastructure as Code - Υποδομή ως κώδικας). Σε
|
||||||
δοχείων άμεσα από επιλογή τους λόγω της υπεροχής που παρέχουν στη διαχείρισή
|
αυτού του είδους τα εργαλεία, όλα τα χαρακτηριστικά μιας εικονικής μηχανής
|
||||||
τους. Όλες οι υπηρεσίες όμως είναι εν δυνάμει ευάλωτες σε επιθέσεις εάν δε
|
δηλώνονται σε ένα αρχείο κειμένου και με βάση αυτό, ξεκινάει η διαδικασία
|
||||||
|
δημιουργίας τους. Η αυτοματοποίηση της ασφάλισης αυτών των εικονικών μηχανών
|
||||||
|
όμως, είναι ακόμα σε πρώιμο στάδιο. Οι περισσότερες υπηρεσίες που διατίθενται
|
||||||
|
στους χρήστες κάνουν χρήση τεχνολογιών εικονικοποίησης έμμεσα από τον πάροχο
|
||||||
|
νέφους που χρησιμοποιούν και τεχνολογίες δοχείων άμεσα από επιλογή τους λόγω
|
||||||
|
της υπεροχής που προσφέρουν στη διαχείριση και τη διασφάλιση των εφαρμογών
|
||||||
|
τους. Όλες οι υπηρεσίες όμως, είναι εν δυνάμει ευάλωτες σε επιθέσεις εάν δε
|
||||||
ληφθούν τα απαραίτητα μέτρα προστασίας και αφήσουν ανοιχτά σημεία εισόδου στα
|
ληφθούν τα απαραίτητα μέτρα προστασίας και αφήσουν ανοιχτά σημεία εισόδου στα
|
||||||
συστήματά τους.
|
συστήματά τους.
|
||||||
|
|
||||||
Η παρούσα εργασία έχει ως στόχο την ανάπτυξη ενός εργαλείου που επιτυγχάνει την
|
Η παρούσα εργασία έχει ως στόχο την ανάπτυξη ενός εργαλείου που επιτυγχάνει την
|
||||||
αυτοματοποίηση τριών τομέων. Την επικοινωνία με τον πάροχο νέφους για την
|
αυτοματοποίηση τριών τομέων. Την επικοινωνία με παρόχους νέφους για την αίτηση
|
||||||
αίτηση διάθεσης υπολογιστικών πόρων, την ασφάλιση των πόρων αυτών και τέλος την
|
διάθεσης υπολογιστικών πόρων, την ασφάλιση των πόρων αυτών και τέλος, την
|
||||||
εγκατάσταση, ασφάλιση και χρήση του Docker για τη διάθεση εφαρμογών που
|
εγκατάσταση, ασφάλιση και χρήση του Docker για τη διάθεση εφαρμογών που
|
||||||
βρίσκονται στο Docker Hub. Το επίσημο αποθετήριο του Docker. Στην ενότητα αυτή
|
βρίσκονται στο Docker Hub, δηλ. το επίσημο αποθετήριο εικόνων δοχείων του
|
||||||
θα γίνει αναφορά σε εργαλεία που έχουν αναπτυχθεί για έναν ή παραπάνω από
|
Docker. Στην ενότητα αυτή θα γίνει αναφορά σε εργαλεία που έχουν αναπτυχθεί για
|
||||||
αυτούς τους τρεις τομείς και θα πραγματοποιηθεί σύγκρισή τους ανάλογα με τον
|
έναν ή παραπάνω από αυτούς τους τρεις τομείς και θα πραγματοποιηθεί σύγκρισή
|
||||||
τρόπο λειτουργίας τους και τις δυνατότητες που παρέχουν.
|
τους ανάλογα με τον τρόπο λειτουργίας τους και τις δυνατότητες που παρέχουν.
|
||||||
|
|
||||||
\section{Αυτοματοποίηση δημιουργίας εικονικών μηχανών}
|
\section{Αυτοματοποίηση δημιουργίας εικονικών μηχανών}
|
||||||
|
|
||||||
@@ -37,21 +43,20 @@
|
|||||||
όταν αυτός χρειάζεται να πραγματοποιήσει ορισμένες παραμετροποιήσεις
|
όταν αυτός χρειάζεται να πραγματοποιήσει ορισμένες παραμετροποιήσεις
|
||||||
κατά την χρήση του.
|
κατά την χρήση του.
|
||||||
|
|
||||||
\clearpage
|
|
||||||
|
|
||||||
\item \textbf{Ευκολία κατά την χρήση}:
|
\item \textbf{Ευκολία κατά την χρήση}:
|
||||||
|
|
||||||
Το εργαλείο πρέπει να μπορεί να χρησιμοποιηθεί εύκολα από έναν χρήστη
|
Το εργαλείο πρέπει να μπορεί να χρησιμοποιηθεί εύκολα από έναν χρήστη
|
||||||
που έχει χρησιμοποιήσει στο παρελθόν εργαλεία γραμμής εντολών. Οι
|
που έχει χρησιμοποιήσει στο παρελθόν εργαλεία γραμμής εντολών. Οι
|
||||||
παράμετροί του πρέπει να ακολουθούν ένα μοτίβο που θα διευκολύνει την
|
παράμετροί του πρέπει να ακολουθούν ένα μοτίβο που θα διευκολύνει την
|
||||||
κατανόηση της λειτουργίας τους και τον συνδυασμό τους για ένα επιθυμητό
|
κατανόηση της σημασιολογίας τους και θα επιτρέπει τον συνδυασμό τους
|
||||||
αποτέλεσμα.
|
για ένα επιθυμητό αποτέλεσμα.
|
||||||
|
|
||||||
\item \textbf{Υποστήριξη μεγάλων ονομάτων στον κλάδο}:
|
\item \textbf{Υποστήριξη μεγάλων ονομάτων στον κλάδο}:
|
||||||
|
|
||||||
Το εργαλείο πρέπει να υποστηρίζει την επικοινωνία με τα νέφη μεγάλων
|
Το εργαλείο πρέπει να υποστηρίζει την επικοινωνία με τα νέφη μεγάλων
|
||||||
εταιρειών στον κλάδο της νεφο-υπολογιστικής, ώστε να είναι εύκολο για
|
εταιρειών στον κλάδο της νεφο-υπολογιστικής, τα οποία κατέχουν μεγάλο
|
||||||
να έναν χρήστη να παραμείνει στον πάροχο της επιλογής του.
|
μερίδιο της σχετικής αγοράς, ώστε να είναι εύκολο για να έναν χρήστη να
|
||||||
|
παραμείνει στον πάροχο της επιλογής του.
|
||||||
|
|
||||||
\item \textbf{Ευκολία στην επέκταση}:
|
\item \textbf{Ευκολία στην επέκταση}:
|
||||||
|
|
||||||
@@ -62,7 +67,8 @@
|
|||||||
|
|
||||||
\subsection{Εργαλεία δημιουργίας εικονικών μηχανών}
|
\subsection{Εργαλεία δημιουργίας εικονικών μηχανών}
|
||||||
|
|
||||||
Τα εργαλεία με τα οποία θα γίνει σύγκριση περιγράφονται στην συνέχεια ως εξής:
|
Τα εργαλεία με τα οποία θα γίνει σύγκριση στον τομέα δημιουργίας εικονικών
|
||||||
|
μηχανών, περιγράφονται στην συνέχεια ως εξής:
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
|
||||||
@@ -70,28 +76,29 @@
|
|||||||
|
|
||||||
Το Terraform είναι ένα δημοφιλές εργαλείο ανοιχτού κώδικα που
|
Το Terraform είναι ένα δημοφιλές εργαλείο ανοιχτού κώδικα που
|
||||||
αναπτύχθηκε από την εταιρεία HashiCorp. Αποτελεί ένα εργαλείο, κατά την
|
αναπτύχθηκε από την εταιρεία HashiCorp. Αποτελεί ένα εργαλείο, κατά την
|
||||||
χρήση του οποίου ο χρήστης καθορίζει τα χαρακτηριστικά της υποδομής που
|
χρήση, του οποίου ο χρήστης καθορίζει τα χαρακτηριστικά της υποδομής
|
||||||
θέλει να δημιουργήσει σε ένα αρχείο που ακολουθεί συγκεκριμένη σύνταξη.
|
που θέλει να δημιουργήσει σε ένα αρχείο που ακολουθεί συγκεκριμένη
|
||||||
Αυτό το εντάσσει στην κατηγορία \textquote{υποδομή ως κώδικας
|
σύνταξη. Αυτό το χαρακτηριστικό, εντάσσει το Terraform στην κατηγορία
|
||||||
(Infrastructure as Code - IaC)} και χρησιμοποιείται για τον καθορισμό
|
εργαλείων \textquote{υποδομή ως κώδικας (Infrastructure as Code - IaC)}
|
||||||
των υποδομών που θα χρησιμοποιηθούν για την στέγαση εφαρμογών. Το
|
και χρησιμοποιείται για τον καθορισμό των υποδομών που θα
|
||||||
Terraform υποστηρίζει πολλούς παρόχους νέφους και επιτρέπει την
|
χρησιμοποιηθούν για την στέγαση εφαρμογών. Το Terraform υποστηρίζει
|
||||||
αυτοματοποίηση της διαδικασίας δημιουργίας υποδομών σε αυτούς. Ο τρόπος
|
πολλούς παρόχους νέφους και επιτρέπει την αυτοματοποίηση της
|
||||||
λειτουργίας του είναι αρκετά απλός. Αφού ο χρήστης έχει δημιουργήσει το
|
διαδικασίας δημιουργίας υποδομών σε αυτούς. Ο τρόπος λειτουργίας του
|
||||||
αρχείο που περιγράφει την υποδομή, το εκτελεί για να γίνουν οι
|
είναι αρκετά απλός. Αφού ο χρήστης έχει δημιουργήσει το αρχείο που
|
||||||
απαραίτητες ενέργειες. Έπειτα ο χρήστης μπορεί να αποδεσμεύσει τους
|
περιγράφει την υποδομή, το εκτελεί για να γίνουν οι απαραίτητες
|
||||||
πόρους που δημιουργήθηκαν όταν δεν τους χρειάζεται πλέον.
|
ενέργειες. Έπειτα, δημιουργούνται οι εικονικές μηχανές που
|
||||||
|
περιγράφονται στο αρχείο. Ο χρήστης μπορεί να αποδεσμεύσει τους πόρους
|
||||||
\clearpage
|
που δημιουργήθηκαν όταν δεν τους χρειάζεται πλέον και η διαδικασία της
|
||||||
|
αποδέσμευσης, είναι όσο απλή όσο και η δημιουργία τους.
|
||||||
|
|
||||||
\item \textbf{Libcloud CLI} \footfullcite{libcloud-cli}:
|
\item \textbf{Libcloud CLI} \footfullcite{libcloud-cli}:
|
||||||
|
|
||||||
Αποτελεί την δεύτερη τροποποιημένη έκδοση από ένα τρίτο πρόσωπο, ενός
|
Το Libcloud CLI, αποτελεί την δεύτερη τροποποιημένη έκδοση από ένα
|
||||||
προγράμματος που επιχειρούσε να επιτύχει την δημιουργία ενός εργαλείου
|
τρίτο πρόσωπο, ενός προγράμματος που επιχειρούσε να επιτύχει την
|
||||||
γραμμής εντολών που χρησιμοποιεί την βιβλιοθήκη libcloud για την
|
ανάπτυξη ενός εργαλείου γραμμής εντολών που χρησιμοποιεί την βιβλιοθήκη
|
||||||
δημιουργία εικονικών μηχανών κατά μήκος διαφόρων παρόχων νέφους. Είναι
|
libcloud για την δημιουργία εικονικών μηχανών κατά μήκος διαφόρων
|
||||||
ένα εργαλείο γραμμής εντολών που απαιτεί αρχείο ρυθμίσεων μονάχα για
|
παρόχων νέφους. Είναι ένα εργαλείο γραμμής εντολών που απαιτεί αρχείο
|
||||||
την αυθεντικοποίηση με τους παρόχους νέφους.
|
ρυθμίσεων μονάχα για την αυθεντικοποίηση με τους παρόχους νέφους.
|
||||||
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
@@ -105,7 +112,7 @@
|
|||||||
|
|
||||||
\item \textbf{Σύγκριση με Terraform}:
|
\item \textbf{Σύγκριση με Terraform}:
|
||||||
|
|
||||||
Χρειάζεται την δημιουργία ενός αρχείου πριν την χρήση του και κάθε
|
Χρειάζεται την δημιουργία ενός αρχείου πριν την χρήση του, ενώ κάθε
|
||||||
αλλαγή απαιτεί την τροποποίηση του αρχείου αυτού. Αυτό το καθιστά
|
αλλαγή απαιτεί την τροποποίηση του αρχείου αυτού. Αυτό το καθιστά
|
||||||
λιγότερο ευέλικτο σε σχέση με άλλα εργαλεία. Είναι σχετικά εύκολο στην
|
λιγότερο ευέλικτο σε σχέση με άλλα εργαλεία. Είναι σχετικά εύκολο στην
|
||||||
χρήση όπως τα υπόλοιπα και δύναται να χρησιμοποιήσει τα νέφη όλων των
|
χρήση όπως τα υπόλοιπα και δύναται να χρησιμοποιήσει τα νέφη όλων των
|
||||||
@@ -114,23 +121,81 @@
|
|||||||
|
|
||||||
\item \textbf{Σύγκριση με Libcloud CLI}:
|
\item \textbf{Σύγκριση με Libcloud CLI}:
|
||||||
|
|
||||||
Το δεύτερο πιο πρόσφατο εργαλείο που κάνει χρήση της βιβλιοθήκης
|
Είναι αρκετά ευέλικτο και εύκολο στην χρήση, παρ' όλα αυτά πλέον
|
||||||
libcloud μετά από αυτό που προτείνει η διπλωματική εργασία. Είναι
|
υποστηρίζει μονάχα έναν πάροχο νέφους, ο οποίος δεν αποτελεί δημοφιλή
|
||||||
αρκετά ευέλικτο και εύκολο στην χρήση, παρ' όλα αυτά πλέον υποστηρίζει
|
επιλογή γενικότερα. Θα μπορούσε να επεκταθεί η λειτουργικότητά του,
|
||||||
μονάχα έναν πάροχο νέφους, ο οποίος δεν αποτελεί δημοφιλή επιλογή
|
αλλά έχει να ανανεωθεί από το 2018.
|
||||||
γενικότερα. Θα μπορούσε να επεκταθεί η λειτουργικότητά του αλλά έχει να
|
|
||||||
ανανεωθεί από το 2018.
|
|
||||||
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
Ο χρήστης δύναται κατά την χρήση του SecDep να επιλέξει τις ενέργειες και τα
|
Ο χρήστης δύναται κατά την χρήση του SecDep (μέσω της εκτέλεσης του secdep.py)
|
||||||
χαρακτηριστικά που επιθυμεί για την εικονική μηχανή του. Όλες οι παράμετροι
|
να επιλέξει τις ενέργειες και τα χαρακτηριστικά που επιθυμεί για την εικονική
|
||||||
είναι εύκολα κατανοητές και συνδυάζονται μεταξύ τους για να επιτευχθεί το
|
μηχανή του. Όλες οι παράμετροι είναι εύκολα κατανοητές και συνδυάζονται μεταξύ
|
||||||
επιθυμητό αποτέλεσμα. Υποστηρίζει όλους τους δημοφιλείς παρόχους νέφους και
|
τους για να επιτευχθεί το επιθυμητό αποτέλεσμα. Υποστηρίζει όλους τους
|
||||||
όλες τις καλές πρακτικές ενός εργαλείου γραμμής εντολών όπως ο έλεγχος
|
δημοφιλείς παρόχους νέφους και όλες τις καλές πρακτικές ενός εργαλείου γραμμής
|
||||||
σφαλμάτων κατά την εισαγωγή παραμέτρων. Επιπλέον, μπορεί εύκολα να επεκταθεί η
|
εντολών, όπως ο έλεγχος σφαλμάτων κατά την εισαγωγή παραμέτρων. Επιπλέον,
|
||||||
χρήση του, είτε εισάγοντας έτοιμες εντολές σε αρχεία bash είτε προσθέτοντας
|
μπορεί εύκολα να επεκταθεί η χρήση του, είτε εισάγοντας έτοιμες εντολές σε
|
||||||
νέες ενέργειες στον κώδικά του αφού πρόκειται για ένα αρχείο python.
|
αρχεία bash είτε προσθέτοντας νέες ενέργειες στον κώδικά του, αφού πρόκειται
|
||||||
|
για ένα αρχείο python.
|
||||||
|
|
||||||
|
\begin{savenotes} % by the package footnote because footfullcite did not work inside a tabular
|
||||||
|
\selectfont
|
||||||
|
\begin{table}[!ht]
|
||||||
|
\caption{Σύγκριση εργαλείων δημιουργίας εικονικών μηχανών}
|
||||||
|
\renewcommand{\arraystretch}{1.5}
|
||||||
|
\centering
|
||||||
|
\newcolumntype{C}{>{\centering\arraybackslash}m{3.5cm}}
|
||||||
|
\textgreek{\begin{tabular}{||C|C|C|C||}
|
||||||
|
\hline
|
||||||
|
|
||||||
|
Κριτήρια & Terraform & Libcloud CLI & SecDep \\ [0.5ex]
|
||||||
|
|
||||||
|
\hline\hline
|
||||||
|
|
||||||
|
Ευελιξία κατά την χρήση &
|
||||||
|
|
||||||
|
Όλες οι προδιαγραφές δηλώνονται σε αρχείο κειμένου. &
|
||||||
|
|
||||||
|
Οι παράμετροι επιλέγονται κατά την δημιουργία της εντολής. &
|
||||||
|
|
||||||
|
Οι παράμετροι επιλέγονται κατά την δημιουργία της εντολής. \\
|
||||||
|
|
||||||
|
\hline
|
||||||
|
|
||||||
|
Ευκολία χρήσης &
|
||||||
|
|
||||||
|
Κάθε αλλαγή απαιτεί τροποποίηση του αρχείου προδιαγραφών. &
|
||||||
|
|
||||||
|
Οι παράμετροι είναι εύκολες στην κατανόηση και την χρήση. &
|
||||||
|
|
||||||
|
Οι παράμετροι είναι εύκολες στην κατανόηση και την χρήση. \\
|
||||||
|
|
||||||
|
\hline
|
||||||
|
|
||||||
|
Εύρος υποστήριξης παρόχων &
|
||||||
|
|
||||||
|
Όλοι οι μεγάλοι και μικροί πάροχοι υποστηρίζονται. &
|
||||||
|
|
||||||
|
Μονάχα ένας πάροχος υποστηρίζεται. &
|
||||||
|
|
||||||
|
Υποστηρίζονται όλοι οι μεγάλοι πάροχοι. \\
|
||||||
|
|
||||||
|
\hline
|
||||||
|
|
||||||
|
Επεκτασιμότητα &
|
||||||
|
|
||||||
|
Λόγω της αρχιτεκτονικής του είναι δυσκολότερη η επέκτασή του. &
|
||||||
|
|
||||||
|
Επεκτείνεται εύκολα με τροποποίηση του εκτελέσιμου αρχείου. &
|
||||||
|
|
||||||
|
Επεκτείνεται εύκολα με τροποποίηση του εκτελέσιμου αρχείου. \\
|
||||||
|
|
||||||
|
\hline
|
||||||
|
\end{tabular}}
|
||||||
|
\label{table:vmCreationTools}
|
||||||
|
\renewcommand{\arraystretch}{1}
|
||||||
|
\end{table}
|
||||||
|
\end{savenotes}
|
||||||
|
|
||||||
\section{Αυτοματοποίηση σκλήρυνσης εικονικών μηχανών}
|
\section{Αυτοματοποίηση σκλήρυνσης εικονικών μηχανών}
|
||||||
|
|
||||||
@@ -148,21 +213,28 @@
|
|||||||
\item \textbf{Ευκολία κατά την χρήση}:
|
\item \textbf{Ευκολία κατά την χρήση}:
|
||||||
|
|
||||||
Το εργαλείο πρέπει να μπορεί να χρησιμοποιηθεί εύκολα από έναν χρήστη.
|
Το εργαλείο πρέπει να μπορεί να χρησιμοποιηθεί εύκολα από έναν χρήστη.
|
||||||
Ιδανικά να αρκεί η εκτέλεσή του σε μια εικονική μηχανή χωρίς την ανάγκη
|
Ιδανικά, να αρκεί η εκτέλεσή του σε μια εικονική μηχανή χωρίς την
|
||||||
εγκατάστασης εξαρτήσεων.
|
ανάγκη εγκατάστασης εξαρτήσεων.
|
||||||
|
|
||||||
\item \textbf{Εύρος σκλήρυνσης}:
|
\item \textbf{Εύρος σκλήρυνσης}:
|
||||||
|
|
||||||
Το εργαλείο πρέπει να μπορεί να σκληρύνει την εικονική μηχανή σε
|
Το εργαλείο πρέπει να μπορεί να σκληρύνει την εικονική μηχανή σε
|
||||||
ικανοποιητικό βαθμό και να μην περιορίζεται σε λίγες μονάχα επιλογές.
|
ικανοποιητικό βαθμό και να μην περιορίζεται σε λίγες μονάχα
|
||||||
|
δυνατότητες.
|
||||||
|
|
||||||
|
\item \textbf{Υποστήριξη διαρκούς σκλήρυνσης}:
|
||||||
|
|
||||||
|
Το εργαλείο πρέπει να παρέχει την δυνατότητα διαρκούς σκλήρυνσης,
|
||||||
|
προσφέροντας μηχανισμούς που θα εκτελούνται περιοδικά με σκοπό την
|
||||||
|
διατήρησή της.
|
||||||
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\subsection{Εργαλεία σκλήρυνσης εικονικών μηχανών}
|
\subsection{Εργαλεία σκλήρυνσης εικονικών μηχανών}
|
||||||
|
|
||||||
Τα παρακάτω εργαλεία θα συγκριθούν με το harden. Το δεύτερο εκτελέσιμο αρχείο
|
Τα παρακάτω εργαλεία θα συγκριθούν με το harden. Με άλλα λόγια, το δεύτερο
|
||||||
του εργαλείου SecDep, το οποίο μετά από επιλογή του χρήστη εκτελείται σε μια
|
εκτελέσιμο αρχείο του εργαλείου SecDep, το οποίο μετά από επιλογή του χρήστη
|
||||||
εικονική μηχανή αφότου αυτή δημιουργηθεί.
|
εκτελείται σε μια εικονική μηχανή αφότου αυτή δημιουργηθεί.
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
|
||||||
@@ -174,21 +246,20 @@
|
|||||||
τρόπος λειτουργίας του είναι η εκτέλεσή του ως χρήστης με διαχειριστικά
|
τρόπος λειτουργίας του είναι η εκτέλεσή του ως χρήστης με διαχειριστικά
|
||||||
δικαιώματα στο σύστημα.
|
δικαιώματα στο σύστημα.
|
||||||
|
|
||||||
\clearpage
|
|
||||||
|
|
||||||
\item \textbf{nixarmor} \footfullcite{nixarmor}:
|
\item \textbf{nixarmor} \footfullcite{nixarmor}:
|
||||||
|
|
||||||
Ένα εργαλείο ανοιχτού κώδικα που στεγάζεται στο GitHub και αναπτύχθηκε
|
Το nixarmor, αποτελεί και αυτό ένα εργαλείο ανοιχτού κώδικα, το οποίο
|
||||||
από τον Emir Ozer. Περιέχει διαφορετικά εκτελέσιμα αρχεία για την
|
στεγάζεται στο GitHub και αναπτύχθηκε από τον Emir Ozer. Περιέχει
|
||||||
σκλήρυνση διάφορων διανομών Linux, τα οποία μπορούν να εκτελεστούν ως
|
διαφορετικά εκτελέσιμα αρχεία για την σκλήρυνση διάφορων διανομών
|
||||||
αυτόνομα προγράμματα από τον χρήστη.
|
Linux, τα οποία μπορούν να εκτελεστούν ως αυτόνομα προγράμματα από τον
|
||||||
|
χρήστη.
|
||||||
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\subsection{Σύγκριση με το harden}
|
\subsection{Σύγκριση με τον τομέα σκλήρυνσης VM του harden}
|
||||||
|
|
||||||
Σχετικά με τα δηλωθέντα κριτήρια, το SecDep ικανοποιεί όλους τους παραπάνω
|
Σχετικά με τα δηλωθέντα κριτήρια, το SecDep (μέσω του harden) ικανοποιεί όλους
|
||||||
στόχους.
|
τους παραπάνω στόχους.
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
|
||||||
@@ -198,65 +269,320 @@
|
|||||||
και η ευκολία στην χρήση του το καθιστά ένα εργαλείο που μπορεί να
|
και η ευκολία στην χρήση του το καθιστά ένα εργαλείο που μπορεί να
|
||||||
χρησιμοποιηθεί από έναν χρήστη με μικρή εμπειρία στον κλάδο. Παρ' όλα
|
χρησιμοποιηθεί από έναν χρήστη με μικρή εμπειρία στον κλάδο. Παρ' όλα
|
||||||
αυτά, δεν υποστηρίζει πολλές διανομές και οι εκδόσεις των διανομών που
|
αυτά, δεν υποστηρίζει πολλές διανομές και οι εκδόσεις των διανομών που
|
||||||
υποστηρίζονται μέσω αυτού είναι αρκετό καιρό ξεπερασμένες. Θα μπορούσε
|
υποστηρίζονται μέσω αυτού, είναι αρκετό καιρό ξεπερασμένες. Θα μπορούσε
|
||||||
να βελτιωθεί με μια ανανέωση του πηγαίου του κώδικα αλλά η ανάπτυξή του
|
να βελτιωθεί με μια ανανέωση του πηγαίου του κώδικα αλλά η ανάπτυξή του
|
||||||
φαίνεται να έχει σταματήσει το 2019.
|
φαίνεται να έχει σταματήσει το 2019.
|
||||||
|
|
||||||
\item \textbf{Σύγκριση με το nixarmor}:
|
\item \textbf{Σύγκριση με το nixarmor}:
|
||||||
|
|
||||||
Σε αντίθεση με το JShielder, το nixarmor για να χρησιμοποιηθεί με τον
|
Σε αντίθεση με το JShielder, το nixarmor, για να χρησιμοποιηθεί με τον
|
||||||
ίδιο τρόπο που χρησιμοποιούνται τα υπόλοιπα εργαλεία θα πρέπει να
|
ίδιο τρόπο που χρησιμοποιούνται τα υπόλοιπα εργαλεία, θα πρέπει να
|
||||||
επεκταθεί με την προσθήκη κώδικα που να του επιτρέπει να ξεχωρίζει ποιο
|
επεκταθεί με την προσθήκη κώδικα που να του επιτρέπει να ξεχωρίζει ποιο
|
||||||
είναι το κατάλληλο εκτελέσιμο για την κάθε διανομή. Στην αντίθετη
|
είναι το κατάλληλο εκτελέσιμο για την κάθε διανομή. Αν αγνοήσουμε το
|
||||||
περίπτωση, πάλι η χρήση του είναι εύκολη διότι ο χρήστης μπορεί να
|
μειονέκτημα αυτό, μπορούμε να χαρακτηρίσουμε τη χρήση του εύκολη για
|
||||||
επιλέξει και να εκτελέσει χειροκίνητα ένα από τα εκτελέσιμα αρχεία που
|
χρήστες που έχουν την εμπειρία να διακρίνουν με κάποιο τρόπο τη
|
||||||
περιέχει. Η σκλήρυνση που παρέχει καλύπτει πολλούς τομείς μιας διανομής
|
τρέχουσα διανομή και άρα είναι σε θέση να επιλέξουν και να εκτελέσουν
|
||||||
και μπορεί εύκολα να προστεθούν επιπλέον συναρτήσεις στον κώδικά του.
|
χειροκίνητα ένα από τα εκτελέσιμα αρχεία που το nixarmor περιέχει. Η
|
||||||
Παρ' όλα αυτά, η ανάπτυξή του έχει παύσει από το 2015 και οι
|
σκλήρυνση που παρέχει καλύπτει πολλούς τομείς μιας διανομής και μπορούν
|
||||||
υποστηριζόμενες διανομές του έχουν περιοριστεί σε μονάχα 4.
|
εύκολα να προστεθούν επιπλέον συναρτήσεις στον κώδικά του. Παρ' όλα
|
||||||
|
αυτά, η ανάπτυξή του έχει παύσει από το 2015 και οι υποστηριζόμενες
|
||||||
|
διανομές του έχουν περιοριστεί σε μονάχα 4.
|
||||||
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
Συγκριτικά με τα παραπάνω εργαλεία, το harden υποστηρίζει την ικανότητα
|
Συγκριτικά με τα παραπάνω εργαλεία, το harden υποστηρίζει την ικανότητα
|
||||||
αναγνώρισης της διανομής στην οποία εκτελείται και μπορεί δυναμικά να αλλοιώσει
|
αναγνώρισης της διανομής στην οποία εκτελείται και μπορεί δυναμικά να
|
||||||
την συμπεριφορά του αναλόγως. Οι υποστηριζόμενες διανομές είναι 6 και οι
|
διαμορφώσει την συμπεριφορά του αναλόγως. Οι υποστηριζόμενες διανομές είναι 6
|
||||||
λειτουργίες του αν και σύμφωνα με τα αποτελέσματα του Κεφαλαίου
|
και οι λειτουργίες του, αν και σύμφωνα με τα αποτελέσματα του Κεφαλαίου
|
||||||
\ref{experimentationANDresults} είναι ικανοποιητικές, θα μπορούσαν εύκολα να
|
\ref{experimentationANDresults} είναι ικανοποιητικές, θα μπορούσαν εύκολα να
|
||||||
επεκταθούν με την προσθήκη νέων συναρτήσεων. Επιπλέον, αυτό το ένα εκτελέσιμο,
|
επεκταθούν με την προσθήκη νέων συναρτήσεων. Επιπλέον, αν και το harden
|
||||||
παράγει κατά την εκτέλεσή του δύο ακόμα, τα οποία θα εκτελούνται περιοδικά με
|
αποτελεί ένα εκτελέσιμο, παράγει κατά την εκτέλεσή του δύο ακόμα εκτελέσιμα, τα
|
||||||
σκοπό την αυτόματη ενημέρωση του συστήματος και το κλείσιμο αχρησιμοποίητων
|
οποία μπορούν να εκτελούνται περιοδικά με σκοπό την αυτόματη ενημέρωση του
|
||||||
θυρών.
|
συστήματος και το κλείσιμο αχρησιμοποίητων θυρών. Αυτό σημαίνει πως η σκλήρυνση
|
||||||
|
μπορεί να είναι διαρκής και όχι στατική, εκτελούμενη μόνο μια φορά.
|
||||||
|
|
||||||
|
\begin{savenotes} % by the package footnote because footfullcite did not work inside a tabular
|
||||||
|
\selectfont
|
||||||
|
\begin{table}[!ht]
|
||||||
|
\caption{Σύγκριση εργαλείων σκλήρυνσης εικονικών μηχανών}
|
||||||
|
\renewcommand{\arraystretch}{1.5}
|
||||||
|
\centering
|
||||||
|
\newcolumntype{C}{>{\centering\arraybackslash}m{3.5cm}}
|
||||||
|
\textgreek{\begin{tabular}{||C|C|C|C||}
|
||||||
|
\hline
|
||||||
|
|
||||||
|
Κριτήρια & JShielder & nixarmor & SecDep \\ [0.5ex]
|
||||||
|
|
||||||
|
\hline\hline
|
||||||
|
|
||||||
|
Εύρος υποστήριξης διανομών &
|
||||||
|
|
||||||
|
Υποστηρίζεται μια διανομή με δύο εκδόσεις. &
|
||||||
|
|
||||||
|
Υποστηρίζονται 4 διανομές. &
|
||||||
|
|
||||||
|
Υποστηρίζονται 6 διανομές με πολλαπλές εκδόσεις τους. \\
|
||||||
|
|
||||||
|
\hline
|
||||||
|
|
||||||
|
Ευκολία χρήσης &
|
||||||
|
|
||||||
|
Αρκεί η εκτέλεσή του με διαχειριστικά δικαιώματα. &
|
||||||
|
|
||||||
|
Αρκεί η εκτέλεση ενός εκτελέσιμου αρχείου του με διαχειριστικά δικαιώματα. &
|
||||||
|
|
||||||
|
Αρκεί η εκτέλεσή του με διαχειριστικά δικαιώματα. \\
|
||||||
|
|
||||||
|
\hline
|
||||||
|
|
||||||
|
Εύρος σκλήρυνσης &
|
||||||
|
|
||||||
|
Παρέχεται ικανοποιητικό εύρος σκλήρυνσης, καλύπτοντας πολλούς τομείς. &
|
||||||
|
|
||||||
|
Το εύρος σκλήρυνσης του συστήματος είναι μικρότερο από τα άλλα εργαλεία. &
|
||||||
|
|
||||||
|
Η σκλήρυνση του συστήματος επιτυγχάνεται σε ικανοποιητικό βαθμό. \\
|
||||||
|
|
||||||
|
\hline
|
||||||
|
|
||||||
|
Υποστήριξη διαρκούς σκλήρυνσης &
|
||||||
|
|
||||||
|
Υποστηρίζεται η διαρκής ενημέρωση πακέτων. &
|
||||||
|
|
||||||
|
Υποστηρίζονται οι διαρκείς ενημερώσεις ασφαλείας σε μια διανομή. &
|
||||||
|
|
||||||
|
Υποστηρίζεται η δημιουργία δύο περιοδικά εκτελέσιμων αρχείων για την ενημέρωση
|
||||||
|
των πακέτων κάθε υποστηριζόμενης διανομής και το κλείσιμο των αχρησιμοποίητων
|
||||||
|
θυρών. \\
|
||||||
|
|
||||||
|
\hline
|
||||||
|
\end{tabular}}
|
||||||
|
\label{table:vmHardeningTools}
|
||||||
|
\renewcommand{\arraystretch}{1}
|
||||||
|
\end{table}
|
||||||
|
\end{savenotes}
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
\section{Αυτοματοποίηση εγκατάστασης/σκλήρυνσης του Docker}
|
\section{Αυτοματοποίηση εγκατάστασης/σκλήρυνσης του Docker}
|
||||||
|
|
||||||
|
Για τα εργαλεία αυτοματοποίησης της διαδικασίας εγκατάστασης/σκλήρυνσης του
|
||||||
|
Docker, τα κριτήρια που θα πρέπει να ικανοποιούνται είναι τα παρακάτω:
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
|
||||||
|
\item \textbf{Ευκολία κατά την χρήση}:
|
||||||
|
|
||||||
|
Ιδανικά, θα πρέπει να αρκεί η εκτέλεση του εργαλείου με διαχειριστικά
|
||||||
|
δικαιώματα, δίχως την ανάγκη περαιτέρω ενεργειών από τον χρήστη.
|
||||||
|
|
||||||
|
\item \textbf{Εύρος σκλήρυνσης}:
|
||||||
|
|
||||||
|
Αναμένεται η σκλήρυνση του Docker να επιτευχθεί σε ικανοποιητικό βαθμό,
|
||||||
|
πραγματοποιώντας τις απαραίτητες ρυθμίσεις στον δαίμονά του.
|
||||||
|
|
||||||
|
\item \textbf{Υποστήριξη διαρκούς σκλήρυνσης}:
|
||||||
|
|
||||||
|
Το εργαλείο πρέπει να πραγματοποιεί βήματα που θα διασφαλίσουν την
|
||||||
|
διαρκή σκλήρυνση του Docker ή/και των δοχείων του.
|
||||||
|
|
||||||
|
\item \textbf{Επεκτασιμότητα}:
|
||||||
|
|
||||||
|
Θα πρέπει να μπορεί ένας έμπειρος χρήστης να προσθέσει νέες λειτουργίες
|
||||||
|
με σκοπό την επέκταση των δυνατοτήτων του.
|
||||||
|
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsection{Εργαλεία εγκατάστασης/σκλήρυνσης του Docker}
|
||||||
|
|
||||||
Μια από τις λειτουργίες του εκτελέσιμου harden πέρα από την σκλήρυνση του
|
Μια από τις λειτουργίες του εκτελέσιμου harden πέρα από την σκλήρυνση του
|
||||||
συστήματος, είναι και η αυτόματη εγκατάσταση και σκλήρυνση του Docker. Αυτό
|
συστήματος, είναι και η αυτόματη εγκατάσταση και σκλήρυνση του Docker. Τα
|
||||||
επιτυγχάνεται με την εγκατάσταση μιας τροποποιημένης έκδοσής του, η οποία
|
εργαλεία που αποσκοπούν στην αυτοματοποίηση της διαδικασίας αυτής, τα οποία θα
|
||||||
δύναται να εκτελεστεί από οποιονδήποτε χρήστη του συστήματος, δίχως την ανάγκη
|
συγκριθούν με το harden σε αυτόν τον τομέα, είναι τα παρακάτω:
|
||||||
διαχειριστικών δικαιωμάτων. Έπειτα πραγματοποιείται αντικατάσταση του αρχικού
|
|
||||||
container runtime (runC) με το runsc, από το gVisor. Αυτό, αναπτύχθηκε από την
|
|
||||||
Google και αποτελεί μια ασφαλέστερη επιλογή από το αρχικό, διότι περιορίζει τις
|
|
||||||
κλήσεις του συστήματος (system calls) στις άκρως απαραίτητες για την λειτουργία
|
|
||||||
του Docker. Ο συνδυασμός αυτών των δύο βημάτων έχει ήδη περιορίσει την
|
|
||||||
επιφάνεια επίθεσης σε περίπτωση απόδρασης από ένα δοχείο και έχει μειώσει την
|
|
||||||
πιθανότητα κάτι τέτοιο να συμβεί.
|
|
||||||
|
|
||||||
Επιπροσθέτως, ρυθμίζεται ο δαίμονας του Docker ώστε να εκτελείται με μεγαλύτερη
|
\begin{itemize}
|
||||||
ασφάλεια. Αυτό επιτυγχάνεται χρησιμοποιώντας παραμέτρους όπως
|
|
||||||
\textquote{no-new-privileges} για να μην μπορεί ένα δοχείο να λάβει περισσότερα
|
|
||||||
δικαιώματα στην συνέχεια της εκτέλεσής του, καθώς και ενεργοποιώντας τις
|
|
||||||
δυνατότητες του SELinux εάν αυτό υποστηρίζεται από την εκάστοτε υποκείμενη
|
|
||||||
διανομή του συστήματος. Τέλος, πραγματοποιείται εγκατάσταση της υπηρεσίας σε
|
|
||||||
μορφή δοχείου ονόματι \textquote{watchtower}, η οποία έχει ως στόχο την
|
|
||||||
αυτόματη ενημέρωση των δοχείων που εκτελούνται στο σύστημα.
|
|
||||||
|
|
||||||
\subsection{Καινοτομία του SecDep}
|
\item \textbf{docker-rootless-setup} \footfullcite{docker-rootless-setup}:
|
||||||
|
|
||||||
Δεδομένου ότι πολλές από τις παραπάνω τεχνολογίες είναι σχετικά νέες, δεν
|
Το docker-rootless-setup είναι ένα εργαλείο ανοιχτού κώδικα, το οποίο
|
||||||
υπάρχουν στην αγορά εργαλεία που να έχουν ως κύριο στόχο την αυτόματη εφαρμογή
|
στεγάζεται στο GitHub. Θεωρείται πως ανήκει στην κατηγορία εργαλείων
|
||||||
τους. Τα περισσότερα επικεντρώνονται στην σκλήρυνση των δοχείων και όχι του
|
σκλήρυνσης του Docker διότι αποσκοπεί στην αυτοματοποίηση της
|
||||||
δαίμονα, ενώ όσα επιχειρούν να σκληρύνουν τον δαίμονα έχουν να ανανεωθούν πολύ
|
εγκατάστασης του Rootless Docker. Το αποτέλεσμα μετά την εγκατάστασή
|
||||||
προτού έρθουν στο προσκήνιο οι τεχνολογίες που χρησιμοποιεί το harden.
|
αυτού, είναι να μπορεί πλέον το Docker να λειτουργεί χωρίς την ανάγκη
|
||||||
Επομένως, δεν θα υπήρχε δίκαιη σύγκριση με αυτά. Στον συγκεκριμένο τομέα, το
|
διαχειριστικών δικαιωμάτων, αυξάνοντας έτσι την ασφάλεια του
|
||||||
SecDep προσφέρει μια ολοκληρωμένη λύση, η οποία εκτελεί όλα τα παραπάνω βήματα
|
συστήματος. Για την χρήση του αρκεί μονάχα η εκτέλεσή του στο σύστημα
|
||||||
δίχως την ανάγκη αλληλεπίδρασης ή περαιτέρω ρυθμίσεων από τον χρήστη.
|
που θέλουμε να εγκαταστήσουμε το Rootless Docker. Η επέκτασή του είναι
|
||||||
|
εύκολα εφικτή, μιας και πρόκειται για ένα εκτελέσιμο αρχείο bash.
|
||||||
|
|
||||||
|
\item \textbf{docksec} \footfullcite{docksec}:
|
||||||
|
|
||||||
|
Το docksec είναι ένα ακόμα εργαλείο ανοιχτού κώδικα, το οποίο επιχειρεί
|
||||||
|
να ασφαλίσει τον δαίμονα του Docker. Ο τρόπος με τον οποίο γίνεται
|
||||||
|
αυτό, είναι με την διασφάλιση ορισμένων ενεργειών που συστήνει το
|
||||||
|
docker-bench-security \footfullcite{docker-bench-security}. Το
|
||||||
|
docker-bench-security είναι ένα εργαλείο που στεγάζεται στο GitHub υπό
|
||||||
|
τον επίσημο λογαριασμό της ομάδας ανάπτυξης του Docker. Χρησιμοποιείται
|
||||||
|
για τον έλεγχο των ρυθμίσεων ασφαλείας μιας εγκατάστασης του Docker και
|
||||||
|
παρέχει οδηγίες για την βελτίωσή τους. Το docksec πραγματοποιεί
|
||||||
|
παρόμοιους ελέγχους για την ύπαρξη ορισμένων ρυθμίσεων που προτείνει το
|
||||||
|
docker-bench-security και προσφέρει την δυνατότητα αυτόματης εφαρμογής
|
||||||
|
τους. Αρκεί να εκτελεστεί στο σύστημα που είναι εγκατεστημένο το
|
||||||
|
Docker, ενώ η επέκταση των δυνατοτήτων του πραγματοποιείται το ίδιο
|
||||||
|
εύκολα με τα υπόλοιπα εργαλεία.
|
||||||
|
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsection{Σύγκριση με τον τομέα σκλήρυνσης του Docker μέσω του harden}
|
||||||
|
|
||||||
|
Σε σχέση με τα κριτήρια που πρέπει να ικανοποιούνται, το harden μπορεί και πάλι
|
||||||
|
να τα καλύψει όλα.
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
|
||||||
|
\item \textbf{Σύγκριση με docker-rootless-setup}:
|
||||||
|
|
||||||
|
Όπως το docker-rootless-setup, έτσι και το harden εκτελείται στο
|
||||||
|
σύστημα για το οποίο θέλει να πραγματοποιήσει την εγκατάσταση/σκλήρυνση
|
||||||
|
του Docker. Αυτό που συμβαίνει και στις δύο περιπτώσεις είναι η
|
||||||
|
εγκατάσταση μιας τροποποιημένης έκδοσης του Docker, η οποία δύναται να
|
||||||
|
εκτελεστεί από οποιονδήποτε χρήστη του συστήματος, δίχως την ανάγκη
|
||||||
|
διαχειριστικών δικαιωμάτων. Ωστόσο, το harden υποστηρίζει περισσότερες
|
||||||
|
διανομές από το docker-rootless-setup (που περιορίζεται μόνο σε
|
||||||
|
διανομές βασισμένες στο Debian) και παρέχει περισσότερες δυνατότητες
|
||||||
|
σκλήρυνσης. Πέρα από την εγκατάσταση του Rootless Docker, με το harden
|
||||||
|
πραγματοποιείται αντικατάσταση του αρχικού container runtime (runC) με
|
||||||
|
το runsc, από το gVisor. Αυτό, αναπτύχθηκε από την Google και αποτελεί
|
||||||
|
μια ασφαλέστερη επιλογή από το αρχικό (runC), διότι περιορίζει τις
|
||||||
|
κλήσεις του συστήματος (system calls) στις άκρως απαραίτητες για την
|
||||||
|
λειτουργία του Docker. Ο συνδυασμός αυτών των δύο βημάτων, όχι μόνο
|
||||||
|
περιορίζει την επιφάνεια επίθεσης σε περίπτωση απόδρασης από ένα
|
||||||
|
δοχείο, αλλά μειώνει και την πιθανότητα κάτι τέτοιο να συμβεί.
|
||||||
|
|
||||||
|
\item \textbf{Σύγκριση με docksec}:
|
||||||
|
|
||||||
|
Το docksec, ενώ επιτυγχάνει την σκλήρυνση του δαίμονα του Docker,
|
||||||
|
βασιζόμενο σε οδηγίες του docker-bench-security, περιορίζεται μονάχα σε
|
||||||
|
αυτό. Δεν πραγματοποιεί ούτε την εγκατάσταση του Rootless Docker, ούτε
|
||||||
|
την αντικατάσταση του runC με το runsc. Επιπλέον, δεν υποστηρίζει την
|
||||||
|
αυτόματη ενημέρωση των δοχείων που εκτελούνται στο σύστημα, όπως κάνει
|
||||||
|
το harden. Με την εκτέλεση του harden, πέρα από τα παραπάνω βήματα,
|
||||||
|
ρυθμίζεται ο δαίμονας του Docker ώστε να εκτελείται με μεγαλύτερη
|
||||||
|
ασφάλεια. Αυτό επιτυγχάνεται χρησιμοποιώντας παραμέτρους όπως
|
||||||
|
\textquote{no-new-privileges} για να μην μπορεί ένα δοχείο να λάβει
|
||||||
|
περισσότερα δικαιώματα στην συνέχεια της εκτέλεσής του, καθώς και
|
||||||
|
ενεργοποιώντας τις δυνατότητες του SELinux εάν αυτό υποστηρίζεται από
|
||||||
|
την εκάστοτε υποκείμενη διανομή του συστήματος. Τέλος, πραγματοποιείται
|
||||||
|
εγκατάσταση της υπηρεσίας σε μορφή δοχείου ονόματι
|
||||||
|
\textquote{watchtower}, η οποία έχει ως στόχο την αυτόματη ενημέρωση
|
||||||
|
των δοχείων που εκτελούνται στο σύστημα.
|
||||||
|
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Επομένως, το harden παρέχει μια ολοκληρωμένη λύση για την εγκατάσταση και
|
||||||
|
σκλήρυνση του Docker, η οποία εκτελεί όλα τα παραπάνω βήματα δίχως την ανάγκη
|
||||||
|
αλληλεπίδρασης ή περαιτέρω ρυθμίσεων από τον χρήστη. Υποστηρίζει πολλές
|
||||||
|
διανομές για τις οποίες μπορεί να κατεβάσει τα απαραίτητα πακέτα για την
|
||||||
|
λειτουργία του Rootless Docker και πέρα από την εγκατάσταση αυτού, επιτυγχάνει
|
||||||
|
να σκληρύνει τον δαίμονα του Docker με κατάλληλες ρυθμίσεις και αντικατάσταση
|
||||||
|
του προκαθορισμένου container runtime.
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
\begin{savenotes} % by the package footnote because footfullcite did not work inside a tabular
|
||||||
|
\selectfont
|
||||||
|
\begin{table}[!ht]
|
||||||
|
\caption{Σύγκριση εργαλείων σκλήρυνσης του Docker}
|
||||||
|
\renewcommand{\arraystretch}{1.5}
|
||||||
|
\centering
|
||||||
|
\newcolumntype{C}{>{\centering\arraybackslash}m{3.5cm}}
|
||||||
|
\textgreek{\begin{tabular}{||C|C|C|C||}
|
||||||
|
\hline
|
||||||
|
|
||||||
|
Κριτήρια & docker-rootless-setup & docksec & SecDep \\ [0.5ex]
|
||||||
|
|
||||||
|
\hline\hline
|
||||||
|
|
||||||
|
Ευκολία χρήσης &
|
||||||
|
|
||||||
|
Αρκεί η εκτέλεσή του με διαχειριστικά δικαιώματα. &
|
||||||
|
|
||||||
|
Αρκεί να εκτελεστεί με διαχειριστικά δικαιώματα. &
|
||||||
|
|
||||||
|
Αρκεί η εκτέλεσή του με διαχειριστικά δικαιώματα. \\
|
||||||
|
|
||||||
|
\hline
|
||||||
|
|
||||||
|
Εύρος σκλήρυνσης &
|
||||||
|
|
||||||
|
Περιορίζεται στην εγκατάσταση του Rootless Docker. &
|
||||||
|
|
||||||
|
Περιορίζεται στη σκλήρυνση του Docker μέσω καλύτερων ρυθμίσεων. &
|
||||||
|
|
||||||
|
Καταφέρνει να ρυθμίσει καλύτερα τον δαίμονα, να εγκαταστήσει το Rootless Docker
|
||||||
|
και να αντικαταστήσει το προκαθορισμένο container runtime με ένα ασφαλέστερο.
|
||||||
|
\\
|
||||||
|
|
||||||
|
\hline
|
||||||
|
|
||||||
|
Υποστήριξη διαρκούς σκλήρυνσης &
|
||||||
|
|
||||||
|
Δεν λαμβάνονται βήματα για την διασφάλιση διαρκούς σκλήρυνσης. &
|
||||||
|
|
||||||
|
Μετά την εκτέλεσή του δεν πραγματοποιεί παραπάνω βήματα. &
|
||||||
|
|
||||||
|
Πέρα από την σκλήρυνση του Docker, εγκαθιστά και το watchtower για να
|
||||||
|
διασφαλίσει πως τα δοχεία του συστήματος θα ενημερώνονται διαρκώς. \\
|
||||||
|
|
||||||
|
\hline
|
||||||
|
|
||||||
|
Επεκτασιμότητα &
|
||||||
|
|
||||||
|
Αρκεί η προσθήκη νέων λειτουργιών στο εκτελέσιμο αρχείο του. &
|
||||||
|
|
||||||
|
Αρκεί η προσθήκη νέων λειτουργιών στο εκτελέσιμο αρχείο του. &
|
||||||
|
|
||||||
|
Αρκεί η προσθήκη νέων λειτουργιών στο εκτελέσιμο αρχείο του. \\
|
||||||
|
|
||||||
|
\hline
|
||||||
|
\end{tabular}}
|
||||||
|
\label{table:dockerHardeningTools}
|
||||||
|
\renewcommand{\arraystretch}{1}
|
||||||
|
\end{table}
|
||||||
|
\end{savenotes}
|
||||||
|
|
||||||
|
\section{Συμπεράσματα συγκρίσεων}
|
||||||
|
|
||||||
|
Μετά από τις συγκρίσεις του SecDep με τα προαναφερθέντα εργαλεία, ακολουθώντας
|
||||||
|
τα κριτήρια που έχουν οριστεί για τον κύριο σκοπό του καθενός, μπορούμε να
|
||||||
|
συμπεράνουμε πως το SecDep όχι μόνο υπερτερεί σε σχέση με τα υπόλοιπα, αλλά
|
||||||
|
προσφέρει μια ολοκληρωμένη λύση με τις δυνατότητες όλων των παραπάνω. Παρέχει
|
||||||
|
δηλαδή, λειτουργίες αυτοματοποίησης για την δημιουργία και σκλήρυνση ενός
|
||||||
|
συστήματος νέφους, ειδικά ρυθμισμένο για την ασφαλή εκτέλεση εφαρμογών που
|
||||||
|
προσφέρονται σε μορφή δοχείων.
|
||||||
|
|
||||||
|
Στον τομέα της αυτοματοποίησης δημιουργίας εικονικών μηχανών, με την χρήση της
|
||||||
|
βιβλιοθήκης libcloud, προσφέρεται μια πληθώρα επιλογών για την χρήση νεφών όλων
|
||||||
|
των μεγάλων παρόχων νέφους. Υποστηρίζονται πολλές διανομές, διάφορα μεγέθη
|
||||||
|
εικονικών μηχανών και αρκετές τοποθεσίες. Επιπροσθέτως, ακολουθούνται όλες οι
|
||||||
|
ορθές πρακτικές εργαλείων γραμμής εντολών, όπως ο έλεγχος εγκυρότητας των
|
||||||
|
παραμέτρων και η ευκολία στην κατανόηση της σημασιολογίας και της χρήσης τους.
|
||||||
|
Τέλος, επιτρέπει και την αποδοτική διαχείριση όλων των εικονικών μηχανών που
|
||||||
|
δημιουργήθηκαν μέσω αυτού, κατά μήκος όλων των παρόχων νέφους που υποστηρίζει.
|
||||||
|
|
||||||
|
Σχετικά με την σκλήρυνση των εικονικών μηχανών, το SecDep υποστηρίζει πολλές
|
||||||
|
διανομές, σκληραίνει τα συστήματα σε ικανοποιητικό βαθμό και επιπρόσθετα,
|
||||||
|
προσφέρει μηχανισμούς για την υποστήριξη διαρκούς σκλήρυνσης.
|
||||||
|
|
||||||
|
Για την σκλήρυνση του Docker, δεδομένου ότι πολλές από τις τεχνολογίες που
|
||||||
|
χρησιμοποιεί είναι σχετικά νέες, δεν υπάρχουν στην αγορά εργαλεία που να έχουν
|
||||||
|
ως κύριο στόχο την αυτόματη εφαρμογή τους. Τα περισσότερα επικεντρώνονται στην
|
||||||
|
σκλήρυνση των δοχείων και όχι του δαίμονα, ενώ όσα επιχειρούν να σκληρύνουν τον
|
||||||
|
δαίμονα έχουν να ανανεωθούν πολύ προτού έρθουν στο προσκήνιο οι τεχνολογίες που
|
||||||
|
χρησιμοποιεί το harden.
|
||||||
|
|
||||||
|
Το SecDep παρέχει ένα σύνολο δυνατοτήτων που δεν προσφέρονται από κανένα άλλο
|
||||||
|
αυτοτελές εργαλείο και επιτυγχάνει τον σκοπό του με ευκολία και
|
||||||
|
αποτελεσματικότητα. Για την απόκτηση ίδιου επιπέδου λειτουργιών και
|
||||||
|
αποτελεσμάτων, θα απαιτούνταν η εκτέλεση και η τροποποίηση πολλών ξεχωριστών
|
||||||
|
εργαλείων. Επομένως, μπορεί να θεωρηθεί πως είναι ένα πιο ολοκληρωμένο εργαλείο
|
||||||
|
που όμοιό του δεν υπάρχει ακόμα διαθέσιμο.
|
||||||
|
|||||||
@@ -2,114 +2,26 @@
|
|||||||
|
|
||||||
\noindent Στην παρούσα ενότητα θα αναλυθούν οι τεχνολογίες που χρησιμοποιήθηκαν
|
\noindent Στην παρούσα ενότητα θα αναλυθούν οι τεχνολογίες που χρησιμοποιήθηκαν
|
||||||
για την υλοποίηση του συστήματος, οι αποφάσεις που πάρθηκαν κατά την ανάπτυξή
|
για την υλοποίηση του συστήματος, οι αποφάσεις που πάρθηκαν κατά την ανάπτυξή
|
||||||
του και οι σχεδιαστικές επιλογές που έγιναν. Επίσης, θα πραγματοποιηθεί
|
του και οι σχεδιαστικές επιλογές που πραγματοποιήθηκαν. Επίσης, θα αναλυθεί η
|
||||||
απεικόνιση των συσχετίσεων μεταξύ των συστατικών του συστήματος και θα αναλυθεί
|
αρχιτεκτονική του συστήματος και θα επεξηγηθούν οι λειτουργίες των συστατικών
|
||||||
περαιτέρω η λειτουργία τους.
|
του.
|
||||||
|
|
||||||
\section{Αποφάσεις που πάρθηκαν κατά την ανάπτυξη} \label{developmentDecisions}
|
\section{Μοντέλο ανάπτυξης}
|
||||||
|
|
||||||
Κατά την ανάπτυξη του συστήματος, προκειμένου να επιτευχθούν οι στόχοι που
|
Για την ανάπτυξη του SecDep, ακολουθήθηκε το μοντέλο καταρράκτη. Στο μοντέλο
|
||||||
θέσαμε στην Ενότητα \ref{overcomingDockerDisadvantages} και συγκεκριμένα για
|
αυτό, κάθε στάδιο της δραστηριότητας ανάπτυξης εκτελείται σειριακά. Δηλαδή, για
|
||||||
την επικοινωνία με διάφορους παρόχους νέφους, επιλέχθηκε να γίνει χρήση της
|
την μετάβαση σε κάθε επόμενο στάδιο, απαιτείται η επιτυχής ολοκλήρωση του
|
||||||
βιβλιοθήκης libcloud \footfullcite{libcloud}. Μια από τις δύο επιλογές
|
προηγούμενου. Έτσι και εδώ, ξεκινάμε με την ανάλυση απαιτήσεων, έπειτα
|
||||||
βιβλιοθηκών της Apache \footfullcite{apache} για την επικοινωνία με παρόχους
|
προχωράμε στη σχεδίαση του συστήματος και τέλος φτάνουμε στην υλοποίησή του. Η
|
||||||
νέφους. Συγκριτικά με την βιβλιοθήκη jclouds \footfullcite{jclouds}, η οποία
|
επίδειξη της τελικής μορφής του εργαλείου καλύπτεται στο Κεφάλαιο
|
||||||
σχεδιάστηκε για την γλώσσα Java \footfullcite{java}, η libcloud είναι πιο απλή
|
\ref{installationANDShowcase}, ενώ η αποτίμηση των αποτελεσμάτων εκτέλεσής του,
|
||||||
στην χρήση, αφού είναι σχεδιασμένη για την γλώσσα Python \footfullcite{python}.
|
στο Κεφάλαιο \ref{experimentationANDresults}.
|
||||||
Επιπροσθέτως, η libcloud είναι πιο διαδεδομένη και η γλώσσα python αποτελεί μια
|
|
||||||
πιο ευέλικτη επιλογή για τις ανάγκες του εργαλείου.
|
|
||||||
|
|
||||||
Η ανάγκη για μια βιβλιοθήκη που θα λειτουργεί ως μεσάζοντας μεταξύ του
|
|
||||||
εργαλείου και των παρόχων νέφους, οφείλεται στο γεγονός ότι οι πάροχοι νέφους
|
|
||||||
δεν διαθέτουν ένα κοινό API για την διαχείριση των υποδομών τους. Απεναντίας, ο
|
|
||||||
καθένας από αυτούς διαθέτει το δικό του API, το οποίο χρησιμοποιείται έμμεσα
|
|
||||||
μέσω του πίνακα ελέγχου του, που βρίσκεται στην ιστοσελίδα του, ενός δικού του
|
|
||||||
εργαλείου γραμμής εντολών, ή άμεσα μέσω της βιβλιοθήκης που παρέχει ο ίδιος. Η
|
|
||||||
libcloud αποτελεί μια προσπάθεια δημιουργίας ενός ενιαίου API, το οποίο
|
|
||||||
χρησιμοποιώντας τις ίδιες συναρτήσεις, επιχειρεί να προσκομίσει ίδια
|
|
||||||
αποτελέσματα ανεξαρτήτως του παρόχου νέφους που στοχεύει.
|
|
||||||
|
|
||||||
\clearpage
|
|
||||||
|
|
||||||
Παρ' όλη την προσπάθεια που καταβλήθηκε από την libcloud όμως, για την
|
|
||||||
ενοποίηση αυτή, οι διαφορές στους τρόπους λειτουργίας του κάθε παρόχου αρχίζουν
|
|
||||||
να εμφανίζονται σύντομα κατά την ανάπτυξη. Για το εργαλείο που προτείνει η
|
|
||||||
παρούσα διπλωματική εργασία, χρειάζεται να γίνει χρήση των λειτουργιών
|
|
||||||
\textquote{Compute} της βιβλιοθήκης. Στην αρχική σελίδα της, αναφέρεται
|
|
||||||
υποστήριξη για πάνω από 50 παρόχους. Κατά την σελίδα τεκμηρίωσης
|
|
||||||
\cite{libcloudProviders} για τις λειτουργίες \textquote{Compute}, αναφέρονται
|
|
||||||
48 πάροχοι σε έναν πίνακα ο οποίος αναγράφει την υποστήριξη ή απουσία αυτής,
|
|
||||||
διάφορων συναρτήσεων εικονικών μηχανών. Στις συναρτήσεις αυτές περιλαμβάνονται
|
|
||||||
η δημιουργία εικονικών μηχανών, η εκκίνηση, η παύση, η διαγραφή τους και εν
|
|
||||||
γένει όσες λειτουργίες είναι απαραίτητες για την ολοκληρωμένη λειτουργία του
|
|
||||||
εργαλείου. Από αυτούς τους 48 παρόχους, οι 25 υποστηρίζουν και τις 9
|
|
||||||
συναρτήσεις. Ωστόσο, από αυτούς τους 25 έπρεπε να αφαιρεθούν οι 20 για λόγους
|
|
||||||
όπως η μη ύπαρξη τεκμηρίωσης χρήσης από την libcloud, η μη συνέχιση της
|
|
||||||
λειτουργίας τους, η έλλειψη πληροφοριών τιμής ή δοκιμαστικής περιόδου για τις
|
|
||||||
υπηρεσίες τους και η αδυναμία δημιουργίας λογαριασμού στην επίσημη σελίδα τους.
|
|
||||||
Επομένως, υπάρχουν εν τέλει 5 πάροχοι νέφους που δύναται να χρησιμοποιηθούν
|
|
||||||
υποστηρίζοντας όλες τις πιθανές λειτουργίες διαχείρισης εικονικών μηχανών.
|
|
||||||
Τέλος, από αυτούς τους 5, επιλέχθηκαν για επίσημη υποστήριξη από το εργαλείο
|
|
||||||
που προτείνεται στην παρούσα διπλωματική εργασία, τα τρία μεγαλύτερα ονόματα
|
|
||||||
του χώρου, οι Amazon, Google και Microsoft. Οι άλλοι δύο είτε δεν παρείχαν
|
|
||||||
δοκιμαστική περίοδο των υπηρεσιών τους, είτε δεν υπήρχε εμπιστοσύνη ως προς την
|
|
||||||
ποιότητα των υπηρεσιών αυτών.
|
|
||||||
|
|
||||||
Παρακάτω θα διαπιστώσουμε πως ακόμα και με την χρήση της βιβλιοθήκης libcloud
|
|
||||||
και την επίσημη υποστήριξη όλων των λειτουργιών για κάθε πάροχο, υπήρχε η
|
|
||||||
ανάγκη χρήσης της επίσημης βιβλιοθήκης της Azure για την δημιουργία Resource
|
|
||||||
Group \footfullcite{azure-mgmt-resource} και Virtual Network
|
|
||||||
\footfullcite{azure-mgmt-network} διότι αυτές οι λειτουργίες δεν υποστηρίζονται
|
|
||||||
μέσω της libcloud. Επιπροσθέτως, δίχως την υποστήριξη των λειτουργιών αυτών, ο
|
|
||||||
χρήστης θα ήταν υποχρεωμένος να δημιουργεί αυτούς τους πόρους χειροκίνητα ή να
|
|
||||||
είναι περιορισμένος μονάχα σε μια γεωγραφική τοποθεσία. Οι δύο τελευταίες
|
|
||||||
επιλογές πάνε ενάντια σε έναν από τους βασικότερους στόχους του εργαλείου. Την
|
|
||||||
ομοιόμορφη λειτουργία για κάθε πάροχο νέφους που υποστηρίζεται.
|
|
||||||
|
|
||||||
\clearpage
|
|
||||||
|
|
||||||
Πέρα από την απόφαση για την χρήση της libcloud και την γλώσσα προγραμματισμού
|
|
||||||
Python, πάρθηκε επίσης η απόφαση για την υποστήριξη των 6 δημοφιλέστερων
|
|
||||||
επιλογών για λειτουργικά συστήματα Linux σε περιβάλλοντα διακομιστών. Οι
|
|
||||||
διανομές αυτές υποστηρίζονται και για τους 3 παρόχους νέφους και κάθε μια από
|
|
||||||
αυτές περιλαμβάνει διαφορετικές εκδόσεις της κάθε διανομής. Αυτές είναι οι εξής
|
|
||||||
για κάθε πάροχο:
|
|
||||||
|
|
||||||
\begin{savenotes}
|
|
||||||
\selectfont
|
|
||||||
\begin{table}[!ht]
|
|
||||||
\caption{Υποστηριζόμενες εκδόσεις διανομών για κάθε πάροχο}
|
|
||||||
\renewcommand{\arraystretch}{1.5}
|
|
||||||
\centering
|
|
||||||
\textgreek{\begin{tabular}{lc|c|c|c|}
|
|
||||||
\cline{3-5}
|
|
||||||
& & \multicolumn{3}{c|}{Πάροχοι} \\ \cline{3-5}
|
|
||||||
& & AWS & Azure & GCE \\ \hline
|
|
||||||
\multicolumn{1}{|c|}{\multirow{6}{*}{\rotatebox{90}{Διανομές}}} & Ubuntu \footfullcite{ubuntu} & 22.04, 22.10 & 22.04, 22.10 & Όλες \\ \cline{2-5}
|
|
||||||
\multicolumn{1}{|c|}{} & Debian \footfullcite{debian} & 10, 11 & 10, 11 & Όλες \\ \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|}{} & 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
|
|
||||||
\end{tabular}}
|
|
||||||
\label{table:supportedDistributions}
|
|
||||||
\renewcommand{\arraystretch}{1}
|
|
||||||
\end{table}
|
|
||||||
\end{savenotes}
|
|
||||||
|
|
||||||
Ο λόγος που οι εκδόσεις είναι συγκεκριμένες για τους παρόχους AWS και Azure,
|
|
||||||
είναι διότι ο αριθμός των διαθέσιμων διανομών και εκδόσεών τους είναι
|
|
||||||
υπερβολικά μεγάλος και κατά την εκτέλεση της λειτουργίας δημιουργίας λίστας
|
|
||||||
τους ή κατά τον έλεγχο της ορθότητας δεδομένων που εισάγει ο χρήστης, το
|
|
||||||
πρόγραμμα θα καθυστερούσε σε τεράστιο βαθμό να ολοκληρωθεί.
|
|
||||||
|
|
||||||
\clearpage
|
|
||||||
|
|
||||||
\section{Απαιτήσεις από το εργαλείο} \label{toolRequirements}
|
\section{Απαιτήσεις από το εργαλείο} \label{toolRequirements}
|
||||||
|
|
||||||
Κατά την ανάπτυξη του εργαλείου, έγινε μια προσπάθεια να καλυφθούν ορισμένες
|
Κατά την ανάπτυξη του εργαλείου, έγινε μια προσπάθεια να καλυφθούν ορισμένες
|
||||||
βασικές απαιτήσεις που θα έπρεπε να ικανοποιεί. Όπως όλα τα εργαλεία, έτσι και
|
βασικές απαιτήσεις που θα έπρεπε αυτό να ικανοποιεί. Όπως όλα τα εργαλεία, έτσι
|
||||||
αυτό έχει έναν σκοπό να εκπληρώσει. Ο σκοπός αυτός είναι η διευκόλυνση του
|
και αυτό έχει έναν σκοπό να εκπληρώσει. Ο σκοπός αυτός είναι η διευκόλυνση του
|
||||||
χρήστη ή ενός οργανισμού, στην εγκατάσταση και διαμόρφωση με αυτοματοποιημένο
|
χρήστη ή ενός οργανισμού, στην εγκατάσταση και διαμόρφωση με αυτοματοποιημένο
|
||||||
τρόπο ενός ασφαλούς, κατανεμημένου περιβάλλοντος για την εγκατάσταση και
|
τρόπο ενός ασφαλούς, κατανεμημένου περιβάλλοντος για την εγκατάσταση και
|
||||||
λειτουργία μιας εφαρμογής μικρο-υπηρεσιών. Για να γίνει αυτό πραγματικότητα,
|
λειτουργία μιας εφαρμογής μικρο-υπηρεσιών. Για να γίνει αυτό πραγματικότητα,
|
||||||
@@ -119,86 +31,87 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
|
|||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την χρήση των 3 μεγαλύτερων
|
\item Το εργαλείο πρέπει για κάθε πάροχο να υποστηρίζει την λειτουργία
|
||||||
ονομάτων στον κλάδο της νεφο-υπολογιστικής}
|
εμφάνισης λίστας των διαθέσιμων μεγεθών εικονικής μηχανής
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την χρήση των 6
|
\item Το εργαλείο πρέπει για κάθε πάροχο να υποστηρίζει την λειτουργία
|
||||||
δημοφιλέστερων διανομών για περιβάλλον διακομιστή}
|
εμφάνισης λίστας των διαθέσιμων τοποθεσιών
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να λειτουργεί μέσω της γραμμής εντολών
|
\item Το εργαλείο πρέπει για κάθε πάροχο να υποστηρίζει την λειτουργία
|
||||||
ώστε να μπορεί να αυτοματοποιηθεί περαιτέρω η εκτέλεση των εντολών του}
|
εμφάνισης λίστας των διαθέσιμων διανομών
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει για κάθε πάροχο να υποστηρίζει την
|
\item Το εργαλείο πρέπει για κάθε εντολή που επιδέχεται παραμέτρους, να
|
||||||
λειτουργία εμφάνισης λίστας των διαθέσιμων μεγεθών εικονικής μηχανής}
|
ρωτάει τον χρήστη για κάθε παράμετρο που δεν δόθηκε
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει για κάθε πάροχο να υποστηρίζει την
|
\item Το εργαλείο πρέπει να ελέγχει την εγκυρότητα κάθε παραμέτρου που
|
||||||
λειτουργία εμφάνισης λίστας των διαθέσιμων τοποθεσιών}
|
δίνεται από τον χρήστη
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει για κάθε πάροχο να υποστηρίζει την
|
\item Το εργαλείο πρέπει να υποστηρίζει την λειτουργία δημιουργίας
|
||||||
λειτουργία εμφάνισης λίστας των διαθέσιμων διανομών}
|
εικονικής μηχανής
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει για κάθε εντολή που επιδέχεται
|
\item Το εργαλείο πρέπει να υποστηρίζει την λειτουργία παύσης εικονικής
|
||||||
παραμέτρους, να ρωτάει τον χρήστη για κάθε παράμετρο που δεν δόθηκε}
|
μηχανής
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να ελέγχει την εγκυρότητα κάθε παραμέτρου
|
\item Το εργαλείο πρέπει να υποστηρίζει την λειτουργία εκκίνησης εικονικής
|
||||||
που δίνεται από τον χρήστη}
|
μηχανής
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την λειτουργία δημιουργίας
|
\item Το εργαλείο πρέπει να υποστηρίζει την λειτουργία επανεκκίνησης
|
||||||
εικονικής μηχανής}
|
εικονικής μηχανής
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την λειτουργία παύσης
|
\item Το εργαλείο πρέπει να υποστηρίζει την λειτουργία διαγραφής εικονικής
|
||||||
εικονικής μηχανής}
|
μηχανής
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την λειτουργία εκκίνησης
|
\item Το εργαλείο πρέπει να υποστηρίζει την σύνδεση με SSH ακόμα και χωρίς
|
||||||
εικονικής μηχανής}
|
να διαθέτει ο χρήστης πελάτη SSH
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την λειτουργία
|
\item Το εργαλείο πρέπει να υποστηρίζει την λειτουργία εμφάνισης όλων των
|
||||||
επανεκκίνησης εικονικής μηχανής}
|
εικονικών μηχανών που διαχειρίζεται
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την λειτουργία διαγραφής
|
\item Το εργαλείο πρέπει να εμφανίζει μηνύματα λάθους σε περίπτωση που κάτι
|
||||||
εικονικής μηχανής}
|
πάει στραβά κατά την εκτέλεση
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την σύνδεση με SSH ακόμα
|
\item Το εργαλείο πρέπει να υποστηρίζει την διαδραστική διαμόρφωση του
|
||||||
και χωρίς να διαθέτει ο χρήστης πελάτη SSH}
|
αρχείου ρυθμίσεών του
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την λειτουργία εμφάνισης
|
\item Το εργαλείο πρέπει να υποστηρίζει την εκτέλεση εξωτερικού εκτελέσιμου
|
||||||
όλων των εικονικών μηχανών που διαχειρίζεται}
|
αρχείου στις εικονικές μηχανές με σκοπό την σκλήρυνσή τους
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να εμφανίζει μηνύματα λάθους σε περίπτωση
|
\item Το εργαλείο πρέπει να εγκαθιστά και να σκληραίνει και το Docker πέρα
|
||||||
που κάτι πάει στραβά κατά την εκτέλεση}
|
από το λειτουργικό σύστημα
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την διαδραστική διαμόρφωση
|
\item Το εργαλείο θα ενημερώνει περιοδικά τα πακέτα της εικονικής μηχανής
|
||||||
του αρχείου ρυθμίσεων του}
|
και θα κλείνει αχρησιμοποίητες θύρες
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την εκτέλεση εξωτερικού
|
\item Το εργαλείο πρέπει να υποστηρίζει την εγκατάσταση δοχείων στις
|
||||||
εκτελέσιμου αρχείου στις εικονικές μηχανές με σκοπό την σκλήρυνσή τους}
|
εικονικές μηχανές που δημιουργεί, κατά την διάρκεια της σκλήρυνσής
|
||||||
|
τους, μέσω ενός αρχείου docker-compose.yml που θα βρίσκεται στον ίδιο
|
||||||
|
φάκελο με το εκτελέσιμο αρχείο του
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την εγκατάσταση δοχείων
|
\item Το εργαλείο πρέπει να μπορεί να εγκαθιστά δοχεία στις εικονικές
|
||||||
στις εικονικές μηχανές που δημιουργεί, κατά την διάρκεια της
|
μηχανές, κατά την διάρκεια σκλήρυνσής τους, μέσω παραμέτρων που έχει
|
||||||
σκλήρυνσής τους, μέσω ενός αρχείου docker-compose.yml που θα
|
εισάγει ο χρήστης
|
||||||
βρίσκεται στον ίδιο φάκελο με το εκτελέσιμο αρχείο του}
|
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να διαθέτει λειτουργία εμφάνισης όλων των
|
\item Το εργαλείο πρέπει να διαθέτει λειτουργία εμφάνισης όλων των
|
||||||
διαθέσιμων εντολών του}
|
διαθέσιμων εντολών του
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να διαθέτει λειτουργία εμφάνισης
|
\item Το εργαλείο πρέπει να διαθέτει λειτουργία εμφάνισης συμπλήρωσης
|
||||||
συμπλήρωσης εντολών και για τα 3 πιο δημοφιλή κελύφη εντολών}
|
εντολών και για τα 3 πιο δημοφιλή κελύφη εντολών (Bash, Zsh, tcsh)
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να διαθέτει λειτουργία εμφάνισης της
|
\item Το εργαλείο πρέπει να διαθέτει λειτουργία εμφάνισης της έκδοσής του
|
||||||
έκδοσης του}
|
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να διαθέτει παράμετρο για την προσπέραση
|
\item Το εργαλείο πρέπει να διαθέτει παράμετρο για την προσπέραση
|
||||||
του βήματος επιβεβαίωσης κατά την δημιουργία εικονικών μηχανών}
|
(bypassing) του βήματος επιβεβαίωσης κατά την δημιουργία εικονικών
|
||||||
|
μηχανών
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να διαθέτει μηχανισμό συγκεκριμενοποίησης
|
\item Το εργαλείο πρέπει να διαθέτει μηχανισμό συγκεκριμενοποίησης περιοχής
|
||||||
περιοχής για τον πάροχο AWS}
|
για τον πάροχο AWS
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να διαθέτει μηχανισμό επιλογής θύρας για
|
\item Το εργαλείο πρέπει να διαθέτει μηχανισμό επιλογής θύρας για την
|
||||||
την λειτουργία σύνδεσης μέσω SSH}
|
λειτουργία σύνδεσης μέσω SSH
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την αρχικοποίηση μονάχα
|
\item Το εργαλείο πρέπει να υποστηρίζει την αρχικοποίηση μονάχα ενός
|
||||||
ενός παρόχου δίχως την συμπλήρωση κενών πεδίων για τους υπόλοιπους
|
παρόχου δίχως την συμπλήρωση κενών πεδίων για τους υπόλοιπους από τον
|
||||||
από τον χρήστη}
|
χρήστη
|
||||||
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
@@ -206,36 +119,39 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
|
|||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να είναι εύκολο στην χρήση για έναν χρήστη
|
\item Το εργαλείο πρέπει να υποστηρίζει την χρήση των 3 μεγαλύτερων
|
||||||
που έχει χρησιμοποιήσει προγράμματα γραμμής εντολών στο παρελθόν}
|
ονομάτων στον κλάδο της νεφο-υπολογιστικής (Amazon, Google, Microsoft)
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να δημιουργεί ξεχωριστό αρχείο για τις
|
\item Το εργαλείο πρέπει να υποστηρίζει την χρήση των 6 δημοφιλέστερων
|
||||||
ρυθμίσεις του στον ίδιο φάκελο που βρίσκεται και το εκτελέσιμο αρχείο
|
διανομών για περιβάλλον διακομιστή (Debian, Ubuntu, Red Hat Enterprise
|
||||||
του}
|
Linux, Fedora, CentOS, openSUSE Leap)
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να κρατάει αρχείο των διευθύνσεων IP των
|
\item Το εργαλείο πρέπει να λειτουργεί μέσω της γραμμής εντολών ώστε να
|
||||||
εικονικών μηχανών που δημιουργεί ώστε να μπορούν να διαμορφωθούν
|
μπορεί να αυτοματοποιηθεί περαιτέρω η εκτέλεση των εντολών του
|
||||||
περαιτέρω εάν ο χρήστης επιθυμεί να χρησιμοποιήσει άλλα προγράμματα
|
|
||||||
όπως το Ansible}
|
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να διαθέτει ένα μοτίβο εντολών που να
|
\item Το εργαλείο πρέπει να είναι εύκολο στην χρήση για έναν χρήστη που
|
||||||
μπορεί ο χρήστης να καταλαβαίνει και να διαμορφώνει ανάλογα με τις
|
έχει χρησιμοποιήσει προγράμματα γραμμής εντολών στο παρελθόν
|
||||||
ανάγκες του}
|
|
||||||
|
|
||||||
\item \textbf{Το εργαλείο πρέπει να δημιουργεί κλειδιά SSH σε περίπτωση που
|
\item Το εργαλείο θα πρέπει να είναι αξιόπιστο, δηλαδή κάθε εκτέλεση να
|
||||||
δεν υπάρχουν, στον ίδιο φάκελο με το εκτελέσιμο αρχείο του}
|
επιφέρει τα αναμενόμενα αποτελέσματα
|
||||||
|
|
||||||
\item \textbf{Το δεύτερο εκτελέσιμο αρχείο του εργαλείου πρέπει να
|
\item Το εργαλείο πρέπει να δημιουργεί ξεχωριστό αρχείο για τις ρυθμίσεις
|
||||||
εγκαθιστά και να σκληραίνει και το Docker πέρα από το λειτουργικό
|
του στον ίδιο φάκελο που βρίσκεται και το εκτελέσιμο αρχείο του
|
||||||
σύστημα}
|
|
||||||
|
|
||||||
\item \textbf{Το δεύτερο εκτελέσιμο αρχείο του εργαλείου πρέπει να
|
\item Το εργαλείο πρέπει να κρατάει αρχείο των διευθύνσεων IP των εικονικών
|
||||||
δημιουργεί στην εικονική μηχανή δύο επιπλέον εκτελέσιμα αρχεία για
|
μηχανών που δημιουργεί ώστε να μπορούν να διαμορφωθούν περαιτέρω εάν ο
|
||||||
περιοδική ενημέρωση των πακέτων και κλείσιμο αχρησιμοποίητων θυρών}
|
χρήστης επιθυμεί να χρησιμοποιήσει άλλα προγράμματα, όπως το Ansible
|
||||||
|
|
||||||
\item \textbf{Το δεύτερο εκτελέσιμο αρχείο του εργαλείου πρέπει να
|
\item Το εργαλείο πρέπει να διαθέτει ένα μοτίβο εντολών που να μπορεί ο
|
||||||
εγκαθιστά προγράμματα για την περαιτέρω σκλήρυνση του Docker και την
|
χρήστης να καταλαβαίνει και να διαμορφώνει ανάλογα με τις ανάγκες του
|
||||||
διευκόλυνση του χρήστη κατά την εγκατάσταση δοχείων}
|
|
||||||
|
\item Το εργαλείο πρέπει να δημιουργεί κλειδιά SSH σε περίπτωση που δεν
|
||||||
|
υπάρχουν, στον ίδιο φάκελο με το εκτελέσιμο αρχείο του
|
||||||
|
|
||||||
|
\item Το εργαλείο θα πρέπει να εγκαθιστά τις υπηρεσίες watchtower και
|
||||||
|
portainer \footfullcite{portainer} για την περαιτέρω σκλήρυνση του
|
||||||
|
Docker και την διευκόλυνση του χρήστη κατά την εγκατάσταση δοχείων
|
||||||
|
αντίστοιχα
|
||||||
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
@@ -251,14 +167,15 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
|
|||||||
\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}. Το
|
(flowchart) για το SecDep που απεικονίζεται στο Σχήμα
|
||||||
διάγραμμα ροής, απεικονίζει την ροή των εντολών που μπορεί να επιλεγούν από τον
|
\ref{fig:flowchartDiagram}. Το διάγραμμα ροής αυτό, απεικονίζει την ροή των
|
||||||
χρήστη κατά την εκτέλεση του προγράμματος.
|
εντολών που μπορεί να επιλεγούν από τον χρήστη κατά την εκτέλεση του
|
||||||
|
προγράμματος.
|
||||||
|
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\begin{figure}[!ht]
|
\begin{figure}[!ht]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width = 0.9\textwidth]{Figures/Diagrams/secdep-use-case-diagram.jpg}
|
\includegraphics[width = 0.8\textwidth]{Figures/Diagrams/secdep-use-case-diagram.jpg}
|
||||||
\captionof{figure}{Διάγραμμα περιπτώσεων χρήσης}
|
\captionof{figure}{Διάγραμμα περιπτώσεων χρήσης}
|
||||||
\label{fig:useCaseDiagram}
|
\label{fig:useCaseDiagram}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
@@ -275,8 +192,8 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
|
|||||||
\begin{center}
|
\begin{center}
|
||||||
\begin{figure}[!ht]
|
\begin{figure}[!ht]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width = 1.0\textwidth]{Figures/Diagrams/secdep-flowchart-diagram.png}
|
\includegraphics[width = 1.4\textwidth]{Figures/Diagrams/flowchart/1secdep-flowchart-diagram.png}
|
||||||
\captionof{figure}{Διάγραμμα ροής}
|
\captionof{figure}{Διάγραμμα ροής - Γενικό}
|
||||||
\label{fig:flowchartDiagram}
|
\label{fig:flowchartDiagram}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
\vspace*{-30pt}
|
\vspace*{-30pt}
|
||||||
@@ -284,20 +201,140 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
|
|||||||
|
|
||||||
\end{landscape}
|
\end{landscape}
|
||||||
|
|
||||||
|
\begin{landscape}
|
||||||
|
\thispagestyle{empty}
|
||||||
|
|
||||||
|
\noindent Λόγω της πολυπλοκότητας του Σχήματος \ref{fig:flowchartDiagram}, αυτό
|
||||||
|
διασπάστηκε σε 6 ξεχωριστά διαγράμματα ροής, για τις εξής λειτουργίες του
|
||||||
|
SecDep:
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
|
||||||
|
\item Εκτέλεση απλών μεθόδων
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{figure}[!ht]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width = 1.3\textwidth]{Figures/Diagrams/flowchart/2secdep-flowchart-diagramSimpleFunctions.png}
|
||||||
|
\captionof{figure}{Διάγραμμα ροής - Απλές λειτουργίες}
|
||||||
|
\label{fig:flowchartDiagram1}
|
||||||
|
\end{figure}
|
||||||
|
\vspace*{-30pt}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\end{itemize}
|
||||||
|
\end{landscape}
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
|
||||||
|
\item Απόκτηση λίστας εικονικών μηχανών
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{figure}[!ht]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width = 0.5\textwidth]{Figures/Diagrams/flowchart/3secdep-flowchart-ListVMs.png}
|
||||||
|
\captionof{figure}{Διάγραμμα ροής - Λίστα εικονικών μηχανών}
|
||||||
|
\label{fig:flowchartDiagram2}
|
||||||
|
\end{figure}
|
||||||
|
\vspace*{-30pt}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
|
||||||
|
\item Εκτέλεση ενέργειας σε εικονική μηχανή
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{figure}[!ht]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width = 0.55\textwidth]{Figures/Diagrams/flowchart/4secdep-flowchart-ActionOnVM.png}
|
||||||
|
\captionof{figure}{Διάγραμμα ροής - Ενέργεια σε εικονική μηχανή}
|
||||||
|
\label{fig:flowchartDiagram3}
|
||||||
|
\end{figure}
|
||||||
|
\vspace*{-30pt}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
|
||||||
|
\item Σύνδεση SSH σε εικονική μηχανή
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{figure}[!ht]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width = 0.6\textwidth]{Figures/Diagrams/flowchart/5secdep-flowchart-SSHToVM.png}
|
||||||
|
\captionof{figure}{Διάγραμμα ροής - Σύνδεση SSH σε εικονική μηχανή}
|
||||||
|
\label{fig:flowchartDiagram4}
|
||||||
|
\end{figure}
|
||||||
|
\vspace*{-30pt}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
|
||||||
|
\item Απόκτηση πληροφοριών πόρων παρόχου
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{figure}[!ht]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width = 0.35\textwidth]{Figures/Diagrams/flowchart/6secdep-flowchart-ResourceInfo.png}
|
||||||
|
\captionof{figure}{Διάγραμμα ροής - Απόκτηση πληροφοριών πόρων παρόχου}
|
||||||
|
\label{fig:flowchartDiagram5}
|
||||||
|
\end{figure}
|
||||||
|
\vspace*{-30pt}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
\begin{landscape}
|
||||||
|
\thispagestyle{empty}
|
||||||
|
\begin{itemize}
|
||||||
|
|
||||||
|
\item Δημιουργία εικονικής μηχανής
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{figure}[!ht]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width = 0.7\textwidth]{Figures/Diagrams/flowchart/7secdep-flowchart-CreateVM.png}
|
||||||
|
\captionof{figure}{Διάγραμμα ροής - Δημιουργία εικονικής μηχανής}
|
||||||
|
\label{fig:flowchartDiagram6}
|
||||||
|
\end{figure}
|
||||||
|
\vspace*{-30pt}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\end{itemize}
|
||||||
|
\end{landscape}
|
||||||
|
\clearpage
|
||||||
|
|
||||||
Ουσιαστικά, κατά την πραγματική χρήση του SecDep υπάρχουν πάντοτε δύο οντότητες
|
Ουσιαστικά, κατά την πραγματική χρήση του SecDep υπάρχουν πάντοτε δύο οντότητες
|
||||||
που αλληλεπιδρούν μεταξύ τους. Ο χρήστης και ο πάροχος νέφους. Ο χρήστης μπορεί
|
που αλληλεπιδρούν μεταξύ τους. Ο χρήστης και ο πάροχος νέφους. Ο χρήστης μπορεί
|
||||||
να ζητήσει πληροφορίες για διαθέσιμους πόρους όπως οι εικονικές του μηχανές ή
|
να ζητήσει πληροφορίες για διαθέσιμους πόρους, όπως οι εικονικές του μηχανές, ή
|
||||||
τα συστατικά που έχει στην διάθεσή του για την δημιουργία τους όπως οι
|
τα συστατικά που έχει στην διάθεσή του για την δημιουργία τους, όπως οι
|
||||||
διανομές, τα μεγέθη και οι τοποθεσίες τους. Αυτή η αλληλεπίδραση μεταξύ του
|
διανομές, τα μεγέθη και οι τοποθεσίες τους. Αυτή η αλληλεπίδραση μεταξύ του
|
||||||
χρήστη και του παρόχου νέφους, απεικονίζεται στο Σχήμα
|
χρήστη και του παρόχου νέφους, απεικονίζεται καλύτερα στο Σχήμα
|
||||||
\ref{fig:sequenceDiagram}, το οποίο δημιουργήθηκε με το εργαλείο
|
\ref{fig:sequenceDiagram}, το οποίο δημιουργήθηκε με το εργαλείο
|
||||||
\textquote{mermaid}.
|
\textquote{mermaid}. Πρόκειται για ένα διάγραμμα ακολουθίας (sequence diagram),
|
||||||
|
στο οποίο απεικονίζεται η αλληλεπίδραση του χρήστη με τον πάροχο νέφους μέσω
|
||||||
|
του SecDep, κατά την δημιουργία μιας εικονικής μηχανής.
|
||||||
|
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\begin{figure}[!ht]
|
\begin{figure}[!ht]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width = .9\textwidth]{Figures/Diagrams/secdep-sequence-diagram.png}
|
\includegraphics[width = 1\textwidth]{Figures/Diagrams/secdep-sequence-diagram.png}
|
||||||
\captionof{figure}{Διάγραμμα αλληλεπίδρασης χρήστη - παρόχου νέφους}
|
\captionof{figure}{Διάγραμμα ακολουθίας για την δημιουργία εικονικής μηχανής}
|
||||||
\label{fig:sequenceDiagram}
|
\label{fig:sequenceDiagram}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
\vspace*{-30pt}
|
\vspace*{-30pt}
|
||||||
@@ -366,8 +403,169 @@ pydeps -T png --cluster --include-missing --max-bacon=1 --noshow --reverse --ran
|
|||||||
\vspace*{-30pt}
|
\vspace*{-30pt}
|
||||||
\end{center}
|
\end{center}
|
||||||
|
|
||||||
|
\noindent Οι παραπάνω βιβλιοθήκες, αποτελούν τους πυλώνες του SecDep. Κάθε μια
|
||||||
|
από αυτές, εξειδικεύεται σε διαφορετικούς τομείς και χρησιμοποιείται για την
|
||||||
|
κάλυψη διαφόρων λειτουργιών του SecDep. Με την σειρά που απεικονίζονται, έχουν
|
||||||
|
τις εξής αρμοδιότητες:
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
|
||||||
|
\item \textbf{azure}:
|
||||||
|
|
||||||
|
Η βιβλιοθήκη της azure, χρησιμοποιείται για την επικοινωνία και
|
||||||
|
αυθεντικοποίηση με τον πάροχο νέφους Azure. Ο λόγος που χρειάζεται να
|
||||||
|
χρησιμοποιηθεί συνδυαστικά με την libcloud, είναι για επιτύχουμε την
|
||||||
|
ομοιόμορφη συμπεριφορά του εργαλείου κατά μήκος όλων των παρόχων που
|
||||||
|
αυτό υποστηρίζει. Συγκεκριμένα, την χρειαζόμαστε για την επίτευξη των
|
||||||
|
λειτουργιών δημιουργίας Resource Group και Virtual Network, καθώς αυτές
|
||||||
|
λειτουργίες δεν υποστηρίζονται από την libcloud την παρούσα στιγμή.
|
||||||
|
|
||||||
|
\item \textbf{dotenv}:
|
||||||
|
|
||||||
|
Η βιβλιοθήκη dotenv \footfullcite{dotenv} χρησιμοποιείται για την
|
||||||
|
ανάγνωση αρχείων \textquote{.env}. Το SecDep κάνει χρήση ενός αρχείου
|
||||||
|
\textquote{.env}, στο οποίο δηλώνονται οι τιμές που χρειάζεται για την
|
||||||
|
αυθεντικοποίηση με τους παρόχους νέφους.
|
||||||
|
|
||||||
|
\item \textbf{libcloud}:
|
||||||
|
|
||||||
|
Η βιβλιοθήκη libcloud είναι υπεύθυνη για την αυθεντικοποίηση με τους
|
||||||
|
παρόχους νέφους, με σκοπό την εκτέλεση διαφόρων λειτουργιών σχετικά με
|
||||||
|
τις εικονικές μηχανές του καθενός. Μας επιτρέπει να δημιουργούμε και να
|
||||||
|
διαχειριζόμαστε εικονικές μηχανές, καθώς και να λαμβάνουμε πληροφορίες
|
||||||
|
για πόρους του κάθε παρόχου νέφους.
|
||||||
|
|
||||||
|
\item \textbf{rich}:
|
||||||
|
|
||||||
|
Η βιβλιοθήκη rich \footfullcite{rich} εμπλουτίζει την εμφάνιση του
|
||||||
|
SecDep. Βοηθάει στην καλύτερη διαμόρφωση της εμφάνισης των
|
||||||
|
αποτελεσμάτων των εντολών του, με σκοπό την θετική αύξηση της εμπειρίας
|
||||||
|
χρήσης του εργαλείου.
|
||||||
|
|
||||||
|
\item \textbf{shtab}:
|
||||||
|
|
||||||
|
Η βιβλιοθήκη shtab \footfullcite{shtab} χρησιμοποιείται για την
|
||||||
|
δημιουργία συμπληρώσεων κελύφους. Αυτό αποτελεί βασικό χαρακτηριστικό
|
||||||
|
για την ευχρηστία του εργαλείου, καθώς διευκολύνει τον χρήστη στην
|
||||||
|
εύρεση των διαθέσιμων παραμέτρων και στην ταχύτερη σύνταξη εντολών.
|
||||||
|
|
||||||
|
\item \textbf{paramiko}:
|
||||||
|
|
||||||
|
Η βιβλιοθήκη paramiko \footfullcite{paramiko} αποτελεί εξάρτηση της
|
||||||
|
libcloud για την επικοινωνία με τις εικονικές μηχανές, κάνοντας χρήση
|
||||||
|
του πρωτοκόλλου SSH. Το SecDep, χρησιμοποιεί την βιβλιοθήκη αυτή για
|
||||||
|
την διαδραστική σύνδεση σε εικονικές μηχανές μέσω SSH σε περίπτωση
|
||||||
|
απουσίας πελάτη που να προσφέρει αυτή τη δυνατότητα. Επιπλέον,
|
||||||
|
χρησιμοποιείται για την δημιουργία κλειδιών SSH.
|
||||||
|
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
\clearpage
|
\clearpage
|
||||||
|
|
||||||
|
\section{Αποφάσεις που πάρθηκαν κατά την ανάπτυξη} \label{developmentDecisions}
|
||||||
|
|
||||||
|
Κατά την ανάπτυξη του συστήματος, προκειμένου να επιτευχθούν οι στόχοι που
|
||||||
|
θέσαμε στην Ενότητα \ref{overcomingDockerDisadvantages} και συγκεκριμένα για
|
||||||
|
την επικοινωνία και διασύνδεση με διάφορους παρόχους νέφους, επιλέχθηκε να
|
||||||
|
γίνει χρήση της βιβλιοθήκης libcloud \footfullcite{libcloud}. Μια από τις δύο
|
||||||
|
επιλογές βιβλιοθηκών της Apache \footfullcite{apache} για την επικοινωνία με
|
||||||
|
παρόχους νέφους στα πλαίσια της υλοποίησης multi-cloud εφαρμογών, πλατφορμών
|
||||||
|
και εργαλείων. Συγκριτικά με την βιβλιοθήκη jclouds \footfullcite{jclouds}, η
|
||||||
|
οποία σχεδιάστηκε για την γλώσσα Java \footfullcite{java}, η libcloud είναι πιο
|
||||||
|
απλή στην χρήση, αφού είναι σχεδιασμένη για την γλώσσα Python
|
||||||
|
\footfullcite{python}. Επιπροσθέτως, η libcloud είναι πιο διαδεδομένη, ενώ η
|
||||||
|
γλώσσα python αποτελεί μια πιο ευέλικτη επιλογή για τις ανάγκες της ανάπτυξης
|
||||||
|
του εργαλείου μας. Αυτό συμβαίνει διότι σε σχέση με την Java, η python είναι
|
||||||
|
απλούστερη στην σύνταξή της, προεγκατεστημένη σε πολλά λειτουργικά συστήματα
|
||||||
|
και διαθέτει πολλές επιβοηθητικές βιβλιοθήκες, επίσημες ή από τρίτους, οι
|
||||||
|
οποίες δύναται να εμπλουτίσουν τα προγράμματα σε python, με παραπάνω
|
||||||
|
λειτουργίες.
|
||||||
|
|
||||||
|
Η ανάγκη για μια βιβλιοθήκη που θα λειτουργεί ως μεσάζοντας μεταξύ του
|
||||||
|
εργαλείου και των παρόχων νέφους, οφείλεται στο γεγονός ότι οι πάροχοι νέφους
|
||||||
|
δεν διαθέτουν ένα κοινό API για την διαχείριση των υποδομών τους. Απεναντίας, ο
|
||||||
|
καθένας από αυτούς διαθέτει το δικό του API, το οποίο χρησιμοποιείται έμμεσα
|
||||||
|
μέσω του πίνακα ελέγχου του, που βρίσκεται στην ιστοσελίδα του, ενός δικού του
|
||||||
|
εργαλείου γραμμής εντολών, ή άμεσα μέσω της βιβλιοθήκης που παρέχει ο ίδιος. Η
|
||||||
|
libcloud αποτελεί μια προσπάθεια δημιουργίας ενός ενιαίου API, το οποίο
|
||||||
|
χρησιμοποιώντας τις ίδιες μεθόδους, επιχειρεί να προσκομίσει πανομοιότυπα
|
||||||
|
αποτελέσματα (πχ. δημιουργία εικονικής μηχανής με συγκεκριμένα χαρακτηριστικά)
|
||||||
|
ανεξαρτήτως του παρόχου νέφους που στοχεύει.
|
||||||
|
|
||||||
|
Παρ' όλη την προσπάθεια που καταβλήθηκε από την libcloud όμως, για την
|
||||||
|
ενοποίηση αυτή, οι διαφορές στους τρόπους λειτουργίας του κάθε παρόχου αρχίζουν
|
||||||
|
να εμφανίζονται σύντομα κατά την ανάπτυξη. Για το εργαλείο SecDep που προτείνει
|
||||||
|
η παρούσα διπλωματική εργασία, χρειάζεται να γίνει χρήση των λειτουργιών
|
||||||
|
\textquote{Compute} της βιβλιοθήκης libcloud. Στην αρχική σελίδα της
|
||||||
|
βιβλιοθήκης, αναφέρεται υποστήριξη για πάνω από 50 παρόχους. Κατά την σελίδα
|
||||||
|
τεκμηρίωσης \cite{libcloudProviders} για τις λειτουργίες \textquote{Compute},
|
||||||
|
αναφέρονται 48 πάροχοι σε έναν πίνακα, ο οποίος αναγράφει την υποστήριξη ή
|
||||||
|
απουσία αυτής, για διάφορες λειτουργίες/μεθόδους (διαχείρισης) εικονικών
|
||||||
|
μηχανών. Στις λειτουργίες αυτές περιλαμβάνονται η δημιουργία εικονικών μηχανών,
|
||||||
|
η εκκίνηση, η παύση, η διαγραφή τους και εν γένει όσες λειτουργίες είναι
|
||||||
|
απαραίτητες για την ολοκληρωμένη λειτουργία του προτεινούμενού μας εργαλείου.
|
||||||
|
Από αυτούς τους 48 παρόχους, οι 25 υποστηρίζουν και τις 9 λειτουργίες
|
||||||
|
διαχείρισης. Ωστόσο, από αυτούς τους 25 έπρεπε να αφαιρεθούν οι 20 για λόγους,
|
||||||
|
όπως η μη ύπαρξη τεκμηρίωσης χρήσης από την libcloud, η μη συνέχιση της
|
||||||
|
λειτουργίας τους, η έλλειψη πληροφοριών τιμής ή δοκιμαστικής περιόδου για τις
|
||||||
|
υπηρεσίες τους και η αδυναμία δημιουργίας λογαριασμού στην επίσημη σελίδα τους.
|
||||||
|
Επομένως, υπάρχουν εν τέλει 5 πάροχοι νέφους που δύναται να χρησιμοποιηθούν,
|
||||||
|
υποστηρίζοντας όλες τις πιθανές λειτουργίες διαχείρισης εικονικών μηχανών.
|
||||||
|
Τέλος, από αυτούς τους 5, επιλέχθηκαν για επίσημη υποστήριξη από το εργαλείο
|
||||||
|
που προτείνεται στην παρούσα διπλωματική εργασία, τα τρία μεγαλύτερα ονόματα
|
||||||
|
του χώρου, οι Amazon, Google και Microsoft. Οι άλλοι δύο είτε δεν παρείχαν
|
||||||
|
δοκιμαστική περίοδο των υπηρεσιών τους, είτε δεν υπήρχε εμπιστοσύνη ως προς την
|
||||||
|
ποιότητα των υπηρεσιών αυτών.
|
||||||
|
|
||||||
|
Παρακάτω θα διαπιστώσουμε πως ακόμα και με την χρήση της βιβλιοθήκης libcloud
|
||||||
|
και την επίσημη υποστήριξη όλων των λειτουργιών για κάθε πάροχο, υπήρχε η
|
||||||
|
ανάγκη χρήσης της επίσημης βιβλιοθήκης της Azure (Microsoft Azure SDK) για την
|
||||||
|
δημιουργία Resource Group \footfullcite{azure-mgmt-resource} και Virtual
|
||||||
|
Network \footfullcite{azure-mgmt-network} διότι αυτές οι λειτουργίες δεν
|
||||||
|
υποστηρίζονται μέσω της libcloud. Επιπροσθέτως, δίχως την υποστήριξη των
|
||||||
|
λειτουργιών αυτών, ο χρήστης θα ήταν υποχρεωμένος να δημιουργεί αυτούς τους
|
||||||
|
πόρους χειροκίνητα ή να είναι περιορισμένος μονάχα σε μια γεωγραφική τοποθεσία.
|
||||||
|
Οι δύο τελευταίες επιλογές πάνε ενάντια σε έναν από τους βασικότερους στόχους
|
||||||
|
του εργαλείου. Την ομοιόμορφη λειτουργία για κάθε πάροχο νέφους που
|
||||||
|
υποστηρίζεται.
|
||||||
|
|
||||||
|
Πέρα από την απόφαση για την χρήση της libcloud και την γλώσσα προγραμματισμού
|
||||||
|
Python, πάρθηκε επίσης η απόφαση για την υποστήριξη των 6 δημοφιλέστερων
|
||||||
|
επιλογών για λειτουργικά συστήματα Linux σε περιβάλλοντα διακομιστών. Οι
|
||||||
|
διανομές αυτές υποστηρίζονται και για τους 3 παρόχους νέφους και κάθε μια από
|
||||||
|
αυτές περιλαμβάνει διαφορετικές εκδόσεις της κάθε διανομής. Αυτές είναι οι εξής
|
||||||
|
για κάθε πάροχο:
|
||||||
|
|
||||||
|
\begin{savenotes}
|
||||||
|
\selectfont
|
||||||
|
\begin{table}[!ht]
|
||||||
|
\caption{Υποστηριζόμενες εκδόσεις διανομών για κάθε πάροχο}
|
||||||
|
\renewcommand{\arraystretch}{1.5}
|
||||||
|
\centering
|
||||||
|
\textgreek{\begin{tabular}{lc|c|c|c|}
|
||||||
|
\cline{3-5}
|
||||||
|
& & \multicolumn{3}{c|}{Πάροχοι} \\ \cline{3-5}
|
||||||
|
& & AWS & Azure & GCE \\ \hline
|
||||||
|
\multicolumn{1}{|c|}{\multirow{6}{*}{\rotatebox{90}{Διανομές}}} & Ubuntu \footfullcite{ubuntu} & 22.04, 22.10 & 22.04, 22.10 & Όλες \\ \cline{2-5}
|
||||||
|
\multicolumn{1}{|c|}{} & Debian \footfullcite{debian} & 10, 11 & 10, 11 & Όλες \\ \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|}{} & 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
|
||||||
|
\end{tabular}}
|
||||||
|
\label{table:supportedDistributions}
|
||||||
|
\renewcommand{\arraystretch}{1}
|
||||||
|
\end{table}
|
||||||
|
\end{savenotes}
|
||||||
|
|
||||||
|
Ο λόγος που οι εκδόσεις είναι συγκεκριμένες για τους παρόχους AWS και Azure,
|
||||||
|
είναι διότι ο αριθμός των διαθέσιμων διανομών και εκδόσεών τους είναι
|
||||||
|
υπερβολικά μεγάλος. Αυτό θα είχε ως αποτέλεσμα, κατά την εκτέλεση της
|
||||||
|
λειτουργίας δημιουργίας λίστας τους ή κατά τον έλεγχο της ορθότητας των
|
||||||
|
παραμέτρων που εισάγει ο χρήστης, η αντίστοιχη αιτούμενη εκτέλεση του εργαλείου
|
||||||
|
από τον χρήση, να καθυστερούσε σε τεράστιο βαθμό να ολοκληρωθεί. Επομένως, θα
|
||||||
|
υπήρχε αρνητική επίδραση στην εμπειρία του χρήστη.
|
||||||
|
|
||||||
\section{Αρχιτεκτονική Εργαλείου} \label{architecture}
|
\section{Αρχιτεκτονική Εργαλείου} \label{architecture}
|
||||||
|
|
||||||
Οι διαθέσιμες συναρτήσεις και μεταβλητές του secdep.py, απεικονίζονται στα
|
Οι διαθέσιμες συναρτήσεις και μεταβλητές του secdep.py, απεικονίζονται στα
|
||||||
|
|||||||
BIN
Figures/ContainersVsVMs/containers-vs-vms.jpg
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
Figures/Diagrams/flowchart/1secdep-flowchart-diagram.png
Normal file
|
After Width: | Height: | Size: 195 KiB |
|
After Width: | Height: | Size: 93 KiB |
BIN
Figures/Diagrams/flowchart/3secdep-flowchart-ListVMs.png
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
Figures/Diagrams/flowchart/4secdep-flowchart-ActionOnVM.png
Normal file
|
After Width: | Height: | Size: 200 KiB |
BIN
Figures/Diagrams/flowchart/5secdep-flowchart-SSHToVM.png
Normal file
|
After Width: | Height: | Size: 166 KiB |
BIN
Figures/Diagrams/flowchart/6secdep-flowchart-ResourceInfo.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
Figures/Diagrams/flowchart/7secdep-flowchart-CreateVM.png
Normal file
|
After Width: | Height: | Size: 219 KiB |
|
Before Width: | Height: | Size: 219 KiB After Width: | Height: | Size: 219 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 88 KiB |
BIN
Figures/Diagrams/secdep-sequence-diagramold.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 543 KiB After Width: | Height: | Size: 429 KiB |
BIN
Figures/Diagrams/secdep-use-case-diagramNoNote.jpg
Normal file
|
After Width: | Height: | Size: 399 KiB |
BIN
Figures/Diagrams/secdep-use-case-diagramOLD.jpg
Normal file
|
After Width: | Height: | Size: 543 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 13 KiB |
BIN
Figures/ThreatsLitchfield/threats.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
@@ -167,7 +167,7 @@ Dennis Ritchie (1941 - 2011)
|
|||||||
%% ----------------------------------------------------------------
|
%% ----------------------------------------------------------------
|
||||||
% Now begin the Appendices, including them as separate files
|
% Now begin the Appendices, including them as separate files
|
||||||
|
|
||||||
\addtocontents{toc}{\vspace{2em}} % Add a gap in the Contents, for aesthetics
|
% \addtocontents{toc}{\vspace{2em}} % Add a gap in the Contents, for aesthetics
|
||||||
|
|
||||||
\appendix % Cue to tell LaTeX that the following 'chapters' are Appendices
|
\appendix % Cue to tell LaTeX that the following 'chapters' are Appendices
|
||||||
|
|
||||||
@@ -175,10 +175,12 @@ Dennis Ritchie (1941 - 2011)
|
|||||||
|
|
||||||
% Εδώ μπαίνουν τα παραρτήματα
|
% Εδώ μπαίνουν τα παραρτήματα
|
||||||
|
|
||||||
\addtocontents{toc}{\vspace{2em}} % Add a gap in the Contents, for aesthetics
|
% \addtocontents{toc}{\vspace{2em}} % Add a gap in the Contents, for aesthetics
|
||||||
|
|
||||||
%% ----------------------------------------------------------------
|
%% ----------------------------------------------------------------
|
||||||
\label{Bibliography}
|
\label{Bibliography}
|
||||||
|
\addtocontents{toc}{}
|
||||||
|
\addtotoc{Βιβλιογραφία}
|
||||||
\lhead{\textgreek{Βιβλιογραφία}} % Change the left side page header to "Bibliography"
|
\lhead{\textgreek{Βιβλιογραφία}} % Change the left side page header to "Bibliography"
|
||||||
\renewcommand*{\bibfont}{\textbf\small} % Have the correct font
|
\renewcommand*{\bibfont}{\textbf\small} % Have the correct font
|
||||||
|
|
||||||
|
|||||||