diff --git a/Abbreviations/abbreviations.tex b/Abbreviations/abbreviations.tex new file mode 100644 index 0000000..86150ad --- /dev/null +++ b/Abbreviations/abbreviations.tex @@ -0,0 +1,45 @@ +\setstretch{1.5} % Set the line spacing to 1.5, this makes the following tables easier to read +\clearpage % Start a new page +\lhead{\emph{Συντομογραφίες}} % Set the left side page header to "Abbreviations" +\listofsymbols{ll} % Include a list of Abbreviations (a table of two columns) +{ +\textbf{IaaS} & \textbf{I}nfrastructure \textbf{a}s \textbf{a} \textbf{S}ervice \\ +\textbf{PaaS} & \textbf{P}latform \textbf{a}s \textbf{a} \textbf{S}ervice \\ +\textbf{SaaS} & \textbf{S}oftware \textbf{a}s \textbf{a} \textbf{S}ervice \\ +\textbf{AWS} & \textbf{A}mazon \textbf{W}eb \textbf{S}ervices \\ +\textbf{EC2} & \textbf{E}lastic \textbf{C}ompute \textbf{C}loud \\ +\textbf{API} & \textbf{A}pplication \textbf{P}rogramming \textbf{I}nterface \\ +\textbf{SDK} & \textbf{S}oftware \textbf{D}evelopment \textbf{K}it \\ +\textbf{OS} & \textbf{O}perating \textbf{S}ystem \\ +\textbf{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{XSS} & \textbf{C}ross \textbf{S}ite \textbf{S}cripting \\ +\textbf{cgroups} & \textbf{c}ontrol 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{ARP} & \textbf{A}ddress \textbf{R}esolution \textbf{P}rotocol \\ +\textbf{DNS} & \textbf{D}omain \textbf{N}ame \textbf{S}ystem \\ +\textbf{MitM} & \textbf{M}an-\textbf{i}n-\textbf{t}he-\textbf{M}iddle \\ +\textbf{CPU} & \textbf{C}entral \textbf{P}rocessing \textbf{U}nit \\ +\textbf{SELinux} & \textbf{S}ecurity-\textbf{E}nhanced \textbf{L}inux \\ +\textbf{SecComp} & \textbf{Sec}ure \textbf{Comp}uting \\ +\textbf{AppArmor} & \textbf{App}lication Armor \\ +\textbf{IP} & \textbf{I}nternet \textbf{P}rotocol \\ +\textbf{IPv4} & \textbf{I}nternet \textbf{P}rotocol \textbf{v}ersion 4 \\ +\textbf{LAN} & \textbf{L}ocal \textbf{A}rea \textbf{N}etwork \\ +\textbf{RAM} & \textbf{R}andom \textbf{A}ccess \textbf{M}emory \\ +\textbf{ΛΣ} & \textbf{Λ}ειτουργικό \textbf{Σ}ύστημα \\ +\textbf{ΤΠ} & \textbf{Τ}εχνολογίες \textbf{Π}ληροφορικής \\ +} + +\lhead{} diff --git a/Abstract/abstract.tex b/Abstract/abstract.tex new file mode 100644 index 0000000..9ebbff9 --- /dev/null +++ b/Abstract/abstract.tex @@ -0,0 +1,54 @@ +\addtotoc{Σύνοψη} % Add the "Abstract" page entry to the Contents +\abstract{ +\addtocontents{toc}{\vspace{1em}} % Add a gap in the Contents, for aesthetics +% skip indentation just for this paragraph + +\hyphenation{αυτές νέφος} + +\noindent Τη σημερινή εποχή, όλο και περισσότερος κόσμος βασίζεται πλέον σε +υπηρεσίες τύπου IaaS έναντι των παραδοσιακών επιτόπιων υποδομών για την παροχή +λειτουργικής υποστήριξης σε εφαρμογές, υπηρεσίες και επιχειρησιακές +διαδικασίες. Αυτό συμβαίνει διότι κατ' αυτό τον τρόπο μειώνονται τα έξοδα ενός +οργανισμού ή μιας επιχείρησης εφόσον δεν υπάρχει ανάγκη δαπάνης/επένδυσης για +την αγορά εξοπλισμού και το λειτουργικό κόστος χρήσης υπηρεσιών IaaS βασίζεται +σε ευέλικτα μοντέλα χρέωσης με βάση την χρήση (των πόρων υποδομής που +προσφέρονται). Επιπλέον, είναι δυνατή η κλιμάκωση της προσφερόμενης +απομακρυσμένης υποδομής ανάλογα με τις ανάγκες του οργανισμού και του τρέχοντος +φόρτου εργασίας των υπηρεσιών και εφαρμογών προς υποστήριξη. Με αυτόν τον +τρόπο, μεταβιβάζεται η ευθύνη της διάθεσης και συντήρησης του εξοπλισμού σε +τρίτους ενώ ταυτόχρονα εισάγεται ένα καινούριο μοντέλο εμπιστοσύνης ανάμεσα +στον χρήστη/οργανισμό και τον πάροχο νέφους. Η αύξηση ενδιαφέροντος από τις +επιχειρήσεις προς τις τεχνολογίες εικονικοποίησης οι οποίες αποτελούν τα +θεμέλια των υπηρεσιών IaaS, αλλά και η ραγδαία άνοδος της δημοτικότητας +τεχνολογιών δοχείων όπως είναι το Docker άρχισε με την σειρά της να ενισχύει +την υιοθέτηση της αρχιτεκτονικής μικρο-υπηρεσιών για την ανάπτυξη εφαρμογών. +Μιας αρχιτεκτονικής που βασίζεται τόσο στις τεχνολογίες εικονικοποίησης για την +στέγαση των εφαρμογών σε υποδομές νέφους όσο και στις τεχνολογίες δοχείων για +την διαμέριση των λειτουργιών τους, προσφέροντας ένα κατάλληλο επίπεδο απόδοσης +και κλιμακωσιμότητας \footfullcite{awsMicroservices}. Ωστόσο, παραμένουν άμεσα +ευεπηρέαστες σε ζητήματα ασφάλειας που μπορεί να αφορούν το ίδιο το νέφος ή/και +τις τεχνολογίες στις οποίες στηρίζεται. + +\clearpage + +Στην παρούσα εργασία θα αναλύσουμε πρώτα τα ζητήματα ασφάλειας που αφορούν το +νέφος και ειδικότερα αυτά που αφορούν τις τεχνολογίες εικονικοποίησης και +δοχείων. Έπειτα, θα αναλύσουμε πως μπορεί να γίνει χρήση αυτών των 2 +τεχνολογιών με περισσότερη ασφάλεια. Όμως ο σκοπός της εργασίας προχωρά πέρα +από αυτό και μεταβαίνει σε ένα πρακτικό επίπεδο, προτείνοντας τη λύση ενός +εργαλείου που μπορεί να υλοποιεί με αυτό τον τρόπο την προτεινόμενη, ασφαλή +χρήση των τεχνολογιών αυτών. Ειδικότερα, το εργαλείο αυτό όχι μόνο μπορεί να +δημιουργεί εικονικές μηχανές κατά μήκος πολλών παρόχων νέφους αλλά και να τις +σκληραίνει με έναν αυτοματοποιημένο τρόπο. Επιπροσθέτως, είναι ικανό να +εγκαθιστά σε αυτές τις εικονικές μηχανές τη μηχανή δοχείων Docker, την οποία +επίσης μπορεί να σκληραίνει. Ο βασικός στόχος της εργασίας είναι να διευκολύνει +έναν οργανισμό στην εγκατάσταση και διαμόρφωση με αυτοματοποιημένο τρόπο ενός +ασφαλούς, κατανεμημένου περιβάλλοντος (φιλοξενίας και λειτουργίας) για την +εγκατάσταση και λειτουργία μιας εφαρμογής μικρο-υπηρεσιών. Η αυτοματοποίηση +αυτή έγκειται στη σωστή διαμόρφωση του εργαλείου, η οποία δεν προϋποθέτει +κάποια ειδική γνώση πάνω σε τεχνικά ζητήματα αλλά ούτε και στον τομέα της +ασφάλειας υποδομών και των λειτουργικών συστημάτων. + +} + +\clearpage % Abstract ended, start a new page diff --git a/Bibliography.bib b/Bibliography.bib index 2ad7c00..1e3b8df 100644 --- a/Bibliography.bib +++ b/Bibliography.bib @@ -1,5 +1,5 @@ @inproceedings{balduzzi2012security, - author = {Balduzzi, Marco and Zaddach, Jonas and Balzarotti, Davide and Kirda, Engin and Loureiro, Sergio}, + author = {Balduzzi, Marco and Zaddach, Jonas and Balzarotti, Davide and Kirda, Engin and Loureiro, Sergio}, title = {A Security Analysis of Amazon's Elastic Compute Cloud Service}, year = {2012}, isbn = {9781450308571}, @@ -16,17 +16,17 @@ } @inproceedings{manu2016study, - 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)}, - title={A study, analysis and deep dive on cloud PAAS security in terms of Docker container security}, - year={2016}, - volume={}, - number={}, - pages={1-13}, - doi={10.1109/ICCPCT.2016.7530284} + 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)}, + title = {A study, analysis and deep dive on cloud PAAS security in terms of Docker container security}, + year = {2016}, + volume = {}, + number = {}, + pages = {1-13}, + doi = {10.1109/ICCPCT.2016.7530284} } -@misc{bui2015analysis, +@online{bui2015analysis, doi = {10.48550/ARXIV.1501.02967}, url = {https://arxiv.org/abs/1501.02967}, author = {Bui, Thanh}, @@ -38,64 +38,64 @@ } @inproceedings{wenhao2020vulnerability, - author={Wenhao, Jiang and Zheng, Li}, - booktitle={2020 IEEE 3rd International Conference on Information Systems and Computer Aided Education (ICISCAE)}, - title={Vulnerability Analysis and Security Research of Docker Container}, - year={2020}, - volume={}, - number={}, - pages={354-357}, - doi={10.1109/ICISCAE51034.2020.9236837} + author = {Wenhao, Jiang and Zheng, Li}, + booktitle = {2020 IEEE 3rd International Conference on Information Systems and Computer Aided Education (ICISCAE)}, + title = {Vulnerability Analysis and Security Research of Docker Container}, + year = {2020}, + volume = {}, + number = {}, + pages = {354-357}, + doi = {10.1109/ICISCAE51034.2020.9236837} } @article{combe2016docker, - author={Combe, Theo and Martin, Antony and Di Pietro, Roberto}, - journal={IEEE Cloud Computing}, - title={To Docker or Not to Docker: A Security Perspective}, - year={2016}, - volume={3}, - number={5}, - pages={54-62}, - keywords={}, - doi={10.1109/MCC.2016.100}, - ISSN={2325-6095}, - month={Sep.} + author = {Combe, Theo and Martin, Antony and Di Pietro, Roberto}, + journal = {IEEE Cloud Computing}, + title = {To Docker or Not to Docker: A Security Perspective}, + year = {2016}, + volume = {3}, + number = {5}, + pages = {54-62}, + keywords = {}, + doi = {10.1109/MCC.2016.100}, + ISSN = {2325-6095}, + month = {Sep.} } @inproceedings{loukidis2018docker, - author={Loukidis-Andreou, Fotis and Giannakopoulos, Ioannis and Doka, Katerina and Koziris, Nectarios}, - booktitle={2018 IEEE 38th International Conference on Distributed Computing Systems (ICDCS)}, - title={Docker-Sec: A Fully Automated Container Security Enhancement Mechanism}, - year={2018}, - volume={}, - number={}, - pages={1561-1564}, - doi={10.1109/ICDCS.2018.00169} + author = {Loukidis-Andreou, Fotis and Giannakopoulos, Ioannis and Doka, Katerina and Koziris, Nectarios}, + booktitle = {2018 IEEE 38th International Conference on Distributed Computing Systems (ICDCS)}, + title = {Docker-Sec: A Fully Automated Container Security Enhancement Mechanism}, + year = {2018}, + volume = {}, + number = {}, + pages = {1561-1564}, + doi = {10.1109/ICDCS.2018.00169} } @inproceedings{mp2016enhancing, - author={Amith Raj MP and Kumar, Ashok and Pai, Sahithya J and Gopal, Ashika}, - booktitle={2016 2nd International Conference on Applied and Theoretical Computing and Communication Technology (iCATccT)}, - title={Enhancing security of Docker using Linux hardening techniques}, - year={2016}, - volume={}, - number={}, - pages={94-99}, - doi={10.1109/ICATCCT.2016.7911971} + author = {Amith Raj MP and Kumar, Ashok and Pai, Sahithya J and Gopal, Ashika}, + booktitle = {2016 2nd International Conference on Applied and Theoretical Computing and Communication Technology (iCATccT)}, + title = {Enhancing security of Docker using Linux hardening techniques}, + year = {2016}, + volume = {}, + number = {}, + pages = {94-99}, + doi = {10.1109/ICATCCT.2016.7911971} } @article{jogi2017establishing, - title={Establishing, Implementing and Auditing Linux Operating System Hardening Standard for Security Compliance}, - author={Jogi, Martin}, - journal={University of Tartu, Tartu}, - year={2017} + title = {Establishing, Implementing and Auditing Linux Operating System Hardening Standard for Security Compliance}, + author = {Jogi, Martin}, + journal = {University of Tartu, Tartu}, + year = {2017} } @article{kaur2014hardening, - title={Hardening OS Identity by Customised Masking Techniques}, - author={Kaur, Ratinder and Singh, Maninder}, - journal={Thapar University, Punjab, India}, - year={2014} + title = {Hardening OS Identity by Customised Masking Techniques}, + author = {Kaur, Ratinder and Singh, Maninder}, + journal = {Thapar University, Punjab, India}, + year = {2014} } @article{zhu2021lic, @@ -112,204 +112,711 @@ } @misc{John2020OS, - title={OS Hardening - Making systems more secure}, - author={John Ostrowski}, - year={2020} + title = {OS Hardening - Making systems more secure}, + author = {John Ostrowski}, + year = {2020} } -@misc{SIDDARTH201910simple, - title={10 Simple Steps to Harden Your Docker Containers}, - author={SIDDARTH SENTHILKUMAR}, - howpublished="\url{https://sidsbits.com/10-Simple-Steps-to-Harden-Docker-Containers/}", - year={2019} +@online{containerHistory, + title = {The evolution of containers: Docker, Kubernetes and the future}, + author = {Emily Mell}, + year = {2023}, + url = {https://www.techtarget.com/searchitoperations/feature/Dive-into-the-decades-long-history-of-container-technology} } -@misc{Yathi2017Hardening, - title={Hardening Docker containers, images, and host - security toolkit}, - author={Yathi Naik}, - howpublished="\url{https://cloud.redhat.com/blog/hardening-docker-containers-images-and-host-security-toolkit}", - year={2017} +@online{chrootCommand, + title = {The chroot command in Linux – Beginners Introduction}, + author = {Deeptendu Santra}, + year = {2021}, + url = {https://www.linuxfordevices.com/tutorials/linux/chroot-command-in-linux} } -@misc{StackRox2019Docker, - title={Docker Container Security 101: Risks and 33 Best Practices}, - author={StackRox}, - howpublished="\url{https://www.stackrox.io/blog/docker-security-101/}", - year={2019} +@online{SIDDARTH201910simple, + title = {10 Simple Steps to Harden Your Docker Containers}, + author = {SIDDARTH SENTHILKUMAR}, + url = {https://sidsbits.com/10-Simple-Steps-to-Harden-Docker-Containers/}, + year = {2019} } -@misc{Marcin2019Hardening, - title={Hardening Docker Quick Tips}, - author={Marcin Teodorczyk}, - howpublished="\url{https://medium.com/intive-developers/hardening-docker-quick-tips-54ca9c283964}", - year={2019} +@online{LXC, + title = {What's LXC?}, + author = {Linux Containers}, + url = {https://linuxcontainers.org/lxc/introduction/}, } -@misc{deviceWhitelistController, - title={Device Whitelist Controller}, - author={The Linux kernel user’s and administrator’s guide}, - howpublished="\url{https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v1/devices.html}" +@online{LXCvsDocker, + title = {LXC vs Docker: Which Container Platform Is Right for You?}, + author = {Eric Kahuha}, + year = {2023}, + url = {https://earthly.dev/blog/lxc-vs-docker/} } -@misc{dockerInherentSecurity, - title={The Inherent Security Benefits of Docker Containers}, - author={Christopher Tozzi}, - howpublished="\url{https://cloudnativenow.com/features/security-benefits-docker-containers/}" +@online{chrootRestrictions, + title = {Is chroot a security feature?}, + author = {March 27, 2013Josh Bressers}, + year = {2023}, + url = {https://www.redhat.com/en/blog/chroot-security-feature} } -@misc{gVisor, - title={The Container Security Platform}, - author={Google}, - howpublished="\url{https://gvisor.dev/}" +@online{dockerhub, + title = {Build and Ship any Application Anywhere}, + author = {Docker}, + url = {https://hub.docker.com/}, } -@misc{ibmVirtualizationDefinition, - title={What is virtualization?}, - author={IBM}, - howpublished="\url{https://www.ibm.com/topics/virtualization}" +@online{quay, + title = {Quay builds, analyzes, distributes your container images}, + author = {Red Hat}, + url = {https://quay.io/}, } -@misc{redhatVirtualization, - title={What is virtualization?}, - author={Red Hat}, - year={2018}, - howpublished="\url{https://www.redhat.com/en/topics/virtualization/what-is-virtualization}" +@online{oci, + title = {Open Container Initiative}, + author = {The Linux Foundation}, + url = {https://opencontainers.org/}, } -@misc{suseParavirtualizationDefinition, - title={Paravirtualization}, - author={SUSE}, - howpublished="\url{https://www.suse.com/suse-defines/definition/paravirtualization/}" +@online{LXCvsDocker2, + title = {The Untold Story: Containers Before Docker's Rise - The LXC Revolution}, + author = {Dinesh Patil}, + year = {2023}, + url = {https://www.linkedin.com/pulse/untold-story-containers-before-dockers-rise-lxc-revolution-patil} } -@misc{geeksforgeeksParavirtualizationDefinition, - title={Difference between Full Virtualization and Paravirtualization}, - author={GeeksforGeeks}, - howpublished="\url{https://www.geeksforgeeks.org/difference-between-full-virtualization-and-paravirtualization/}" +@online{Hyperjacking, + title = {What Is Hyperjacking? How to Prevent Hyperjacking on a VM}, + author = {Allan Jay Monteclaro}, + year = {2023}, + url = {https://www.serverwatch.com/virtualization/hyperjacking/} } -@misc{ParavirtualizationSecurity, - title={Why Your Virtual Servers May be More Secure Than Their Physical Counterparts}, - author={Andrew Mallett}, - howpublished="\url{https://ine.com/blog/why-your-virtual-servers-may-be-more-secure-than-their-physical-counterparts}" +@online{waterfall, + title = {Waterfall Methodology: A Comprehensive Guide}, + author = {ATLASSIAN}, + url = {https://www.atlassian.com/agile/project-management/waterfall-methodology} } -@misc{ParavirtualizationVmware, - title={Understanding Full Virtualization, Paravirtualization and Hardware Assisted Virtualization}, - author={VMware}, - howpublished="\url{https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/VMware_paravirtualization.pdf}" +@online{agile, + title = {What Is Agile Project Management? The Ultimate Guide}, + author = {Lee Davis}, + year = {2022}, + url = {https://www.forbes.com/advisor/business/what-is-agile-project-management/} } -@article{arif2015virtualization, - title={Virtualization security: analysis and open challenges}, - author={Arif, Muhammad and Shakeel, Haroon}, - journal={International Journal of Hybrid Information Technology}, - volume={8}, - number={2}, - pages={237--246}, - year={2015} +@online{devops, + title = {DevOps}, + author = {Synopsys}, + url = {https://www.synopsys.com/glossary/what-is-devops.html} } -@inproceedings{wen2008sevmm, - title={Sevmm: Vmm-based security control model}, - author={Wen-Zhi, Chen and Hong-Wei, Zhu and Wei, Huang}, - booktitle={2008 International Conference on Cyberworlds}, - pages={820--823}, - year={2008}, - organization={IEEE} +@online{cicd, + title = {What is CI/CD?}, + author = {GitLab}, + url = {https://about.gitlab.com/topics/ci-cd/} } -@misc{ibmHypervisorDefinition, - title={What are hypervisors?}, - author={IBM}, - howpublished="\url{https://www.ibm.com/topics/hypervisors}" +@online{caas, + title = {What is CaaS?}, + author = {Sumo Logic}, + url = {https://www.sumologic.com/glossary/caas/} } -@misc{ibmContainerizationDefinition, - title={What is containerization?}, - author={IBM}, - howpublished="\url{https://www.ibm.com/topics/containerization}" +@online{caasVsIaas, + title = {Container as a Service: The Basics and Top 4 Providers}, + author = {aquasec}, + year = {2023}, + url = {https://www.aquasec.com/cloud-native-academy/container-platforms/container-as-a-service/} } -@misc{ibmContainerSurvey, - title={Containers in the enterprise}, - author={IBM}, - howpublished="\url{https://www.ibm.com/downloads/cas/VG8KRPRM}" +@online{howCaasWorks, + title = {The Guide to Containers-as-a-Service (CaaS)}, + author = {Karim Traiaia}, + year = {2023}, + url = {https://www.kerno.io/blog/containers-as-a-service-caas} } -@misc{ibmContainerVsVm, - title={Containers vs. Virtual Machines (VMs): What’s the Difference?}, - author={IBM}, - howpublished="\url{https://www.ibm.com/blog/containers-vs-vms/}" +@online{multiCloud, + title = {What Is Multi-Cloud? Features, Architecture, Pros \& Cons}, + author = {Sarim Javaid}, + year = {2023}, + url = {https://www.cloudways.com/blog/what-is-multi-cloud/} } -@misc{ciaTriad, - title={What is the CIA triad (confidentiality, integrity and availability)?}, - author={Wesley Chai}, - howpublished="\url{https://www.techtarget.com/whatis/definition/Confidentiality-integrity-and-availability-CIA}" +@online{containerSecurity, + title = {Containers or virtual machines: Which is more secure? The answer will surprise you}, + author = {Steven Vaughan-Nichols}, + year = {2018}, + url = {https://www.zdnet.com/article/which-is-more-secure-containers-or-virtual-machines-the-answer-will-surprise-you/} } -@misc{redhatVirtualizationDefinition, - title={Understanding virtualization}, - author={Red Hat}, - howpublished="\url{https://www.redhat.com/en/topics/virtualization}" +@online{containerSecurityExplained, + title = {Containers and Cloud Security}, + author = {James Bottomley}, + year = {2018}, + url = {https://blog.hansenpartnership.com/containers-and-cloud-security/} } -@misc{redhatContainerVsVm, - title={Containers vs VMs}, - author={Red Hat}, - year={2020}, - howpublished="\url{https://www.redhat.com/en/topics/containers/containers-vs-vms}" +@online{containerEscapeTechniques, + title = {7 Ways to Escape a Container}, + author = {Ori Abargil}, + year = {2023}, + url = {https://www.panoptica.app/research/7-ways-to-escape-a-container} } -@misc{dockerAlternatives, - title={What Are The Best Docker Alternatives in 2022?}, - author={Cody Slingerland}, - year={2022}, - howpublished="\url{https://www.cloudzero.com/blog/docker-alternatives/}" +@online{saasPricingModel, + title = {Our guide to every SaaS pricing model}, + author = {vendr}, + year = {2022}, + url = {https://www.vendr.com/blog/saas-pricing-model#value-based-saas-pricing-models} +} + +@online{paasPricingModel, + title = {PaaS (Platform-as-a-Service) - definition \& overview}, + author = {Sumo Logic}, + url = {https://www.sumologic.com/glossary/paas/} +} + +@online{cloudDeploymentModels, + title = {An Overview of Cloud Deployment Models}, + author = {Intel}, + url = {https://www.intel.com/content/www/us/en/cloud-computing/deployment-models.html} +} + +@online{redhatVirtualizationManagement, + title = {What is virtualization management?}, + author = {Red Hat}, + year = {2018}, + url = {https://www.redhat.com/en/topics/virtualization/what-is-virtualization-management} +} + +@online{phoenixnapHypervisors, + title = {What is a Hypervisor? Types of Hypervisors 1 \& 2}, + author = {Sofija Simic}, + year = {2022}, + url = {https://phoenixnap.com/kb/what-is-hypervisor-type-1-2} +} + +@online{amazonHypervisors, + title = {What’s the Difference Between Type 1 and Type 2 Hypervisors?}, + author = {Amazon Web Services}, + url = {https://aws.amazon.com/compare/the-difference-between-type-1-and-type-2-hypervisors/} +} + +@online{vmfailover, + title = {What Is a Failover? Clustering and Replication Use Cases}, + author = {NAKIVO Team}, + year = {2023}, + url = {https://www.nakivo.com/blog/vm-failover-guide/} +} + +@online{kvm, + title = {What is KVM?}, + author = {Red Hat}, + year = {2022}, + url = {https://www.redhat.com/en/topics/virtualization/what-is-KVM} +} + +@online{dataVirtualization, + title = {Data Virtualization: Process, Components, Benefits, and Available Tools}, + author = {altexsoft}, + year = {2021}, + url = {https://www.altexsoft.com/blog/data-virtualization/} +} + +@online{desktopVirtualization, + title = {What is Desktop Virtualization?}, + author = {VMware}, + url = {https://www.vmware.com/topics/glossary/content/desktop-virtualization.html} +} + +@online{redhatNFV, + title = {What is NFV?}, + author = {Red Hat}, + year = {2019}, + url = {https://www.redhat.com/en/topics/virtualization/what-is-nfv} +} + +@online{vmwareMemoryVirtualization, + title = {Memory Virtualization}, + author = {VMware}, + year = {2019}, + url = {https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.resmgmt.doc/GUID-6E85F6DE-7365-4C28-B902-725D3C76C2E6.html} +} + +@online{codingninjasMemoryVirtualization, + title = {Processor and Memory Virtualization}, + author = {Rajat Agrawal}, + year = {2023}, + url = {https://www.codingninjas.com/studio/library/processor-and-memory-virtualization} +} + +@online{ubackupStorageVirtualization, + title = {What Is Storage Virtualization | Introduction and Implementation}, + author = {Crystal}, + year = {2022}, + url = {https://www.ubackup.com/enterprise-backup/storage-virtualization-jkzbj.html} +} + +@online{unixarenaVirtualization, + title = {Virtualization & Hypervisor – Basic Interview Questions}, + author = {LINGESH}, + year = {2019}, + url = {https://www.unixarena.com/2019/08/virtualization-hypervisor-basic-interview-questions.html/} +} + +@online{cloudinfraStorageVirtualization, + title = {Storage Virtualization in Cloud Computing – How it Works (Use Cases)}, + author = {Dennis Muvaa}, + url = {https://cloudinfrastructureservices.co.uk/storage-virtualization-in-cloud-computing-how-it-works-use-cases/} +} + +@online{tutorialsPointVirtualization, + title = {Virtualization 2.0 - Overview}, + author = {Tutorials Point}, + url = {https://www.tutorialspoint.com/virtualization2.0/virtualization2.0_overview.htm} +} + +@online{geeksforgeeksApplicationVirtualization, + title = {Virtualisation with Docker Containers}, + author = {GeeksforGeeks}, + year = {2023}, + url = {https://www.geeksforgeeks.org/virtualisation-with-docker-containers/} +} + +@online{mediumVirtualization, + title = {Virtualization in Cloud Computing: Bridging the Gap Between Resources and Efficiency}, + author = {TechClaw}, + url = {https://medium.com/@techclaw/virtualization-in-cloud-computing-bridging-the-gap-between-resources-and-efficiency-3c5a9c65981e} +} + +@online{insightsForProfessionalsParavirtualization, + title = {Paravirtualization vs. Full Virtualization: Pros and Cons}, + author = {Insights for Professionals}, + year = {2022}, + url = {https://www.insightsforprofessionals.com/it/data-center/paravirtualization-alternative-full-virtualization} +} + +@online{blackberryParavirtualization, + title = {Paravirtualization}, + author = {BlackBerry}, + url = {https://blackberry.qnx.com/en/ultimate-guides/automotive-hypervisor/paravirtualization} +} + +@online{serverWatchParavirtualization, + title = {What Is Paravirtualization? Definition and Uses}, + author = {Ray Fernandez}, + year = {2023}, + url = {https://www.serverwatch.com/virtualization/what-is-paravirtualization/} +} + +@online{vmblogParavirtualization, + title = {What Are the Benefits of Paravirtualization?}, + author = {David Marshall}, + year = {2019}, + url = {https://vmblog.com/archive/2019/07/23/what-are-the-benefits-of-paravirtualization.aspx} +} + +@online{servermaniaParavirtualization, + title = {What is Paravirtualization in Cloud Computing?}, + author = {Milad Karimyar}, + year = {2023}, + url = {https://blog.servermania.com/what-is-paravirtualization} +} + +@online{vmSnapshots, + title = {Understanding the Correct Use of VM Snapshots}, + author = {Nicolette Carklin}, + year = {2021}, + url = {https://www.parallels.com/blogs/ras/vm-snapshot/} +} + +@online{techtargetHypervisorSecurity, + title = {Virtual security tactics for Type 1 and Type 2 hypervisors}, + author = {Stephen J. Bigelow}, + year = {2013}, + url = {https://www.techtarget.com/searchitoperations/answer/Virtual-security-tactics-for-Type-1-and-Type-2-hypervisors} +} + +@online{hostitsmartMemoryVirtualization, + title = {Memory Virtualization in Cloud Computing}, + author = {Host IT Smart}, + url = {https://www.hostitsmart.com/blog/memory-virtualization-in-cloud-computing/} +} + +@online{petriMemoryVirtualization, + title = {Intro to Virtualization: Hardware, Software, Memory, Storage, Data and Network Virtualization Defined}, + author = {Bill Hill}, + year = {2012}, + url = {https://petri.com/intro-to-virtualization/} +} + +@online{containerEscapeRepercussions, + title = {5 security concerns when using Docker}, + author = {Adrian Mouat}, + year = {2016}, + url = {https://www.oreilly.com/content/five-security-concerns-when-using-docker/} +} + +@online{kubernetes, + title = {What is Kubernetes?}, + author = {Justin Ellingwood}, + year = {2018}, + url = {https://www.digitalocean.com/community/tutorials/an-introduction-to-kubernetes} +} + +@online{dockerSwarm, + title = {What is Docker Swarm: Modes, Example and Working}, + author = {Simplilearn}, + year = {2023}, + url = {https://www.simplilearn.com/tutorials/docker-tutorial/docker-swarm} +} + +@online{Yathi2017Hardening, + title = {Hardening Docker containers, images, and host - security toolkit}, + author = {Yathi Naik}, + year = {2017}, + url = {https://cloud.redhat.com/blog/hardening-docker-containers-images-and-host-security-toolkit} +} + +@online{StackRox2019Docker, + title = {Docker Container Security 101: Risks and 33 Best Practices}, + author = {StackRox}, + year = {2019}, + url = {https://www.stackrox.io/blog/docker-security-101/} +} + +@online{Marcin2019Hardening, + title = {Hardening Docker Quick Tips}, + author = {Marcin Teodorczyk}, + year = {2019}, + url = {https://medium.com/intive-developers/hardening-docker-quick-tips-54ca9c283964} +} + +@online{deviceWhitelistController, + title = {Device Whitelist Controller}, + author = {The Linux kernel user’s and administrator’s guide}, + url = {https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v1/devices.html} +} + +@online{dockerInherentSecurity, + title = {The Inherent Security Benefits of Docker Containers}, + author = {Christopher Tozzi}, + url = {https://cloudnativenow.com/features/security-benefits-docker-containers/} +} + +@online{gVisor, + title = {The Container Security Platform}, + author = {Google}, + url = {https://gvisor.dev/} +} + +@online{ibmVirtualizationDefinition, + title = {What is virtualization?}, + author = {IBM}, + url = {https://www.ibm.com/topics/virtualization} +} + +@online{redhatVirtualization, + title = {What is virtualization?}, + author = {Red Hat}, + year = {2018}, + url = {https://www.redhat.com/en/topics/virtualization/what-is-virtualization} +} + +@online{suseParavirtualizationDefinition, + title = {Paravirtualization}, + author = {SUSE}, + url = {https://www.suse.com/suse-defines/definition/paravirtualization/} +} + +@online{geeksforgeeksParavirtualizationDefinition, + title = {Difference between Full Virtualization and Paravirtualization}, + author = {GeeksforGeeks}, + url = {https://www.geeksforgeeks.org/difference-between-full-virtualization-and-paravirtualization/} +} + +@online{geeksforgeeksHardwareAssistedVirtualization, + title = {Hardware Based Virtualization}, + author = {GeeksforGeeks}, + url = {https://www.geeksforgeeks.org/hardware-based-virtualization/} +} + +@online{sysdigContainerRuntime, + title = {What are Container Runtimes?}, + author = {Sysdig}, + url = {https://sysdig.com/learn-cloud-native/container-security/what-are-container-runtimes/} +} + +@online{redhatContainerRuntime, + title = {How Kubernetes creates and runs containers: An illustrated guide}, + author = {Bob Reselman}, + year = {2022}, + url = {https://www.redhat.com/architect/how-kubernetes-creates-runs-containers} +} + +@online{codemotionContainerImages, + title = {Container Images: Technical Refresher and Security Best Practices}, + author = {Gilad David Maayan}, + year = {2023}, + url = {https://www.codemotion.com/magazine/cybersecurity/container-images-technical-refresher-and-security-best-practices/} +} + +@online{osVirtualizationInfo, + title = {OS-Level Virtualization}, + author = {Vikas Jain, Vibha Goyal, Nitin Kundapur Bhat}, + year = {2016}, + url = {https://courses.engr.illinois.edu/cs423/sp2016/lectures/VirtOS.pdf} +} + +@online{teimouriOsVirtualizationDefinition, + title = {Operating-system-level virtualization}, + author = {Davoud Teimouri}, + year = {2017}, + url = {https://www.teimouri.net/operating-system-level-virtualization/} +} + +@online{webopediaOsVirtualizationDefinition, + title = {Operating System-Level Virtualization}, + author = {Vangie Beal}, + year = {2021}, + url = {https://www.webopedia.com/definitions/operating-system-level-virtualization/} +} + +@online{ParavirtualizationSecurity, + title = {Why Your Virtual Servers May be More Secure Than Their Physical Counterparts}, + author = {Andrew Mallett}, + year = {2019}, + url = {https://ine.com/blog/why-your-virtual-servers-may-be-more-secure-than-their-physical-counterparts} +} + +@online{ParavirtualizationVmware, + title = {Understanding Full Virtualization, Paravirtualization and Hardware Assisted Virtualization}, + author = {VMware}, + year = {2007}, + url = {https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/VMware_paravirtualization.pdf} +} + +@online{awsMicroservices, + title = {What are Microservices?}, + author = {AWS}, + url = {https://aws.amazon.com/microservices/} +} + +@online{cloudzeroScalability, + title = {Horizontal Vs. Vertical Scaling: How Do They Compare?}, + author = {Cody Slingerland}, + year = {2023}, + url = {https://www.cloudzero.com/blog/horizontal-vs-vertical-scaling/} +} + +@online{abacusFullParaOSVirtualization, + title = {Three Types of Server Virtualization Explained}, + author = {Abacus}, + url = {https://goabacus.com/three-types-of-server-virtualization-explained/} +} + +@online{ibmHypervisorDefinition, + title = {What are hypervisors?}, + author = {IBM}, + url = {https://www.ibm.com/topics/hypervisors} +} + +@online{ibmContainerizationDefinition, + title = {What is containerization?}, + author = {IBM}, + url = {https://www.ibm.com/topics/containerization} +} + +@online{ibmContainerSurvey, + title = {Containers in the enterprise}, + author = {IBM}, + url = {https://www.ibm.com/downloads/cas/VG8KRPRM} +} + +@online{ibmContainerVsVm, + title = {Containers vs. Virtual Machines (VMs): What’s the Difference?}, + author = {IBM}, + url = {https://www.ibm.com/blog/containers-vs-vms/} +} + +@online{ciaTriad, + title = {What is the CIA triad (confidentiality, integrity and availability)?}, + author = {Wesley Chai}, + url = {https://www.techtarget.com/whatis/definition/Confidentiality-integrity-and-availability-CIA} +} + +@online{redhatVirtualizationDefinition, + title = {Understanding virtualization}, + author = {Red Hat}, + url = {https://www.redhat.com/en/topics/virtualization} +} + +@online{redhatContainerVsVm, + title = {Containers vs VMs}, + author = {Red Hat}, + year = {2020}, + url = {https://www.redhat.com/en/topics/containers/containers-vs-vms} +} + +@online{dockerAlternatives, + title = {What Are The Best Docker Alternatives in 2022?}, + author = {Cody Slingerland}, + year = {2022}, + url = {https://www.cloudzero.com/blog/docker-alternatives/} } @article{yasrab2018mitigating, - title={Mitigating docker security issues}, - author={Yasrab, Robail}, - journal={arXiv preprint arXiv:1804.05039}, - year={2018} + title = {Mitigating docker security issues}, + author = {Yasrab, Robail}, + year = {2018}, + journal = {arXiv preprint arXiv:1804.05039} } -@misc{ansible, - title={Ansible}, - author={Red Hat}, - howpublished="\url{https://www.ansible.com/}" +@online{ansible, + title = {Ansible}, + author = {Red Hat}, + url = {https://www.ansible.com/} } -@misc{terraform, - title={Terraform}, - author={HashiCorp}, - howpublished="\url{https://www.terraform.io/}" +@online{terraform, + title = {Terraform}, + author = {HashiCorp}, + url = {https://www.terraform.io/} } @article{mell2011nist, - title={The NIST definition of cloud computing}, - author={Mell, Peter and Grance, Tim and others}, - year={2011}, - publisher={Computer Security Division, Information Technology Laboratory, National~…} + title = {The NIST Definition of Cloud Computing}, + author = {Peter Mell and Timothy Grance}, + year = {2011}, + month = {2011-09-28}, + publisher = {Special Publication (NIST SP), National Institute of Standards and Technology, Gaithersburg, MD}, + doi = {https://doi.org/10.6028/NIST.SP.800-145}, + language = {en}, } -@misc{AkihiroSuda, - author = {Akihiro Suda}, - title = {rootlesskit}, - year = {2020}, - publisher = {GitHub}, - journal = {GitHub repository}, - howpublished = {\url{https://github.com/rootless-containers/rootlesskit}}, +@online{AkihiroSuda, + author = {Akihiro Suda}, + title = {rootlesskit}, + year = {2020}, + publisher = {GitHub}, + journal = {GitHub repository}, + url = {https://github.com/rootless-containers/rootlesskit} } @inproceedings{reshetova2014security, - title={Security of OS-level virtualization technologies}, - author={Reshetova, Elena and Karhunen, Janne and Nyman, Thomas and Asokan, N}, - booktitle={Nordic Conference on Secure IT Systems}, - pages={77--93}, - year={2014}, - organization={Springer} + title = {Security of OS-level virtualization technologies}, + author = {Reshetova, Elena and Karhunen, Janne and Nyman, Thomas and Asokan, N}, + booktitle = {Nordic Conference on Secure IT Systems}, + pages = {77--93}, + year = {2014}, + organization = {Springer} } +@online{enisaSecurityOfVirtualization, + title = {Security aspects of virtualization}, + author = {ENISA}, + year = {2017}, + url = {https://www.enisa.europa.eu/publications/security-aspects-of-virtualization} +} + +@article{arif2015virtualization, + title = {Virtualization security: analysis and open challenges}, + author = {Arif, Muhammad and Shakeel, Haroon}, + journal = {International Journal of Hybrid Information Technology}, + volume = {8}, + number = {2}, + pages = {237--246}, + year = {2015} +} + +@inproceedings{wen2008sevmm, + title = {Sevmm: Vmm-based security control model}, + author = {Wen-Zhi, Chen and Hong-Wei, Zhu and Wei, Huang}, + booktitle = {2008 International Conference on Cyberworlds}, + pages = {820--823}, + year = {2008}, + organization = {IEEE} +} + +@inproceedings{virtualizationSecurity, + author = {Sane, Bernard and Niang, Ibrahima and Fall, Doudou}, + year = {2018}, + month = {12}, + pages = {1317-1322}, + title = {A Review of Virtualization, Hypervisor and VM Allocation Security: Threats, Vulnerabilities, and Countermeasures}, + doi = {10.1109/CSCI46756.2018.00255} +} + +@article{Aalam_2021, + doi = {10.1088/1742-6596/1950/1/012027}, + url = {https://dx.doi.org/10.1088/1742-6596/1950/1/012027}, + year = {2021}, + month = {aug}, + publisher = {IOP Publishing}, + volume = {1950}, + number = {1}, + pages = {012027}, + author = {Zunaid Aalam and Vinod Kumar and Surendra Gour}, + title = {A review paper on hypervisor and virtual machine security}, + journal = {Journal of Physics: Conference Series}, +} + +@online{geeksforgeeksVirtualizationSecurityGoodPractices, + title = {Hypervisor Security in Cloud Computing}, + author = {GeeksforGeeks}, + year = {2023}, + url = {https://www.geeksforgeeks.org/hypervisor-security-in-cloud-computing/} +} + +@online{accessAuthorizationPlugin, + title = {Access authorization plugin}, + author = {Docker}, + url = {https://docs.docker.com/engine/extend/plugins_authorization/#access-authorization-plugin} +} + +@online{podman, + title = {What is Podman?}, + author = {Red Hat}, + year = {2022}, + url = {https://www.redhat.com/en/topics/containers/what-is-podman} +} + +@online{containerdRunc, + title = {The differences between Docker, containerd, CRI-O and runc}, + author = {Tom Donohue}, + year = {2023}, + url = {https://www.tutorialworks.com/difference-docker-containerd-runc-crio-oci/} +} + +@online{containerOSlimitations, + title = {Virtualization vs. Containerization — Comparing Differences}, + author = {Liquid Web}, + year = {2023}, + url = {https://www.liquidweb.com/kb/virtualization-vs-containerization/} +} + +@online{applicationContainerization, + title = {Containerized Applications Overview}, + author = {Knowledge Center}, + url = {https://www.datadoghq.com/knowledge-center/containerized-applications/} +} + +@online{apparmor, + title = {AppArmor}, + author = {AppArmor}, + url = {https://apparmor.net/} +} + +@online{selinux, + title = {What is SELinux?}, + author = {Red Hat}, + year = {2019}, + url = {https://www.redhat.com/en/topics/linux/what-is-selinux} +} + +@online{seccomp, + title = {Improving Linux container security with seccomp}, + author = {Valentin Rothberg}, + year = {2020}, + url = {https://www.redhat.com/sysadmin/container-security-seccomp} +} diff --git a/Chapters/1.Introduction.tex b/Chapters/1.Introduction.tex index 2fd9e67..a05da7b 100644 --- a/Chapters/1.Introduction.tex +++ b/Chapters/1.Introduction.tex @@ -1,216 +1,666 @@ \chapter{Εισαγωγή} \label{introduction} -Παραδοσιακά, όταν ήθελε κάποιος χρήστης/εταιρεία να παράσχει μια υπηρεσία, στο -ευρύ κοινό θα έπρεπε να διαθέσει ένα ````Χ'''' κεφάλαιο για την αγορά -εξοπλισμού. Σε περίπτωση που η υπηρεσία αυτή ετύγχανε ευρείας αποδοχής +\noindent Παραδοσιακά, όταν κάποιος χρήστης/εταιρεία επιθυμούσε να διαθέτει μια +υπηρεσία στο ευρύ κοινό θα έπρεπε να επενδύσει ένα κατάλληλο κεφάλαιο για την +αγορά εξοπλισμού. Σε περίπτωση που η υπηρεσία αυτή ετύγχανε ευρείας αποδοχής, καθίστατο επιτακτική η ανάγκη της επέκτασης του υφιστάμενου εξοπλισμού αλλά και -η μεταφορά όλων των υπαρχόντων πόρων λογισμικού (βάσεις δεδομένων -(\textlatin{Databases}), λογισμικό της υπηρεσίας, αρχείων ρυθμίσεων, κ.λπ.) σε -αυτό. Η παραπάνω διαδικασία απαιτούσε επιπλέον κεφάλαιο και αρκετές εργατοώρες -προκειμένου να γίνει πράξη. Στις αρχές του 2000 ο τρόπος διεξαγωγής της -παραπάνω διαδικασίας άλλαξε ριζικά όταν η \textlatin{Amazon} για πρώτη φορά -προσέφερε την υπηρεσία \textlatin{AWS}. Έπειτα, πολλές εταιρίες όπως η -\textlatin{Google}, \textlatin{IBM} και \textlatin{Mirosoft} άρχισαν να -προσφέρουν και αυτές υπηρεσίες τύπου \textlatin{IaaS}. +της εγκατάστασης όλων των αναγκαίων πόρων λογισμικού (βάσεις δεδομένων +(Databases), λογισμικό της υπηρεσίας, αρχείων ρυθμίσεων, κ.λπ.) στα νέα +κομμάτια εξοπλισμού που αγοράσθηκαν. Η παραπάνω διαδικασία απαιτούσε επιπλέον +κεφάλαιο και αρκετές εργατοώρες προκειμένου να γίνει πράξη. Επιπρόσθετα, η +λειτουργία του εξοπλισμού και η συντήρηση του είχε κι αυτή ένα σημαντικό +κόστος. -\section{\textlatin{Cloud Computing}} \label{cloudComputing} +Στις αρχές του 2000 ο τρόπος διεξαγωγής της παραπάνω διαδικασίας άλλαξε ριζικά +όταν η Amazon, ψάχνοντας τρόπους να κλιμακώσει τις υπηρεσίες που προσέφερε στον +τομέα του ηλεκτρονικού εμπορίου (e-commerce), δημιούργησε την θυγατρική της, +AWS (Amazon Web Services). Η AWS άρχισε να προσφέρει υπηρεσίες +νεφο-υπολογιστικής και συγκεκριμένα, την EC2 (Elastic Compute Cloud), μια +υπηρεσία τύπου IaaS (Infrastructure as a Service). Πρόκειται για την πρώτη +υπηρεσία ενοικίασης υπολογιστικών πόρων προς αξιοποίηση από οργανισμούς και +επιχειρήσεις προκειμένου να επιταχυνθεί η διαδικασία διάθεσης των δικών τους +υπηρεσιών. Αυτό το μοντέλο λειτουργίας παρέχει πολλά πλεονεκτήματα όπως το +μικρότερο κόστος εκκίνησης διάθεσης υπηρεσιών, η διευκόλυνση κλιμάκωσης τους +(είτε οριζόντιας όπου μοιράζεται ο φόρτος εργασίας σε παραπάνω διακομιστές είτε +κάθετης κατά την οποία ένας διακομιστής αναβαθμίζεται με ισχυρότερες +προδιαγραφές \footfullcite{cloudzeroScalability}) και η απαλλαγή ευθύνης +σχετικά με την συνεχή λειτουργία του εξοπλισμού στον οποίο στεγάζονται. -Ο όρος \textlatin{Cloud Computing} δεν είναι καινούριος. Ήρθε στο προσκήνιο -χάρη στην \textlatin{Amazon} όταν κοντά στο 2000 δημιούργησε τη θυγατρική της, -\textlatin{AWS} ψάχνοντας τρόπους να κλιμακώσει τις υπηρεσίες που προσέφερε -στον τομέα του \textlatin{e-commerce}. Από τότε πολλές εταιρίες όπως αυτές που -προαναφέρθηκαν στο κεφάλαιο [\ref{introduction}] αλλά και άλλες όπως -\textlatin{Linode}, \textlatin{Vultr} και \textlatin{Digital Ocean}, προσφέρουν -\textlatin{Cloud Computing} ως την κύρια υπηρεσία τους δίνοντας τη δυνατότητα -διάθεσης υπολογιστικών πόρων στους χρήστες με τη μορφή ενοικίασης ιδεατών -μηχανών. Ο έλεγχος τους γίνεται μέσω ενός \textlatin{API} με το οποίο -επικοινωνεί κανείς είτε μέσω γραφικού περιβάλλοντος από την ιστοσελίδα τους -είτε μέσω της γραμμής εντολών. +Λόγω της ευρείας αποδοχής της και των πολλών πλεονεκτημάτων που παρέχει, πολλές +άλλες εταιρίες όπως η Google, IBM και Microsoft άρχισαν να προσφέρουν και αυτές +υπηρεσίες ίδιου τύπου. Σήμερα, ο μέσος καταναλωτής έχει στην διάθεση του μια +πληθώρα εταιριών που προσφέρουν υπηρεσίες νεφο-υπολογιστικής και μάλιστα +μερικές από αυτές όπως η Linode, Vultr και Digital Ocean, προσφέρουν ως την +κύρια υπηρεσία τους τη δυνατότητα διάθεσης υπολογιστικών πόρων στους χρήστες με +τη μορφή ενοικίασης εικονικών μηχανών. -\section{\textlatin{Security of Cloud Computing}} \label{cloudComputingSecurity} +\section{Νεφο-υπολογιστική} \label{cloudComputing} -Όταν επιλέξει κανείς να δημιουργήσει ιδεατές μηχανές μέσω μιας από τις διάφορες -πλατφόρμες που το υποστηρίζουν, πολλές φορές για τη διευκόλυνση του χρήστη η -διαδικασία γίνεται μέσω γραφικού περιβάλλοντος της μορφής \textlatin{Point and -Click}. Τις περισσότερες φορές διατίθενται διάφορες διανομές \textlatin{Linux} -οι οποίες έχουν εγκατεστημένα και ρυθμισμένα εκ των προτέρων διάφορα λογισμικά -όπως \textlatin{MySQL} για διαχείριση βάσης δεδομένων και \textlatin{Nginx} για -διακομιστή ιστού. Αυτό καθιστά πολύ πιο εύκολη τη διαδικασία στον χρήστη μιας -και δε χρειάζεται να διαθέσει τον χρόνο εγκατάστασης και ρύθμισης τους αλλά -εισάγει ένα αναγκαίο μοντέλο εμπιστοσύνης ανάμεσα σε αυτόν και όποιον έκανε τις -ρυθμίσεις. Όπως αναφέρεται στο \textlatin{\citealt{balduzzi2012security}} και -θα το δούμε και παρακάτω πολλές φορές αυτή η διαδικασία δε γίνεται σωστά και -αφήνουν τον τελικό χρήστη και μερικές φορές ακόμα και τον πάροχο νέφους -ευάλωτους σε ρίσκα ασφαλείας όπως μη εγκεκριμένη πρόσβαση, μόλυνση με κακόβουλο -λογισμικό και υποκλοπές ευαίσθητων προσωπικών δεδομένων. +Με τον όρο νεφο-υπολογιστική (Cloud Computing), αναφερόμαστε σε ένα μοντέλο +παράδοσης υπολογιστικών πόρων κατά παραγγελία από μια επιχείρηση προς τους +καταναλωτές της. Οι υπηρεσίες που προσφέρει χωρίζονται σε τρεις κατηγορίες. Η +πρώτη, SaaS (Software as a Service) αναφέρεται στην διάθεση λογισμικού του +οποίου οι λειτουργικές και μη λειτουργικές απαιτήσεις αποτελούν ευθύνη του +παρόχου. Η κατηγορία PaaS (Platform as a Service) ορίζεται ως η διάθεση +πλατφόρμας ανάπτυξης/εκτέλεσης λογισμικού όπου μονάχα οι μη λειτουργικές +απαιτήσεις του καλύπτονται από τον πάροχο. Τέλος, η κατηγορία IaaS +(Infrastructure as a Service) μεταφράζεται ως προσφορά απομακρυσμένων +διακομιστών τους οποίους μια επιχείρηση μπορεί να αξιοποιήσει αναλόγως τις +ανάγκες της ακολουθώντας φυσικά τους όρους και προϋποθέσεις του παρόχου. Τα +πλεονεκτήματα που παρέχει η νεφο-υπολογιστική σε σχέση με την παραδοσιακή +μέθοδο διάθεσης υπηρεσιών είναι αρκετά αλλά αυτά που ξεχωρίζουν από μεριάς των +πελατών είναι η απόλυτη απαλλαγή ευθύνης των υποδομών νέφους, η απαράμιλλη +ταχύτητα διάθεσης και κλιμάκωσης των υπηρεσιών και η εξάλειψη περιττού κόστους +λόγω του ευέλικτου μοντέλου χρέωσης όπου προσμετρούνται μόνο οι πόροι που +χρησιμοποιήθηκαν. -\section{\textlatin{Docker}} \label{docker} +Σημαντικό ρόλο στην ευρεία αποδοχή των υπηρεσιών που προσφέρονται μέσω της +νεφο-υπολογιστικής είχε η ευκολία αλλά και ευελιξία των μεθόδων διάθεσης και +μετέπειτα διαχείρισης τους. Σε κάθε περίπτωση γίνεται χρήση ενός API το οποίο +είναι προσπελάσιμο έμμεσα μέσω ενός γραφικού περιβάλλοντος (self-service +portal), εργαλείου γραμμής εντολών ή με προγραμματιστικό τρόπο (πχ. με τη χρήση +SDKs (Software Development Kits)). -\subsection{Ο ρόλος του \textlatin{Docker}} \label{dockerRole} +\section{Ασφάλεια Περιβαλλόντων Νέφους} \label{cloudComputingSecurity} -Το \textlatin{Docker} είναι μια μηχανή δοχείων που επιτρέπει τον διαχωρισμό -ανάμεσα στον πηγαίο κώδικα, τις βιβλιοθήκες και εξαρτήσεις ενός λογισμικού από -το κύριο σύστημα. Πρόκειται για μια πλατφόρμα που διαθέτει μηχανισμούς για -συναρμολόγηση, θέση σε λειτουργία, εκτέλεση, ενημέρωση και διαχείριση των -προγραμμάτων σε μορφή δοχείων. +Η ασφάλεια των περιβαλλόντων νέφους είναι ένα θέμα που απασχολεί πολύ τους +χρήστες και ακόμα περισσότερο τις επιχειρήσεις που βασίζονται σε υπηρεσίες +νεφο-υπολογιστικής για την διάθεση των δικών τους υπηρεσιών. Η επίτευξη της +εξαρτάται από 3 βασικούς παράγοντες. Ο πρώτος είναι η ασφάλεια των υποδομών +νέφους και στην περίπτωση χρήσης υπηρεσιών IaaS υπεύθυνος είναι ο πάροχος +νέφους. Ο δεύτερος παράγοντας είναι η ασφάλεια των τεχνολογιών εικονικοποίησης +που χρησιμοποιούνται όπου υπεύθυνος είναι εν μέρει ο πάροχος για τις +τεχνολογίες που επέλεξε προκειμένου να διαθέσει τους απομακρυσμένους +διακομιστές του και ο τελικός χρήστης εάν προβεί στην χρήση δοχείων. Ο τρίτος +και τελευταίος παράγοντας είναι οι ενέργειες στις οποίες οφείλει να προβεί ο +χρήστης προκειμένου να διατηρήσει ή να ενισχύσει την ασφάλεια σύμφωνα με τις +ανάγκες του. -Πολλά λειτουργικά συστήματα αλλά και αυτά που κάνουν χρήση του πυρήνα -\textlatin{Linux} διαθέτουν μηχανισμούς απομόνωσης διεργασιών και δυνατότητες -εικονικοποίησης όπως είναι τα \textlatin{control groups} για την ενάθεση πόρων -μεταξύ διεργασιών και \textlatin{namespaces} για τον περιορισμό πρόσβασης ή -ορατότητας αυτών σε σχέση με άλλες διεργασίες ή περιοχές του συστήματος -δημιουργώντας έτσι δοχεία. +Όταν επιλέξει ένας χρήστης να δημιουργήσει εικονικές μηχανές μέσω μιας από τις +πλατφόρμες IaaS, προς διευκόλυνσή του η διαδικασία γίνεται και μέσω γραφικού +περιβάλλοντος της μορφής Point and Click. Στις εικονικές μηχανές που +προσφέρονται τις περισσότερες φορές διατίθενται διάφορες διανομές λειτουργικού +συστήματος Linux, οι οποίες ενδέχεται να έχουν εγκατεστημένα και ρυθμισμένα εκ +των προτέρων διάφορα λογισμικά, όπως το σύστημα διαχείρισης βάσεων δεδομένων +MySQL και το διακομιστή ιστού Nginx. Με αυτό τον τρόπο, η διαδικασία +δημιουργίας εικονικής μηχανής είναι αρκετά εύκολη για τον χρήστη, ο οποίος δεν +χρειάζεται να έχει ειδικές γνώσεις στο υλικό για να το πετύχει αυτό. Στην +προκειμένη περίπτωση, ενώ υπήρχε μηδενική δυσκολία για την απόκτηση εικονικής +μηχανής εξοπλισμένης με λειτουργικό σύστημα και πιθανότατα απαραίτητα για τον +χρήση προγράμματα, η ασφάλεια της δεν είναι πάντοτε εγγυημένη. Πολλά από τα +προγράμματα που θα χρησιμοποιήσει ο χρήστης δεν παρέχουν εξαρχής +ενεργοποιημένες τις παραμέτρους ασφαλείας που μπορεί να υποστηρίζουν διότι δεν +δύναται να υπάρχει μια ασφαλής ρύθμιση που να καλύπτει όλα τα πιθανά σενάρια +χρήσης. Επιπλέον, η ρύθμιση των παραμέτρων ασφαλείας είναι μια διαδικασία που +απαιτεί εξειδικευμένες γνώσεις και είναι αρκετά εύκολο όχι μόνο να παραλειφθεί +αλλά και να γίνει λανθασμένα λόγω έλλειψης οικειότητας με τα εργαλεία που έχει +στην διάθεση του. -\pagebreak +Όπως αναφέρεται και στο \citealt{balduzzi2012security}, υπάρχουν υπηρεσίες IaaS +που προσφέρουν διανομές λειτουργικού συστήματος Linux με εγκατεστημένα και +ρυθμισμένα εκ τω προτέρων προγράμματα από τρίτους. Σε ορισμένες περιπτώσεις +όπου υπάρχει τυφλή εμπιστοσύνη προς την ορθότητα των ρυθμίσεων αυτών σε +συνδυασμό με έλλειψη γνώσης των εργαλείων, ενδέχεται λόγω ανθρώπινου λάθους ή +στοχευμένα, να μένει ο τελικός χρήστης ευάλωτος σε ρίσκα ασφαλείας όπως μη +εξουσιοδοτημένη πρόσβαση, μόλυνση με κακόβουλο λογισμικό και υποκλοπές +ευαίσθητων προσωπικών δεδομένων. Στην περίπτωση που και ο πάροχος νέφους έχει +παραλείψει να εφαρμόσει τις απαραίτητες ενημερώσεις ασφαλείας στις τεχνολογίες +εικονικοποίησης που χρησιμοποιεί, είναι πιθανό κάποιο από τα προγράμματα αυτά +να μπορέσει να πραγματοποιήσει μια επίθεση hyperjacking +\footfullcite{Hyperjacking} και να αποκτήσει έλεγχο του υπερ-επόπτη με +αποτέλεσμα να είναι σε θέση να προκαλέσει ζημιές είτε σε διαφορετικές εικονικές +μηχανές είτε στον διακομιστή στον οποίο εκτελείται. -\subsection{Πως προέκυψε} \label{dockerOrigins} +\clearpage -Λόγω δυσκολίας αυτοματοποίησης της διαχείρισης των δοχείων αυτών δημιουργήθηκε -το \textlatin{Docker} τη χρονολογία 2013 απλοποιώντας κατά πολύ την ανάπτυξη -και παράδοση κατανεμημένων εφαρμογών. Οι λειτουργίες που προσφέρει, το -καθιστούν την καταλληλότερη επιλογή για επιχειρήσεις που λειτουργούν με ένα -υβριδικό μοντέλο νέφους και εγκαταστάσεων ή αποκλειστικά στο \textlatin{Cloud}. -Το βασικότερο από τα πλεονεκτήματα του σε σχέση με παραδοσιακές εικονικές -μηχανές είναι το γεγονός ότι όλα τα δοχεία μοιράζονται τον ίδιο πυρήνα και -επομένως δε χρειάζεται να απονεμηθούν πόροι για εικονικοποίηση ολόκληρου του -λειτουργικού συστήματος. Επιπλέον, τα δοχεία μπορούν να εκτελεστούν σε κάθε -περιβάλλον που έχει εγκατεστημένο το \textlatin{Docker} και πολύ ταχύτερα από -μια εικονική μηχανή κάνοντας τα ιδανικά για \textlatin{CI/CD} αλλά και -πρακτικές \textlatin{Agile} ή \textlatin{DevOps}. Τέλος, λόγω των δυνατοτήτων -του προσφέρει μεγαλύτερη αποδοτικότητα πόρων αφού μπορεί κανείς να εκτελέσει -πολύ περισσότερα αντίγραφα ενός προγράμματος σε σχέση με τον αριθμό που θα -μπορούσε με χρήση ιδεατών μηχανών, κάτι που μειώνει ιδιαίτερα το κόστος -λειτουργίας. +\section{Εικονικοποίηση και τεχνολογίες υλοποίησης της} \label{virtualizationTechnologiesIntroduction} -\section{\textlatin{Why Docker}} \label{whyDocker} +Η εικονικοποίηση είναι ένας όρος που χρησιμοποιούμε όταν θέλουμε να αναφερθούμε +στην αναπαράσταση πόρων σε εικονική μορφή με σκοπό την αναδιαμόρφωση τους ούτως +ώστε να ικανοποιούνται οι ανάγκες ενός συστήματος. Εφαρμόζεται σε μια πληθώρα +πόρων όπως οι διακομιστές, το λειτουργικό σύστημα, ακόμα και τα δεδομένα. Η πιο +συνηθισμένη χρήση εικονικοποίησης είναι αυτή των διακομιστών η οποία αποτελεί +και τον πυλώνα της νεφο-υπολογιστικής. Προκειμένου να επιτευχθεί, απαιτείται η +χρήση ενός υπερ-επόπτη. Ένα λογισμικό υπεύθυνο για την κατάτμηση των φυσικών +πόρων ενός διακομιστή σε μια ή περισσότερες εικονικές αναπαραστάσεις ενός +συνόλου αυτών με σκοπό να χρησιμοποιηθούν ως ξεχωριστοί διακομιστές. -Η δημοτικότητα του έχει συνταυτίσει τους όρους \textlatin{Docker} και -\textlatin{Container}. Παρόλα αυτά ιστορικά, οι πρώτες τεχνολογίες περί δοχείων -υπήρχαν πολύ πριν βγει στην αγορά. Συγκεκριμένα το 2008 εφαρμόστηκε στον πυρήνα -του \textlatin{Linux} το \textlatin{LXC} που επέτρεπε πλήρη εικονικοποίηση ενός -στιγμιότυπου \textlatin{Linux}, ενώ η εντολή \textlatin{chroot} που προϋπήρχε -από το 1979 στην έβδομη έκδοση του \textlatin{Unix} έδινε τη δυνατότητα -δημιουργίας και φιλοξενίας ενός ξεχωριστού εικονικού αντιγράφου του συστήματος -λογισμικού. +Για έναν υπερ-επόπτη υπάρχουν δύο κατηγορίες στις οποίες μπορεί να ανήκει. Είτε +πρόκειται για υπερ-επόπτη τύπου 1 στην περίπτωση απευθείας πρόσβασης με το +υλικό, είτε τύπου 2 εάν υπάρχει ήδη λειτουργικό σύστημα εγκατεστημένο στον +υποκείμενο διακομιστή προς κατάτμηση. Η επιλογή τύπου υπερ-επόπτη είναι άμεσα +εξαρτώμενη από τις ανάγκες του κάθε χρήστη. Στην περίπτωση που η ταχύτητα και η +απόδοση είναι υψίστης σημασίας, η άμεση πρόσβαση του υπερ-επόπτη τύπου 1 στο +υλικό συμβάλει στην επίτευξη της διατήρησης των δύο αυτών προδιαγραφών σε +κατάλληλες τιμές. Από την άλλη, ένας υπερ-επόπτης τύπου 2 δεν έρχεται σε +αντιπαράθεση με το υποκείμενο ΛΣ και επιτρέπει την χρήση προγραμμάτων που το ΛΣ +πιθανόν να μην είναι σε θέση να εκτελέσει. -\section{\textlatin{Advantages Over LXC and other older technologies}} \label{advantagesOverLXC} +\clearpage -Ενώ χρησιμοποιούνται ακόμα και στις μέρες μας, δεν προσφέρουν την ίδια -διαφάνεια χρήσης αφού πολλές φορές αναφέρονται σε ρυθμίσεις συγκεκριμένες για -την εκάστοτε συσκευή. Το \textlatin{Docker} ωστόσο, δίνει τη δυνατότητα -κατασκευής μιας εφαρμογής που θα συνεχίσει να τρέχει ακόμα και αν κομμάτια της -χρειάζονται επισκευή αφού πολλές διεργασίες συνδυάζονται σε ένα δοχείο. -Διευκολύνει την κατασκευή δοχείων βάζοντας κριτήρια όπως τον κώδικα της -εφαρμογής και κάθε ένα μπορεί να χρησιμοποιηθεί ως πρότυπο για τη δημιουργία -καινούριου. Το πιο σημαντικό από όλα όμως είναι το γεγονός πως εξαιτίας της -δημοτικότητας του, ο καθένας έχει πρόσβαση σε χιλιάδες δοχεία που ανέβασε -κάποιος άλλος. +Η εικονικοποίηση διακομιστών χωρίζεται σε δύο κατηγορίες βάσει της μεθόδου +επίτευξης της. Την πλήρη εικονικοποίηση και την παρα-εικονικοποίηση +\footfullcite{abacusFullParaOSVirtualization}. Στην πρώτη περίπτωση το +λειτουργικό σύστημα που εκτελείται στον εικονικό διακομιστή συμπεριφέρεται όπως +θα συμπεριφερόταν σε έναν φυσικό διακομιστή. Αυτό συμβαίνει διότι από μεριάς +του λειτουργικού συστήματος δεν υπάρχει επίγνωση της εικονικοποίησης που έχει +λάβει μέρος για να δημιουργηθούν οι εικονικοί πόροι στους οποίους στεγάζεται. Η +πλήρης εικονικοποίηση μπορεί να είναι δύο ειδών. Υποβοηθούμενη από το λογισμικό +ή από το υλικό. Στο πρώτο είδος, πραγματοποιείται εικονικοποίηση ολόκληρου του +υλικού μέσω του υπερ-επόπτη που εκτελείται στο ΛΣ ενώ στο δεύτερο όπου δεν +υπάρχει ΛΣ, δύναται το λειτουργικό σύστημα του εικονικού διακομιστή να κάνει +χρήση της φυσικής κεντρικής μονάδας επεξεργασίας του διακομιστή φιλοξενίας εάν +αυτή το υποστηρίζει \footfullcite{geeksforgeeksHardwareAssistedVirtualization}. +Στην περίπτωση της παρα-εικονικοποίησης το λειτουργικό σύστημα αναγνωρίζει την +ύπαρξη του υπερ-επόπτη και απαιτείται η τροποποίηση και των δύο ώστε να μπορούν +να επικοινωνούν με χρήση υπερ-κλήσεων. Αν και το γεγονός αυτό μειώνει την +συμβατότητα σε σχέση με την πλήρη εικονικοποίηση, η άμεση επικοινωνία του +λειτουργικού συστήματος με τον υπερ-επόπτη συμβάλει στην αύξηση της +αποδοτικότητας. -\section{\textlatin{Docker In Cloud Computing}} \label{dockerInCloudComputing} +\section{Εισαγωγή στα δοχεία και τον τρόπο λειτουργίας τους} \label{containerTechnologies} -Λόγω της αρχιτεκτονικής του είναι πολύ σύνηθες η θέση σε λειτουργία, εφαρμογών -μέσω \textlatin{Docker} επειδή απομονώνει τις αναγκαίες βιβλιοθήκες και -εξαρτήσεις τους από το υπόλοιπο σύστημα και επιτρέπει την αποδοτικότερη -διαχείριση τους μέσω ειδικών εντολών. Τα προβλήματα που μπορεί να προέκυπταν σε -ένα περιβάλλον νέφους όπως μη συμβατές εκδόσεις προγραμμάτων και δυσκολία -διαχείρισης τους τα λύνει δημιουργώντας έναν συστημικό τρόπο διανομής και -ελέγχου εφαρμογών. Καθιστά επίσης και πολύ εύκολη τη μεταφορά τους σε -οποιοδήποτε μηχάνημα. +Τα δοχεία αποτελούν και αυτά κομμάτι των τεχνολογιών εικονικοποίησης αλλά σε +επίπεδο λειτουργικού συστήματος. Κατά την περιγραφή της διαδικασίας δημιουργίας +δοχείων δεν χρησιμοποιείται πλέον ο όρος εικονικοποίηση αλλά δοχειοποίηση +(containerization). Σε αντίθεση με τις τεχνολογίες εικονικοποίησης που +αναφέρθηκαν στο \ref{virtualizationTechnologiesIntroduction}, για την +δοχειοποίηση δεν είναι αναγκαία η ύπαρξη υπερ-επόπτη αλλά έναν παρόμοιο ρόλο +παίρνει η μηχανή δοχείων. Επιπλέον, ενώ οι εικονικές μηχανές καταλήγουν να +περιέχουν εικονικό αντίγραφο του υλικού, δικό τους λειτουργικό σύστημα και +εγκατεστημένα πακέτα προς υποστήριξη ενός λογισμικού, τα δοχεία αποτελούνται +μονάχα από το λογισμικό προς εκτέλεση και τις εξαρτήσεις που χρειάζεται +προκειμένου να είναι λειτουργικό. -\section{\textlatin{Docker Security}} \label{dockerSecurity} +\clearpage -Μία από τις πιο σημαντικές προκλήσεις κατά την εκτέλεση υπηρεσιών σε δημόσια -εικονικά περιβάλλοντα είναι η διατήρηση και επίτευξη της ασφάλειας. Παραδοσιακά -κατά την επιλογή χρήσης τεχνολογιών εικονικοποίησης ανάμεσα στις επιλογές -\textlatin{hypervisor-based} και \textlatin{container-based} είθισται να είναι -προτιμότερη η δεύτερη. Μια λογική απόφαση εάν αναλογιστεί κανείς τα -πλεονεκτήματα που προσφέρει στην απόδοση και την αποδοτική αλλά και εύκολη -διαχείριση των υπηρεσιών όταν διατίθενται σε μορφή δοχείων. Παρ' όλα αυτά, για -τον ίδιο λόγο που την καθιστά καταλληλότερη είναι και λιγότερο ασφαλής. Η -στρώση απομόνωσης ανάμεσα στα προγράμματα και το μηχάνημα στο οποίο εκτελούνται -αποτελεί ένα παραπάνω εμπόδιο που θα πρέπει να ξεπεράσει ένας επιτιθέμενος για -να προκαλέσει ζημιές στο σύστημα, αφού θα πρέπει πρώτα να περάσει από τον -εικονικό πυρήνα και μετά από τον \textlatin{hypervisor} έναντι στην -αρχιτεκτονική δοχείων όπου υπάρχει άμεση επικοινωνία με τον πυρήνα του +Τα απαραίτητα συστατικά για την επίτευξη της δοχειοποίησης είναι μια εικόνα +δοχείου και μια μηχανή δοχείων. Στην εικόνα δοχείου εμπεριέχονται τα συστατικά +μέρη ενός λογισμικού και οδηγίες συναρμολόγησης του προς ανάγνωση από την +μηχανή δοχείων. Από εκεί και πέρα, για την δημιουργία δοχείων υπάρχει μια +αλληλουχία βημάτων που πρέπει να έρθει εις πέρας. Αρχικά, η μηχανή δοχείων θα +προσπελάσει την εικόνα δοχείου προκειμένου να εξακριβώσει τις προδιαγραφές του. +Έπειτα, με την βοήθεια των μεθόδων απομόνωσης που έχει στην διάθεση της μέσω +των μηχανισμών εικονικοποίησης του πυρήνα του λειτουργικού συστήματος +φιλοξενίας, θα δημιουργήσει ένα εικονικό περιβάλλον απομονωμένο από το φυσικό +ήδη υπάρχον και τέλος, θα πραγματοποιήσει εκκίνηση του δοχείου ως διεργασία του συστήματος. -\pagebreak +Ορισμένα από αυτά τα βήματα περιλαμβάνουν και άλλες διαδικασίες για τις οποίες +είναι υπεύθυνα συγκεκριμένα προγράμματα με τα οποία συνεργάζεται η μηχανή +δοχείων. Υπάρχουν και μηχανές δοχείων χαμηλού επιπέδου έναντι των πιο γνωστών +υψηλού επιπέδου όπως το Docker, στις οποίες λείπουν λειτουργίες όπως η απόκτηση +εικόνων δοχείων από ένα κεντρικό αποθετήριο και ο έλεγχος εγκυρότητας των +ρυθμίσεων των εικόνων αυτών. Οι μηχανές δοχείων υψηλού επιπέδου είναι +ουσιαστικά μια συλλογή εργαλείων που διευκολύνουν την δοχειοποίηση +απαλλάσσοντας τον χρήστη από την ανάγκη της χειροκίνητης εκτέλεσης των βημάτων +της \footfullcite{sysdigContainerRuntime}. -\subsection{\textlatin{Docker Security Advantages}} \label{dockerSecurityAdvatnages} +Το τελικό επιθυμητό αποτέλεσμα είναι η δημιουργία ενός απομονωμένου +περιβάλλοντος στο οποίο πραγματοποιείται η εκτέλεση ενός λογισμικού με +βιβλιοθήκες και εξαρτήσεις διαφορετικών εκδόσεων συγκριτικά με αυτές που μπορεί +να προϋπάρχουν στο σύστημα. Το περιβάλλον αυτό είναι υποχρεωμένο να +χρησιμοποιήσει ένα υποσύνολο των πόρων του συστήματος που του απονεμήθηκε μέσω +της μηχανής δοχείων. Τα παραπάνω είναι εφικτά και με την χρήση εικονικών +μηχανών αλλά με κόστος την επιβάρυνση του συστήματος φιλοξενίας λόγω της +αδυναμίας διαμοιρασμού των πόρων με τον τρόπο που το επιτυγχάνουν τα δοχεία. +Κάθε δοχείο μοιράζεται τον πυρήνα του λειτουργικού συστήματος φιλοξενίας με τα +υπόλοιπα και κάθε στρώση μιας εικόνας δοχείου αντιστοιχουμένη σε ένα +στιγμιότυπο λογισμικού, δύναται να χρησιμοποιηθεί ταυτοχρόνως από περισσότερα +του ενός δοχεία προς αποφυγή διπλής αποθήκευσης +\footfullcite{codemotionContainerImages}. Επιπλέον, κάθε εικόνα δοχείου δύναται +να χρησιμοποιηθεί ως πρότυπο για την δημιουργία μιας καινούριας, καθιστώντας +έτσι ευκολότερη την επεκτασιμότητα ενός λογισμικού σε αντίθεση με τις εικονικές +μηχανές όπου κάθε νέο στιγμιότυπο τους απαιτεί την επαναληπτική εκτέλεση των +βημάτων δημιουργίας τους. -Με τη χρήση της αρχιτεκτονικής δοχείων και ειδικότερα του \textlatin{Docker}, -έρχονται αρκετά εγγενή οφέλη ασφαλείας \cite{dockerInherentSecurity}. Ένα -βασικό όφελος αποτελεί η διαφάνεια. Λόγω της φύσης τους, τα δοχεία επιτρέπουν -την ακριβή κατανόηση του κώδικα που εκτελείται μέσα σε αυτά σε αντίθεση με μια -εικονική μηχανή. Επιπρόσθετα, κατά την εμφάνιση προβλημάτων σε μία υπηρεσία με -αρχιτεκτονική \textlatin{microservices} που κάνει χρήση δοχείων, είναι διακριτή -η διευκόλυνση στον εντοπισμό της πηγής τους. Ένα εξίσου σημαντικό όφελος -αποτελεί η μικρότερη επιφάνεια επίθεσης. Σε ένα παραδοσιακό περιβάλλον -εκτέλεσης όπου γίνεται χρήση εικονικών διακομιστών, πρέπει να προστατευτούν τα -μηχανήματα, ο διακομιστής και η υπηρεσία η ίδια, ενώ σε περιβάλλον δοχείων τα -μέρη που χρήζουν προστασίας είναι ο διακομιστής, η υπηρεσία και η μηχανή -δοχείων η οποία ασφαλίζεται ευκολότερα από μια εικονική μηχανή. Τέλος, δύο -ακόμα υψίστης σημασίας πλεονεκτήματα είναι η ευκολία εφαρμογής ενημερώσεων -ασφαλείας και η σταθερότητα του περιβάλλοντος. Η ενημέρωση ενός δοχείου είναι -μια διαδικασία δύο μόνο εντολών ενώ η ευχέρεια της άγνοιας των μεταβλητών -κομματιών του κάθε δοχείου καθιστά δυνατή την ασφάλιση της υπηρεσίας με τις -συγκεκριμένες εξαρτήσεις που χρειάζεται ανεξαρτήτως των εκδόσεων που μπορεί να -βρίσκονται ήδη στο σύστημα. +\subsection{Μηχανές δοχείων και εικονικοποίηση σε επίπεδο ΛΣ} \label{osVirtualization} -\subsection{\textlatin{Docker Security Disadvantages}} \label{dockerSecurityDisadvantages} +Πολλά λειτουργικά συστήματα, ειδικά αυτά που κάνουν χρήση του πυρήνα Linux +διαθέτουν μηχανισμούς απομόνωσης διεργασιών και δυνατότητες εικονικοποίησης +(λειτουργικού συστήματος), όπως είναι οι ομάδες ελέγχου (control groups) με τις +οποίες μπορεί να επιτευχθεί ο περιορισμός πόρων σε ένα υποσύνολο διεργασιών και +οι χώροι ονομάτων χρηστών (user namespaces) που προσφέρουν την δυνατότητα +περιορισμού των δικαιωμάτων που έχει μια διεργασία στο σύστημα αρχείων. Με την +βοήθεια των εργαλείων που έχουν στην διάθεση τους, δύναται να πραγματοποιηθεί +εικονικοποίηση σε επίπεδο ΛΣ. Μια μέθοδος εικονικοποίησης διακομιστών όπου ο +πυρήνας ενός ΛΣ επιτρέπει την ύπαρξη πολλαπλών απομονωμένων περιβαλλόντων +\footfullcite{teimouriOsVirtualizationDefinition}, τα οποία συμπεριφέρονται ως +ξεχωριστοί διακομιστές \footfullcite{webopediaOsVirtualizationDefinition}. -Παρ'' όλα τα πλεονεκτήματα του όπως η δυνατότητα απαλλαγής από εξαρτήσεις του -εκάστοτε συστήματος και η ευελιξία διαχείρισης των δοχείων του, υπόκειται σε -αρκετές ατασθαλίες. Οι πιο αξιοσημείωτες αυτών είναι η ανάγκη του να τρέχει υπό -την κυριότητα του \textlatin{root} και η αρχικά ελαστικότερη απ'' ό,τι -χρειάζεται απομόνωση του από τον πυρήνα του συστήματος. Με τα παραπάνω -δεδομένα, μετά από μία επιτυχημένη επίθεση τύπου \textlatin{Container Escape}, -ο επιτιθέμενος έχει δικαιώματα \textlatin{root} και το σύστημα βρίσκεται υπό το -έλεος του. +Μια από τις υποχρεώσεις της μηχανής δοχείων είναι η επικοινωνία με τον πυρήνα +του λειτουργικού συστήματος φιλοξενίας για να επιτευχθεί αυτή η εικονικοποίηση. +Πρόκειται για μια διαδικασία κατά την οποία ένα λειτουργικό σύστημα επιτρέπει +την απομόνωση των διεργασιών που εκτελούνται σε χώρους ονομάτων και την ανάθεση +αποκλειστικών πόρων συστήματος σε αυτές. Με αυτό τον τρόπο, οι διεργασίες είναι +ανεξάρτητες μεταξύ τους και απομονωμένες ενώ διαμοιράζονται με ασφαλή τρόπο (σε +ένα βαθμό) τους πόρους του συστήματος. Ένα δοχείο μπορεί να θεωρηθεί πως +αντιστοιχεί σε μια τέτοια απομονωμένη διεργασία. -\subsection{\textlatin{Overcoming Docker's security disadvantages}} \label{overcomingDockerDisadvantages} +\subsection{Πλεονεκτήματα δοχείων έναντι εικονικών μηχανών} \label{containerAdvantages} + +Ενώ μια εικονική μηχανή είναι μια πλήρης αναπαράσταση ενός φυσικού διακομιστή, +ένα δοχείο εξομοιώνει μονάχα το περιβάλλον εκτέλεσης ενός λογισμικού. Αυτό +σημαίνει πως εάν θεωρηθεί ως τελικός στόχος η εκτέλεση ενός λογισμικού +απομονωμένο από το υπόλοιπο σύστημα, αυτό επιτυγχάνεται με δύο διαφορετικούς +τρόπους αφού οι εικονικές μηχανές και τα δοχεία χρησιμοποιούν διαφορετικού +είδους εικονικοποίηση. Στην περίπτωση των δοχείων δεν έχουμε απομόνωση μηχανών +αλλά διεργασιών. Γεγονός που συμβάλει στην αποφυγή της επιβάρυνσης του +συστήματος που θα επιβάλλονταν από τις διεργασίες του υπερ-επόπτη και της +καθυστέρησης που θα υπήρχε για την εκκίνηση ενός ολόκληρου λειτουργικού +συστήματος. Επιπλέον, η μη χρήση τεχνολογιών εικονικοποίησης σε επίπεδο υλικού +αυξάνει την μεταφερσιμότητα των δοχείων αφού σε μια εικόνα δοχείου μπορούν να +ορισθούν όλες οι απαραίτητες εξαρτήσεις ενός λογισμικού και να αναδημιουργηθούν +σε οποιοδήποτε περιβάλλον νέφους. + +Παρ' όλο που πολλές φορές τα δοχεία συγχέονται με τις εικονικές μηχανές, οι δύο +αυτές έννοιες έχουν αρκετές διαφορές στην αρχιτεκτονική τους. Στην παραδοσιακή +εικονικοποίηση είτε αυτή γίνεται στις υπάρχουσες υποδομές μια επιχείρησης είτε +σε ένα περιβάλλον νέφους, ένας υπερ-επόπτης πρέπει να χρησιμοποιηθεί για να +εικονικοποιήσει φυσικό υλικό. Κάθε εικονική μηχανή έχει ένα δικό της +λειτουργικό σύστημα και ένα εικονικό αντίγραφο του υλικού που απαιτεί για να +εκτελεστεί μαζί με μια εφαρμογή, τις βιβλιοθήκες και τις εξαρτήσεις της. Από +την άλλη, ένα δοχείο αντί να εικονικοποιήσει το υλικό, εικονικοποιεί το +λειτουργικό σύστημα ούτως ώστε κάθε δοχείο να περιέχει μόνο την εφαρμογή, τις +βιβλιοθήκες και τις εξαρτήσεις της \footfullcite{ibmContainerVsVm}. + +Η εικόνα \ref{fig:containerVsVm} παρουσιάζει τη διαφορά των δύο αρχιτεκτονικών + +\begin{center} +\begin{figure}[!ht] +\centering + \includegraphics[width = .8\textwidth]{Figures/RedHat_Virtualization/virtualization-vs-containers_transparent.png} + \captionof{figure}{Εικονικοποίηση έναντι δοχείων \cite{redhatVirtualizationDefinition}} + \label{fig:containerVsVm} +\end{figure} +\vspace*{-30pt} +\end{center} + +\clearpage + +Η απουσία του εικονικού λειτουργικού υλικού είναι που καθιστά τα δοχεία +γρήγορα, φορητά και μικρότερα σε μέγεθος. Για να γίνει πιο εμφανής η διαφορά, +σύμφωνα με τη Red Hat \footfullcite{redhatContainerVsVm}, το μέγεθος των +εικονικών μηχανών είναι της τάξεως των gigabyte ενώ των δοχείων είναι της +τάξεως megabyte. Πολλές φορές, όπως αναφέρεται και στο \cite{ibmContainerVsVm} +\footfullcite{ibmContainerVsVm}, τα δοχεία χρησιμοποιούνται για εφαρμογές +αρχιτεκτονικής μικρο-υπηρεσιών (microservices), όπου κάθε ξεχωριστό κομμάτι +(δηλ. μικρο-υπηρεσία) αντιπροσωπεύει ένα συστατικό της εφαρμογής που παίρνει +την μορφή δοχείου. Με αυτόν τον τρόπο, είναι ευκολότερη η κλιμάκωση μιας +εφαρμογής απ' ότι θα ήταν με μια μονολιθική αρχιτεκτονική. Αυτό συμβαίνει διότι +μπορεί να κλιμακώνεται μόνο το μέρος ή τα μέρη της που έχουν αύξηση του φόρτου +εργασίας τους, μέσω της χρήσης περισσότερων δοχείων που αντιστοιχούν σε αυτά τα +μέρη/μικρο-υπηρεσίες. Αντιθέτως, η κλιμάκωση μιας μονολιθικής εφαρμογής θα +απαιτούσε την δημιουργία πολλαπλών δοχείων μεγάλου μεγέθους ή πολλαπλών +εικονικών μηχανών, οδηγώντας σε μεγάλη και αχρείαστη σπατάλη πόρων. Λόγω του +γεγονότος πως μια εφαρμογή αποτελείται από πολλαπλές μικρο-υπηρεσίες, οι οποίες +μπορεί να έχουν πολλαπλά στιγμιότυπα (δηλ. μεγάλο αριθμό δοχείων) ανά πάσα +χρονική στιγμή, απαιτείται η χρήση μιας πλατφόρμας ενορχήστρωσης δοχείων για +την αυτοματοποίηση της εγκατάστασης, εκτέλεσης και κλιμάκωσης της εφαρμογής +κατά μήκος πολλαπλών πόρων (δηλ. εικονικών ή φυσική μηχανών) όπως είναι το +Kubernetes ή το Docker Swarm. + +Το μόνο μειονέκτημα της τεχνολογίας των δοχείων, το οποίο δεν επηρεάζει κατά +πολύ τη χρήση τους, είναι το γεγονός ότι δοχεία που δημιουργήθηκαν για να +εκτελούν προγράμματα που απαιτούν την ύπαρξη του λειτουργικού συστήματος +Windows δε μπορούν να εκτελεστούν σε ένα περιβάλλον με τον πυρήνα του Linux και +το ίδιο ισχύει και αντιστρόφως \footfullcite{containerOSlimitations}. + +Εν γένει τα βασικότερα πλεονεκτήματα των δοχείων σε σχέση με τις εικονικές +μηχανές είναι ο διαμοιρασμός του πυρήνα του λειτουργικού συστήματος φιλοξενίας +και η μεταφερσιμότητα τους. Το γεγονός ότι μοιράζονται τον ίδιο πυρήνα έχει ως +αποτέλεσμα να μην χρειάζεται να απονεμηθούν πόροι για εικονικοποίηση μηχανών με +σκοπό την στέγαση ενός ολόκληρου ξεχωριστού λειτουργικού συστήματος (όπως +γίνεται στις εικονικές μηχανές). Επιπλέον, τα δοχεία μπορούν να εκτελεστούν σε +οποιοδήποτε περιβάλλον είναι ήδη εγκατεστημένη μια μηχανή δοχείων (όπως το +Docker) όπου μάλιστα η ταχύτητα δημιουργίας τους είναι πολύ πιο γρήγορη σε +σχέση με αυτή των εικονικών μηχανών λόγω του μικρού μεγέθους και των ελάχιστων +μη λειτουργικών απαιτήσεων τους. + +\subsection{Εργαλεία διαχείρισης δοχείων και έλευση του Docker} \label{containerManagement} + +Στις μέρες μας, η δημοτικότητα του Docker έχει συνταυτίσει του όρους Docker και +Container (δοχείο) αν και είναι διαφορετικοί. Παρόλα αυτά η ιδέα της +δημιουργίας απομονωμένων περιβαλλόντων εκτέλεσης λογισμικού υπήρχε προτού βγει +το Docker στην αγορά. Ιστορικά, οι πρώτες τεχνολογίες περί δοχείων έκαναν την +είσοδο τους από το 1979, όταν εισήχθη το chroot \footfullcite{chrootCommand} +στην έβδομη έκδοση του Unix \footfullcite{containerHistory}. Πρόκειται για μια +εντολή που περιορίζει την πρόσβαση αρχείων που διαθέτει μια εφαρμογή, σε ένα +συγκεκριμένο φάκελο ο οποίος ορίζεται ως ο καινούριος διαχειριστικός (root). Ο +κύριος σκοπός του chroot ήταν η ενίσχυση της ασφάλειας ούτως ώστε στην +περίπτωση εκμετάλλευσης μιας εσωτερικής ευπάθειας της εφαρμογής, να παραμένουν +ανεπηρέαστα τα μέρη του συστήματος εκτός του φακέλου στον οποίο είχε πρόσβαση. +Εκείνη την εποχή αυτό ήταν αρκετό, αλλά οι απαιτήσεις ασφαλείας με τον καιρό +αυξάνονταν και υπήρχε η ανάγκη διαφορετικών μεθόδων απομόνωσης μιας και από +κατασκευής του, το chroot δεν περιόριζε έναν χρήστη ή μια διεργασία με +διαχειριστικά δικαιώματα \footfullcite{chrootRestrictions}. Μερικά χρόνια +αργότερα, το 2004 δημιουργήθηκαν και ενσωματώθηκαν στον πυρήνα του Linux οι +ομάδες ελέγχου με την βοήθεια των οποίων ήταν πλέον δυνατή η απομόνωση πόρων +του συστήματος σε ένα υποσύνολο διεργασιών. + +\clearpage + +Αυτές οι τεχνολογίες σήμαναν της έναρξη της ιδέας της δοχειοποίησης και έτσι το +2008 ήρθε στο προσκήνιο το LXC (Linux Container Technology) \footfullcite{LXC}. +Το πρώτο εργαλείο που χρησιμοποιούσε τεχνολογίες δοχείων για την δημιουργία και +εκτέλεση πολλαπλών λειτουργικών συστημάτων Linux στο ίδιο μηχάνημα. +Χρησιμοποιώντας μηχανισμούς που προσέφερε το λειτουργικό σύστημα επέτρεπε πλήρη +εικονικοποίηση ενός στιγμιότυπου Linux σε μορφή δοχείου και παρείχε αρκετές +λειτουργίες όπως η δημιουργία, η εκκίνηση και ο καθαρισμός LXC δοχείων. Παρόλα +αυτά, επικεντρωνόταν στην δοχειοποίηση λειτουργικών συστημάτων και όχι +εφαρμογών \footfullcite{LXCvsDocker}, καθιστώντας δύσκολη και περίπλοκη την +χρήση του όταν η κύρια ανάγκη ήταν η απομόνωση εφαρμογών. + +Ενώ λοιπόν προϋπήρχαν εργαλεία διαχείρισης δοχείων τα οποία χρησιμοποιούνται +ακόμα και στις μέρες μας, λόγω ενός συνδυασμού της δυσκολίας στην χρήση τους +και του εξειδικευμένου σκοπού ύπαρξης τους δεν είχαν υιοθετηθεί αρκετά. Όλα τα +παραπάνω οδήγησαν στην δημιουργία του Docker το 2013, με την έλευση του οποίου +οι τεχνολογία των δοχείων εκτοξεύτηκε. Το Docker αποτελεί μια υπηρεσία PaaS η +οποία παρέχει μια πλατφόρμα με μηχανισμούς για συναρμολόγηση, θέση σε +λειτουργία, εκτέλεση, ενημέρωση και διαχείριση προγραμμάτων σε μορφή δοχείων. +Σε αντίθεση με το LXC, αποτελεί μια μηχανή δοχείων υψηλού επιπέδου με κύριο +στόχο την δοχειοποίηση εφαρμογών. Εκτός από τον διαχωρισμό ανάμεσα στον πηγαίο +κώδικα, τις βιβλιοθήκες και εξαρτήσεις ενός λογισμικού από το κύριο σύστημα +(φιλοξενίας) παρέχει και δυνατότητες επικοινωνίας με αποθετήρια εικόνων δοχείωv +όπως είναι το Docker Hub \footfullcite{dockerhub}, το επίσημο αποθετήριο του +Docker, το Quay \footfullcite{quay}, ένα εναλλακτικό αποθετήριο της Red Hat ή +οποιοδήποτε άλλο αποθετήριο συμβατό με τις προδιαγραφές που έχει ορίσει η OCI +(Open Container Initiative) \footfullcite{oci}. Μέσω τέτοιων υπηρεσιών, οι +χρήστες έχουν πρόσβαση και διαμοιράζονται χιλιάδες εικόνες δοχείων που τους +επιτρέπουν να ολοκληρώσουν διάφορα μέρη μιας υπάρχουσας ή νέας εφαρμογής. +Επιπλέον, όντας μια μηχανή δοχείων υψηλού επιπέδου όλες οι λειτουργίες που θα +απαιτούσαν εξειδικευμένες γνώσεις προκειμένου να πραγματοποιηθούν, έχουν +συμπυκνωθεί σε απλές εντολές καθιστώντας έτσι εύκολη την χρήση του για +προγραμματιστές κάθε επιπέδου και απλοποιώντας κατά πολύ την διαδικασία +ανάπτυξης και παράδοσης κατανεμημένων εφαρμογών. Προσφέροντας μια φιλική προς +τον χρήστη διεπαφή, έλεγχο εκδόσεων (version control) για δοχεία +\footfullcite{LXCvsDocker2} και ένα οικοσύστημα γύρω από όλα αυτά, είναι +εμφανής ο λόγος που κατάφερε να επισκιάσει το LXC. + +\subsection{Χρήση δοχείων στην ανάπτυξη και παράδοση εφαρμογών} \label{containerUsage} + +Οι μέθοδοι ανάπτυξης και παράδοσης εφαρμογών έχουν αλλάξει δραματικά τα +τελευταία χρόνια. Από τις παραδοσιακές μεθόδους όπως το μοντέλο καταρράκτη +(waterfall) \footfullcite{waterfall} με βάση του οποίου υπήρχε ένα συγκεκριμένο +αμετάβλητο σχέδιο που καλούνταν να ακολουθήσει μια ομάδα ανάπτυξης λογισμικού, +έχουμε φτάσει σε μια εποχή όπου οι απαιτήσεις της αγοράς αλλάζουν συνεχώς, με +αποτέλεσμα να υπάρχει ανάγκη για καινούριες μεθόδους που να ανταποκρίνονται +στις αλλαγές αυτές. Έτσι, έχουν δημιουργηθεί μεθοδολογίες όπως η Agile +\footfullcite{agile} κατά την οποία η ανάπτυξη και η παράδοση λογισμικού +πραγματοποιείται σε πολλές μικρές και ευμετάβλητες φάσεις προκειμένου να +προσαρμόζεται στις αλλαγές που ενδέχεται να υπάρξουν στον αρχικό σχεδιασμό. Η +μεθοδολογία αυτή συνεργάζεται με πρακτικές όπως το DevOps \footfullcite{devops} +όπου οι ομάδες υπεύθυνες για την ανάπτυξη και λειτουργία μιας εφαρμογής +επικοινωνούν στενά με σκοπό να υπάρχει μια συνεχής ροή παραγωγής και παράδοσης +λογισμικού. Αυτό επιτυγχάνεται με μια υποκατηγορία του DevOps, το CI/CD +(Continuous Integration/Continuous Delivery) \footfullcite{cicd}. Κατά το +μοντέλο αυτό, δημιουργούνται αυτοματοποιημένες διαδικασίες που εκτελούνται κατά +την διάρκεια της ανάπτυξης και παράδοσης μιας εφαρμογής προκειμένου να +πραγματοποιείται έλεγχος της ποιότητας του κώδικα, να εντοπίζονται σφάλματα και +να παράγονται εκτελέσιμα πακέτα. + +Τα δοχεία αποτελούν ιδανική επιλογή για την εφαρμογή των παραπάνω μεθοδολογιών +και πρακτικών καθώς επιτρέπουν το γρήγορο και αποτελεσματικό πακετάρισμα +εφαρμογών και την εκτέλεση τους σε οποιοδήποτε περιβάλλον. Λόγω των +χαρακτηριστικών τους, εξαλείφουν τυχόν προβλήματα συμβατότητας μεταξύ των +περιβαλλόντων εκτέλεσης τους και προσφέρουν μεγαλύτερη αποδοτικότητα πόρων αφού +μπορεί κανείς να εκτελέσει πολλά περισσότερα αντίγραφα ενός προγράμματος για +συγκεκριμένη ποσότητα πόρων σε σχέση με τον αριθμό που θα μπορούσε να εκτελέσει +χρησιμοποιώντας εικονικές μηχανές πάνω από αυτούς τους πόρους, κάτι που μειώνει +ιδιαίτερα το κόστος λειτουργίας και αυξάνει την κλιμακωσιμότητα. Επιπλέον, λόγω +της ταχείας διάθεσης και εκτέλεσης τους, συμβαδίζουν πλήρως με τον ρυθμό +ανάπτυξης και παράδοσης που υποστηρίζουν οι παραπάνω μεθοδολογίες. + +\clearpage + +Έχοντας αυτά υπόψιν, γίνεται εμφανής και ο λόγος που τα δοχεία είναι η +προτιμότερη επιλογή για την ανάπτυξη και παράδοση εφαρμογών που ακολουθούν την +αρχιτεκτονική μικρο-υπηρεσιών. Σε αυτήν την περίπτωση, η εφαρμογή αποτελείται +από πολλά δοχεία όπου το κάθε ένα από αυτά είναι υπεύθυνο για μια συγκεκριμένη +λειτουργία της (μικρο-υπηρεσία). Τα δοχεία αυτά είναι ανεξάρτητα μεταξύ τους +και κατά την ανάγκη κλιμάκωσης μιας συγκεκριμένης λειτουργίας της εφαρμογής +αυτό μπορεί να επιτευχθεί δίχως την περιττή κλιμάκωση όλων των υπολοίπων. +Επιπρόσθετα, η ανεξαρτησία των δοχείων μεταξύ τους καθιστά πιο σταθερή την +εφαρμογή αφού σε περίπτωση που κάποιο από αυτά αποτύχει, η υπόλοιπη εφαρμογή θα +συνεχίσει να λειτουργεί κανονικά και η ανακατασκευή του δοχείου που απέτυχε +μπορεί να επιτευχθεί εύκολα και γρήγορα με μια απλή τροποποίηση της εκάστοτε +εικόνας δοχείου. + +\subsection{Χρήσεις του Docker στο νέφος} \label{dockerInCloudComputing} + +Οι δυνατότητες που προσφέρει το Docker το καθιστούν την καταλληλότερη επιλογή +τόσο για επιχειρήσεις που λειτουργούν αποκλειστικά με ενοικιαζόμενους +υπολογιστικούς πόρους όσο και για αυτές που επιλέγουν να λειτουργούν με έναν +συνδυασμό ενοικιαζόμενων και ιδιόκτητων φυσικών εγκαταστάσεων. Υπάρχουν δύο +βασικές περιπτώσεις χρήσης του Docker στο νέφος. Συγκεκριμένα αυτές είναι, η +εγκατάσταση δοχείων σε εικονικές μηχανές και η εγκατάσταση δοχείων έμμεσα σε +πόρους χωρίς την ανάγκη δημιουργίας εικονικής μηχανής. Η δεύτερη περίπτωση +χρήσης εντάσσεται στην κατηγορία υπηρεσιών CaaS (Container as a Service) όπως η +ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία +\footfullcite{caas} των υπηρεσιών IaaS (Infrastructure as a Service) όπου ένας +πάροχος νέφους αντί να παρέχει πρόσβαση σε υπολογιστικούς πόρους γενικού +σκοπού, παρέχει μια ευέλικτη υποδομή έτοιμη για την εκτέλεση δοχείων +\footfullcite{caasVsIaas}. + +\clearpage + +Από τις δύο αυτές επιλογές, η πιο δημοφιλής είναι η πρώτη καθώς προσφέρει μια +ευελιξία ως προς την διαμόρφωση του περιβάλλοντος εκτέλεσης των δοχείων. Οι +χρήστες έχουν την δυνατότητα να ακολουθήσουν ορισμένες ορθές πρακτικές +ασφαλείας που μπορεί να έχουν θεσπιστεί στην εταιρεία τους, να εγκαταστήσουν +επιπλέον λογισμικό παρακολούθησης και ελέγχου ποιότητας των δοχείων και να +προσαρμόσουν το περιβάλλον εκτέλεσης των δοχείων στις ανάγκες τους. Επιπλέον, η +ύπαρξη μιας επιπλέον στρώσης απομόνωσης μεταξύ των δοχείων και του κύριου +συστήματος αποτελεί ένα επιπρόσθετο εμπόδιο σε περιπτώσεις που ένα δοχείο +βρεθεί σε κατάσταση παραβίασης. Το Docker επιτρέποντας μέσω των δοχείων την +περιορισμένη έκθεση των πόρων του συστήματος στον έξω κόσμο, καθιστά ευκολότερη +την ανίχνευση και απομόνωση των προβλημάτων ασφαλείας όπως επίσης και την +αποκατάσταση τους. + +Από την άλλη, η δεύτερη περίπτωση χρήσης επιτρέπει στους χρήστες να +επικεντρωθούν στην ανάπτυξη των δοχειοποιημένων εφαρμογών και να αφήσουν την +διαχείριση της υποδομής στον πάροχο νέφους. Αυτό είναι ιδιαίτερα χρήσιμο σε +περιπτώσεις που οι χρήστες δεν έχουν την απαραίτητη εμπειρία σε αυτόν τον τομέα +ή δεν είναι σε θέση να διαθέσουν τον απαιτούμενο χρόνο για αυτό. Η χρήση +υπηρεσιών CaaS αυτομάτως εξασφαλίζει στους χρήστες τα πλεονεκτήματα των +υπηρεσιών IaaS όπως η κλιμάκωση, η αντοχή σε αποτυχίες και η ευελιξία, ενώ +ταυτόχρονα προσφέρει και τα πλεονεκτήματα των δοχείων όπως η ταχεία διάθεση και +απόσυρση τους αλλά και η υψηλή τους απόδοση κατά την εκτέλεση. Συγκεκριμένα, +μέσω των υπηρεσιών CaaS, οι χρήστες διαθέτουν δυνατότητες ενορχήστρωσης δοχείων +\footfullcite{howCaasWorks} χωρίς την ανάγκη χειροκίνητου στησίματος πλατφορμών +όπως το Kubernetes \footfullcite{kubernetes} και το Docker Swarm +\footfullcite{dockerSwarm}. + +\clearpage + +Σε κάθε περίπτωση, λόγω των πλεονεκτημάτων που παρέχει η χρήση δοχείων, είναι +πολύ συνήθης η θέση σε λειτουργία, εφαρμογών μέσω Docker σε περιβάλλοντα νέφους +επειδή απομονώνει τις αναγκαίες βιβλιοθήκες και εξαρτήσεις τους από το υπόλοιπο +σύστημα και επιτρέπει την αποδοτικότερη διαχείριση των εφαρμογών αυτών μέσω της +διεπαφής του με εντολές για εκκίνηση, επιτήρηση πόρων, παύση και άλλες +λειτουργίες. Τα προβλήματα που μπορεί να προέκυπταν σε ένα περιβάλλον ανάπτυξης +όπως μη συμβατές εκδόσεις προγραμμάτων και δυσκολία διαχείρισης τους +εξαλείφονται με την χρήση δοχείων αφήνοντας το Docker να εγκαθιδρύσει έναν +συστημικό τρόπο διανομής και ελέγχου εφαρμογών. Επιπροσθέτως, καθιστά πολύ +εύκολη τη μεταφορά τους σε οποιοδήποτε μηχάνημα (εφόσον αυτό υποστηρίζει την +εκτέλεση της μηχανής δοχείων του Docker) ή ακόμα και νέφος, θέτοντας το +κορυφαία επιλογή για επιχειρήσεις που επιλέγουν να ακολουθήσουν την στρατηγική +πολλαπλών νεφών (multi-cloud computing) κατά την κατασκευή εφαρμογών, δηλαδή να +μην βασίζονται αποκλειστικά σε έναν πάροχο νέφους για όλες τις λειτουργίες μιας +εφαρμογής \footfullcite{multiCloud} αλλά να εκμεταλλεύονται οφέλη από πολλούς +παρόχους με βάση τις ανάγκες τους. + +\section{Ασφάλεια του συστήματος κατά τη χρήση του Docker} \label{dockerSecurity} + +Μία από τις πιο σημαντικές προκλήσεις των επιχειρήσεων κατά την διάθεση +υπηρεσιών είναι η επίτευξη και διατήρηση της ασφάλειας. Παραδοσιακά κατά την +επιλογή χρήσης τεχνολογιών εικονικοποίησης, ανάμεσα στις επιλογές +εικονικοποίησης υλικού και εικονικοποίησης ΛΣ είθισται να προτιμάται η δεύτερη. +Μια λογική απόφαση εάν αναλογιστεί κανείς τα πλεονεκτήματα που προσφέρει τόσο +στην απόδοση πόρων του συστήματος όσο και στην αποδοτική αλλά και εύκολη +διαχείριση των υπηρεσιών όταν αυτές διατίθενται σε μορφή δοχείων. Παρ' όλα +αυτά, η επιλογή αυτή είναι και λιγότερο ασφαλής στην περίπτωση που αφεθεί στις +αρχικές ρυθμίσεις. + +\clearpage + +Για τον λόγο αυτό, εάν η μέγιστη δυνατή απόδοση δεν είναι μια από τις κύριες +προτεραιότητες της επιχείρησης, προκειμένου να αυξηθεί η ασφάλεια του +συστήματος διατηρώντας τα πλεονεκτήματα του Docker όσον αφορά την +μεταφερσιμότητα και την απαλλαγή από τις εξαρτήσεις του εκάστοτε προγράμματος +ακόμα και χωρίς την περαιτέρω διαμόρφωση των ρυθμίσεων του, η προτεινόμενη +χρήση είναι η εκτέλεση του μέσω μιας εικονικής μηχανής. Η στρώση απομόνωσης +μέσω της εικονικοποίησης υλικού ανάμεσα στα προγράμματα και το μηχάνημα στο +οποίο εκτελούνται αποτελεί ένα παραπάνω εμπόδιο που θα πρέπει να ξεπεράσει ένας +επιτιθέμενος για να προκαλέσει ζημιές στο κύριο σύστημα, αφού θα πρέπει πρώτα +να περάσει από τον εικονικό πυρήνα και έπειτα από τον υπερ-επόπτη. Παράλληλα, η +ο συνδυασμός με την αρχιτεκτονική δοχείων παρέχει ένα επιπρόσθετο επίπεδο +απομόνωσης εφόσον στην προκειμένη περίπτωση η άμεση επικοινωνία με τον πυρήνα +του συστήματος αφορά το ΛΣ φιλοξενίας και όχι το κύριο σύστημα. + +Παρ' όλα αυτά, υπάρχουν περιπτώσεις όπου η απόδοση του συστήματος δεν δύναται +να θυσιαστεί για χάρη της ασφάλειας. Σε αυτές τις περιπτώσεις, επιβάλλεται η +τροποποίηση των ρυθμίσεων και του τρόπου λειτουργίας του Docker ώστε να +μπορέσει να επιτευχθεί μια ικανοποιητική ισορροπία μεταξύ της ασφάλειας και της +απόδοσης του συστήματος. Με βάση μια έρευνα που πραγματοποιήθηκε από την IBM +σχετικά με την ασφάλεια των δοχείων \footfullcite{containerSecurity}, βρέθηκε +πως ένα ορθώς ασφαλισμένο δοχείο μπορεί να παρέχει το ίδιο επίπεδο ασφάλειας με +μια εικονική μηχανή ή ακόμα και μεγαλύτερο. Συγκεκριμένα, στην έρευνα αυτή +αναφέρεται πως προκειμένου να ποσοτικοποιηθεί η ασφάλεια των δοχείων θα πρέπει +να ληφθεί υπόψιν το ποσοστό των υποδομών που βρίσκεται υπό την ευθύνη του +χρήστη και να θεωρηθεί δεδομένο πως οι πάροχοι νέφους θα ακολουθήσουν όλες τις +ορθές πρακτικές ασφαλείας για να προστατεύσουν το κομμάτι των υποδομών που τους +αντιστοιχεί. Σε αυτήν την περίπτωση εάν ο χρήστης χρησιμοποιεί υπηρεσίες CaaS, +τότε είναι υπεύθυνος για περίπου το ίδιο ποσοστό υποδομών με τον πάροχο και +επωφελείται άμεσα από τις προσπάθειες ασφάλισης του παρόχου για το ποσοστό του. +Επομένως, συμπεραίνεται πως από την οπτική γωνία του τελικού χρήστη είναι πιο +ασφαλές να χρησιμοποιήσει τεχνολογίες εικονικοποίησης ΛΣ μέσω ενός παρόχου +νέφους για την παροχή των υπηρεσιών του +\footfullcite{containerSecurityExplained}. + +\subsection{Πλεονεκτήματα ασφαλείας με τη χρήση του Docker} \label{dockerSecurityAdvatnages} + +Με τη χρήση της αρχιτεκτονικής δοχείων και ειδικότερα του Docker, έρχονται +αρκετά εγγενή οφέλη ασφαλείας \footfullcite{dockerInherentSecurity}. Ένα βασικό +όφελος αποτελεί η διαφάνεια. Λόγω της φύσης τους, τα δοχεία επιτρέπουν την +ακριβή κατανόηση του κώδικα που εκτελείται μέσα σε αυτά σε αντίθεση με την +περίπτωση χρήσης αποκλειστικά εικονικών μηχανών. Επιπρόσθετα, κατά την εμφάνιση +προβλημάτων σε μία υπηρεσία με αρχιτεκτονική μικρο-υπηρεσιών που κάνει χρήση +δοχείων, είναι διακριτή η διευκόλυνση στον εντοπισμό της πηγής τους. + +Ένα εξίσου σημαντικό όφελος αποτελεί το επιπρόσθετο επίπεδο ασφάλειας που +παρέχεται. Σε περιβάλλον εικονικής μηχανής θα πρέπει να σκληρυνθεί το ΛΣ +φιλοξενίας (αν υπάρχει), ο υπερ-επόπτης, το φιλοξενούμενο ΛΣ και η εκτελούμενη +υπηρεσία. Σε περιβάλλον δοχείου, πρέπει να σκληρυνθεί το ΛΣ που φιλοξενεί τη +μηχανή δοχείων, η μηχανή δοχείων και η υπηρεσία. Πράγμα που σημαίνει πως σε ένα +εικονικό περιβάλλον με την χρήση του Docker έχουμε επιπρόσθετα επίπεδα που +χρειάζονται σκλήρυνση. Συνεπώς, σε εικονικά περιβάλλοντα, η χρήση δοχείων +έρχεται με την σκλήρυνση ενός επιπλέον συστατικού, της μηχανής δοχείων, οπότε +προσφέρει καλύτερο επίπεδο ασφάλειας. + +Δύο ακόμα σημαντικά πλεονεκτήματα είναι η ευκολία εφαρμογής ενημερώσεων +ασφαλείας στα δοχεία και η σταθερότητα του περιβάλλοντος που προσφέρεται μέσω +αυτών στις εφαρμογές. Ειδικότερα, η ενημέρωση ενός δοχείου είναι μια διαδικασία +δύο μόνο εντολών, ενώ το προσφερόμενο περιβάλλον είναι σταθερό με την λογική +πως η μηχανή δοχείου παρέχει ένα επίπεδο πάνω από το ΛΣ, κι επομένως το +περιβάλλον αυτό δεν είναι ξεχωριστά ευμετάβλητο από την εκάστοτε εφαρμογή που +εκτελείται μέσα σε αυτό. Άρα, δεν κινδυνεύει από νέα προβλήματα ασφαλείας που +θα μπορούσαν να επιφέρουν τυχόν ενημερώσεις των εξαρτήσεων της εφαρμογής χωρίς +την ταυτόχρονη ενημέρωση της εφαρμογής της ίδιας. + +\clearpage + +\subsection{Μειονεκτήματα ασφαλείας με τη χρήση του Docker} \label{dockerSecurityDisadvantages} + +Παρ' όλα τα προαναφερόμενα πλεονεκτήματα του Docker όπως η δυνατότητα απαλλαγής +από εξαρτήσεις του εκάστοτε συστήματος και η ευελιξία διαχείρισης των δοχείων +του, αυτό υπόκειται σε αρκετές ατασθαλίες σε σχέση με την ασφάλεια. Οι πιο +αξιοσημείωτες από αυτές είναι η ανάγκη εκτέλεσης του Docker με διαχειριστικά +δικαιώματα και η αρχικά ελαστικότερη απ' ό,τι χρειάζεται απομόνωση του από τον +πυρήνα του συστήματος. Ο άμεσος αντίκτυπος των παραπάνω είναι πως τα δοχεία +είναι πιο ευάλωτα από άλλες τεχνολογίες σε επιθέσεις τύπου άρνησης υπηρεσιών +και σε επιθέσεις που εκμεταλλεύονται ευπάθειες του πυρήνα με σκοπό να ξεφύγουν +από το δοχείο και να αποκτήσουν πρόσβαση στο κύριο σύστημα (Container Escape +\footfullcite{containerEscapeTechniques}). + +Το γεγονός που αυξάνει τον κίνδυνο κατά την διάρκεια μιας επίθεσης τύπου +άρνησης υπηρεσιών είναι πως σε αντίθεση με μια εικονική μηχανή όπου επιλέγεται +το εύρος πρόσβασης στους πόρους του συστήματος κατά τη δημιουργία της, η αρχική +ρύθμιση του Docker επιτρέπει στα δοχεία να χρησιμοποιήσουν το ίδιο ποσοστό +πόρων με το κύριο σύστημα, δηλαδή χωρίς περιορισμούς. Επομένως, εάν ένα δοχείο +βρεθεί υπό τον έλεγχο ενός επιτιθέμενου, αυτό μπορεί δυνητικά να εμποδίσει την +εκτέλεση άλλων δοχείων ή ακόμα και την εκτέλεση άλλων εφαρμογών που εκτελούνται +στο σύστημα. + +Σχετικά με τις επιθέσεις που αποσκοπούν στην απόκτηση πρόσβασης στο κύριο +σύστημα μέσω του δοχείου, ο κίνδυνος οφείλεται στον τρόπο λειτουργίας των +δοχείων σε συνδυασμό με τις αρχικές ρυθμίσεις ασφαλείας του Docker. Λόγω της +απευθείας επικοινωνίας τους με τον πυρήνα του συστήματος, τα δοχεία είναι άμεσα +ευεπηρέαστα από ευπάθειες του πυρήνα. Συνεπώς, ένας επιτιθέμενος που στοχεύει +ένα δοχείο μπορεί να εκμεταλλευτεί μια ευπάθεια του πυρήνα προκειμένου να +αποκτήσει πρόσβαση στο κύριο σύστημα και εφόσον η εκτέλεση του Docker γίνεται +με διαχειριστικά δικαιώματα, μετά από μια επιτυχημένη επίθεση Container Escape +θα έχει διαχειριστικά δικαιώματα και ο επιτιθέμενος +\footfullcite{containerEscapeRepercussions}. + +\clearpage + +\subsection{Ξεπερνώντας τα μειονεκτήματα ασφαλείας του Docker} \label{overcomingDockerDisadvantages} Οι πιο συνήθεις τρόποι αντιμετώπισης της ανεπαρκούς προκαθορισμένης ασφάλειας -του \textlatin{Docker} είναι η ρύθμιση καλύτερων \textlatin{Apparmor} προφίλ ή -κανόνων \textlatin{SELinux} προκειμένου να απομονωθεί καλύτερα από το κύριο +του Docker (δηλ. της ελαστικής απομόνωσης) είναι η ρύθμιση καλύτερων AppArmor +προφίλ ή κανόνων SELinux προκειμένου να απομονωθεί καλύτερα από το κύριο σύστημα. Στην πραγματικότητα, αυτές οι πρακτικές λαμβάνουν υπόψιν τους κυρίως -τα δοχεία και όχι τη μηχανή δοχείων καθ'' αυτού. Γι'' αυτό τον λόγο πολλές -φορές πρέπει να ακολουθούνται και καλύτερες πρακτικές κατά τη λειτουργία του -όπως η αποφυγή χρήσης του διαχειριστικού λογαριασμού όσον αφορά τα δοχεία και η -αποφυγή λήψης δοχείων από μη έμπιστες πηγές. +τα δοχεία και όχι τη μηχανή δοχείων καθ' αυτού. Γι' αυτό τον λόγο, πολλές φορές +πρέπει να ακολουθούνται και καλύτερες πρακτικές κατά τη λειτουργία/χρήση του +Docker, όπως η αποφυγή χρήσης του διαχειριστικού λογαριασμού (σε διεργασίες) +όσον αφορά τα δοχεία και η αποφυγή λήψης δοχείων από μη έμπιστες πηγές. Υπάρχει +επομένως ανάγκη δημιουργίας ενός εργαλείου που αυτοματοποιημένα μπορεί να +δημιουργεί ασφαλή εικονικοποιημένα περιβάλλοντα, καθώς και να εγκαθιστά σε +αυτά, με βάση τις προαναφερόμενες οδηγίες προστασίας του Docker και των δοχείων +του, μια σκληρυμένη έκδοση του Docker. -\pagebreak +Με τη χρήση του εργαλείου SecDep που θα περιγράψουμε παρακάτω στο κεφάλαιο +\ref{installationANDShowcase}, θα επιτευχθεί η ασφάλιση του Docker και του +συστήματος με αυτοματοποιημένο τρόπο ακολουθώντας ορθές πρακτικές, +χρησιμοποιώντας ένα ασφαλέστερο από το αρχικό Container Runtime και εκτελώντας +το Docker εξολοκλήρου χωρίς την ανάγκη διαχειριστικών δικαιωμάτων. Το εργαλείο +αυτό επικοινωνεί με πολλούς παρόχους νέφους στέλνοντας τους παραμέτρους για τις +προδιαγραφές εικονικών μηχανών προκειμένου να μπορέσουν να δημιουργηθούν με +αυτοματοποιημένο τρόπο επιτρέποντας έτσι την δημιουργία πολλαπλών ασφαλών +περιβαλλόντων ώστε να μπορεί ένας χρήστης να εγκαθιστά εκεί τα δοχεία της +εφαρμογής του. Η σκλήρυνση του ΛΣ επιτυγχάνεται με την εκτέλεση πολλών βημάτων +στα οποία μεταξύ άλλων περιλαμβάνεται η σκλήρυνση του SSH, ο εντοπισμός, η +εγκατάσταση, η ρύθμιση και η ενεργοποίηση του κατάλληλου προγράμματος για +ανάχωμα ασφαλείας και για παροχή MAC (Mandatory Access Control) και η +δημιουργία και ενεργοποίηση περιοδικά εκτελέσιμων προγραμμάτων για την +ενημέρωση του συστήματος και το άνοιγμα/κλείσιμο θυρών προγραμμάτων. Η +απεξάρτηση από τον διαχειριστικό λογαριασμό επιτυγχάνεται χάρη στη δουλειά του +Akihiro Suda πάνω στο rootlesskit \footfullcite{AkihiroSuda}, επιτρέποντας έτσι +έναν πλαστό διαχειριστικό λογαριασμό προκειμένου να μπορέσει η μηχανή δοχείων +να εκτελεστεί υπό την κυριότητα οποιουδήποτε χρήστη του συστήματος. Τέλος, η +αντικατάσταση του αρχικού Container Runtime με το αντίστοιχο του gVisor +\footfullcite{gVisor}, εισάγει ένα πιο συμπαγές τοίχος προστασίας απέναντι σε +συνηθισμένες επιθέσεις κατά των δοχείων, καθιστώντας το σύστημα μας πιο ασφαλές +συγκριτικά με τις αρχικές/προκαθορισμένες ρυθμίσεις. -Με τη χρήση του εργαλείου \textlatin{SecDep} που θα περιγράψουμε παρακάτω -[\ref{installationANDShowcase}], θα επιτευχθεί η ασφάλιση του -\textlatin{Docker} και του συστήματος με αυτοματοποιημένο τρόπο ακολουθώντας -ορθές πρακτικές, χρησιμοποιώντας ένα ασφαλέστερο από το αρχικό -\textlatin{Container Runtime} και εκτελώντας το \textlatin{Docker} εξολοκλήρου -χωρίς την ανάγκη του \textlatin{root}. Η απεξάρτηση από τον διαχειριστικό -λογαριασμό επιτυγχάνεται χάρη στη δουλειά του \textlatin{Akihiro Suda} πάνω στο -\textlatin{rootlesskit} \cite{AkihiroSuda} επιτρέποντας έτσι έναν πλαστό -διαχειριστικό λογαριασμό προκειμένου να μπορέσει η μηχανή δοχείων να εκτελεστεί -υπό την κυριότητα οποιουδήποτε χρήστη του συστήματος. Επιπροσθέτως, η -αντικατάσταση του αρχικού \textlatin{Container Runtime} με το αντίστοιχο του -\textlatin{gVisor} \cite{gVisor}, εισάγει ένα πιο συμπαγές τοίχος προστασίας -απέναντι σε συνηθισμένες επιθέσεις κατά των δοχείων καθιστώντας το σύστημα μας -πιο ασφαλές συγκριτικά με τις αρχικές ρυθμίσεις. +\clearpage \section{Δομή Εργασίας} \label{structure} -Συνεχίζοντας παρακάτω, η δομή που θα συναντήσει ο αναγνώστης είναι η εξής. Στο -κεφάλαιο [\ref{background}] θα μελετήσουμε τον όρο \textlatin{cloud computing}, -θα αναλύσουμε τις διάφορες τεχνολογίες εικονικοποίησης και θα εμβαθύνουμε στην -τεχνολογία των δοχείων και συγκεκριμένα στην ασφάλεια του \textlatin{Docker}. -Στο επόμενο κεφάλαιο [\ref{relevantWork}], θα δούμε εργασίες σχετικές με την -παρούσα και θα πραγματοποιηθεί ανάλυση και σύγκριση αυτών. Αμέσως μετά, στο -[\ref{projectDevelopment}], αναφερόμαστε στον σχεδιασμό του εργαλείου μιλώντας -για τις απαιτήσεις, τα συστατικά του μέρη και πως αυτά συνεργάζονται μεταξύ -τους. Προχωρώντας στο [\ref{installationANDShowcase}], θα αναφερθούμε στις -οδηγίες εγκατάστασης και λειτουργίας του εργαλείου με βάση στοχευμένα σενάρια -χρήσης. Έπειτα, στο [\ref{experimentationANDresults}] βλέπουμε την -αποδοτικότητα του μετά από αρκετές χρήσεις και μετρήσεις που έγιναν προκειμένου -να αποτιμηθεί ορθότερα η εξασφάλιση των στόχων του. Τέλος, στο -[\ref{conclusions}], γίνεται αναφορά σημείων που θα μπορούσαν να επωφεληθούν με -βελτιώσεις προκειμένου να μπορέσει το εργαλείο αυτό να πάρει μια θέση στην -αγορά. +Η υπόλοιπη δομή της αναφοράς είναι η εξής. Στο κεφάλαιο \ref{background} θα +μελετήσουμε τον όρο νεφο-υπολογιστική, θα αναλύσουμε τις διάφορες τεχνολογίες +εικονικοποίησης και θα εμβαθύνουμε στην τεχνολογία των δοχείων και συγκεκριμένα +στην ασφάλεια του Docker. Στο επόμενο κεφάλαιο (δηλαδή το \ref{relevantWork}), +θα δούμε εργασίες σχετικές με την παρούσα και θα πραγματοποιηθεί ανάλυση και +σύγκριση αυτών με την προτεινόμενη εργασία της διπλωματικής. Αμέσως μετά, στο +κεφάλαιο \ref{projectDevelopment}, αναφερόμαστε στην ανάπτυξη του προτεινόμενου +εργαλείου και τα παράγωγά της (απαιτήσεις, σχεδιαστικά μοντέλα, κώδικα +υλοποίησης κα.). Προχωρώντας στο κεφάλαιο \ref{installationANDShowcase}, θα +αναφερθούμε στις οδηγίες εγκατάστασης και λειτουργίας του εργαλείου με βάση +στοχευμένα σενάρια χρήσης. Έπειτα, στο κεφάλαιο \ref{experimentationANDresults} +αποτιμάται η αποδοτικότητα του εργαλείου κατά την πραγματική χρήση του +προκειμένου να εξετασθεί με πρακτικό τρόπο η ικανότητα εξασφάλισης των στόχων +του. Τέλος, στο κεφάλαιο \ref{conclusions}, αναφέρονται δυνητικές επεκτάσεις +και βελτιώσεις του προτεινόμενου εργαλείου προκειμένου αυτό να μπορέσει να +πάρει μια θέση στην αγορά. diff --git a/Chapters/2.Background.tex b/Chapters/2.Background.tex index 7cf81d2..01195e4 100644 --- a/Chapters/2.Background.tex +++ b/Chapters/2.Background.tex @@ -1,234 +1,315 @@ \chapter{Υπόβαθρο} \label{background} -Προκειμένου να κατανοήσουμε πλήρως το πρόβλημα που επιλύει η παρούσα εργασία -πρέπει να αναλύσουμε μερικές βασικές έννοιες. Σε πρώτη φάση θα δούμε παρακάτω -τι είναι το υπολογιστικό νέφος, τι μας προσφέρει και ποια μοντέλα παράδοσης -παρέχονται μέσω αυτού. Έπειτα θα μιλήσουμε για την έννοια της εικονικοποίησης -και τις διάφορες υποκατηγορίες της που χρησιμοποιούνται στις μέρες μας. Αμέσως -μετά, θα αναλυθούν τα πλεονεκτήματα της και θα μπορέσουμε να εντοπίσουμε τον -λόγο που προτιμάται η αρχιτεκτονική δοχείων. Τέλος, θα εμβαθύνουμε στην -τεχνολογία δοχείων, θα δούμε διάφορες υλοποιήσεις της και θα πραγματοποιήσουμε -μια ανάλυση της ασφάλειας του \textlatin{Docker}. +\hyphenation{πολλές} -\section{\textlatin{Cloud Computing Definition}} \label{cloudComputingDefinition} +\noindent Προκειμένου να κατανοήσουμε πλήρως το πρόβλημα που επιλύει η παρούσα +εργασία πρέπει να αναλύσουμε μερικές βασικές έννοιες. Αρχικά, θα δούμε τι είναι +το υπολογιστικό νέφος, τι μας προσφέρει και ποια μοντέλα παράδοσης παρέχονται +μέσω αυτού. Έπειτα θα συζητήσουμε την έννοια της εικονικοποίησης και τις +διάφορες υποκατηγορίες της που χρησιμοποιούνται στις μέρες μας. Αμέσως μετά, θα +αναλυθούν τα πλεονεκτήματα της εικονικοποίησης και θα αναδειχθεί ο λόγος που +προτιμάται η εικονικοποίηση του λειτουργικού συστήματος (δηλ. η χρήση +δοχειοποιημένων περιβαλλόντων). Τέλος, θα εμβαθύνουμε στην τεχνολογία δοχείων, +θα δούμε διάφορες υλοποιήσεις της και θα πραγματοποιήσουμε μια ανάλυση της +ασφάλειας του Docker, ως το de facto βιομηχανικό πρότυπο για την διαχείριση των +δοχείων, των εφαρμογών και των εικόνων τους. -Σύμφωνα με το \cite{mell2011nist} το \textlatin{Cloud Computing} είναι ένα -μοντέλο που επιτρέπει την ανά πάσα στιγμή διαδικτυακή πρόσβαση σε μια κοινή -δεξαμενή ρυθμιζόμενων υπολογιστικών πόρων που μπορούν να παρέχονται και να -απελευθερώνονται γρήγορα και με ελάχιστη προσπάθεια διαχείρισης ή +\section{Ορισμός Νεφο-Υπολογιστικής} \label{cloudComputingDefinition} + +Σύμφωνα με το \citetitle{mell2011nist} \cite{mell2011nist}, η νεφο-υπολογιστική +είναι ένα μοντέλο που επιτρέπει την ανά πάσα στιγμή διαδικτυακή πρόσβαση σε μια +κοινή δεξαμενή ρυθμιζόμενων υπολογιστικών πόρων που μπορούν να παρέχονται και +να απελευθερώνονται γρήγορα και με ελάχιστη προσπάθεια διαχείρισης ή αλληλεπίδρασης με τον πάροχο υπηρεσιών. Στους υπολογιστικούς αυτούς πόρους περιλαμβάνονται δίκτυα, διακομιστές, χώρος αποθήκευσης, εφαρμογές και υπηρεσίες. Αυτό το μοντέλο νέφους αποτελείται από πέντε βασικά χαρακτηριστικά, τρία μοντέλα υπηρεσιών και τέσσερα μοντέλα παράδοσης. -\pagebreak - \subsection{Χαρακτηριστικά} \label{cloucComputingCharacteristics} -Τα πέντε βασικά χαρακτηριστικά του \textlatin{Cloud Computing} με βάση τον -\textlatin{\citeauthor{mell2011nist}} είναι τα εξής: +Τα πέντε βασικά χαρακτηριστικά της νεφο-υπολογιστικής με βάση τους +\textcite{mell2011nist} είναι τα εξής: \begin{itemize} - \item \textbf{Αυτοεξυπηρέτηση κατά παραγγελία}: + \item \textbf{Αυτοεξυπηρέτηση κατά παραγγελία (On-demand Self-service)}: - Ένας καταναλωτής μπορεί να προμηθευτεί υπολογιστικούς πόρους όπως - αποθηκευτικό χώρο δικτύου και χρόνο χρήσης ισχυρών επεξεργαστών δίχως - την απαίτηση ανθρώπινης αλληλεπίδρασης με κάθε πάροχο υπηρεσιών. + Ένας καταναλωτής μπορεί να προμηθευτεί υπολογιστικούς πόρους, όπως + αποθηκευτικό χώρο και ισχυρούς επεξεργαστές, κατά απαίτηση δίχως την + ανάγκη αλληλεπίδρασης με τον αντίστοιχο πάροχο νέφους. Μόλις + συγκροτηθούν, η χρήση των πόρων αυτών μπορεί να αυτοματοποιηθεί, + οδηγώντας σε ένα περιβάλλον αυτοεξυπηρέτησης κατ' απαίτηση. - \item \textbf{Ευρεία διαδικτυακή πρόσβαση}: + \item \textbf{Πανταχού παρούσα πρόσβαση (Ubiquitous Access)}: Οι υπηρεσίες που παρέχονται είναι διαθέσιμες μέσω του διαδικτύου και - είναι προσβάσιμες από οποιαδήποτε συσκευή διαθέτει πρόσβαση σε αυτό - είτε μέσω γραφικού περιβάλλοντος είτε μέσω ειδικά σχεδιασμένων - \textlatin{API}. + είναι προσβάσιμες μέσω πρότυπων μηχανισμών από ετερογενείς πλατφόρμες + λεπτών και πυκνών πελατών (thin \& thick clients). - \item \textbf{Οργανωμένη συγκέντρωση πόρων}: + \item \textbf{Πολλαπλή Μίσθωση (Multi-Tenancy)}: Οι υπολογιστικοί πόροι του παρόχου είναι σχεδιασμένοι με τέτοιο τρόπο - ώστε να μπορούν να εξυπηρετήσουν πολλούς καταναλωτές χρησιμοποιώντας - ένα \textlatin{multi-tenant} μοντέλο με διαφορετικούς φυσικούς και - εικονικούς πόρους που εκχωρούνται και ανακατανέμονται ανάλογα με τη - ζήτηση των καταναλωτών. Το μοντέλο αυτό διακατέχεται από μια αίσθηση - ανεξαρτησίας θέσης διότι είθισται να μην υπάρχει έλεγχος ή ακριβής - γνώση της τοποθεσίας τους αλλά δίδεται πολλές φορές η δυνατότητα - καθορισμού της χώρας ή περιοχής τους εάν το επιθυμεί ο χρήστης. - Παραδείγματα πόρων που παρέχονται αποτελούν μεταξύ άλλων το εύρος ζώνης - δικτύου, η διαθέσιμη μνήμη και ο αριθμός επεξεργαστών. + ώστε να μπορούν να εξυπηρετήσουν πολλούς καταναλωτές έκαστος, + χρησιμοποιώντας ένα μοντέλο πολλαπλής μίσθωσης με διαφορετικούς + φυσικούς και εικονικούς πόρους που εκχωρούνται και ανακατανέμονται + ανάλογα με τη ζήτηση των καταναλωτών. Το μοντέλο αυτό διακατέχεται και + από μια αίσθηση ανεξαρτησίας θέσης διότι ανεξάρτητα από το που + βρίσκεται ένας τελικός χρήστης μπορεί να χρησιμοποιήσει πόρους από + οποιοδήποτε κέντρο δεδομένων επιθυμεί. Παραδείγματα πόρων που + παρέχονται αποτελούν μεταξύ άλλων το εύρος ζώνης δικτύου, ο + αποθηκευτικός χώρος και εικονικές μηχανές. - \item \textbf{Ταχεία ευελιξία}: + \item \textbf{Ελαστικότητα (Elasticity)}: - Οι δυνατότητες μπορούν να παρέχονται και να απελευθερώνονται ελαστικά - και σε ορισμένες περιπτώσεις αυτόματα, με σκοπό την οριζόντια ή κάθετη - κλιμάκωση υπηρεσιών αναλόγως την παρούσα ζήτηση. Από την οπτική γωνία - του καταναλωτή, οι παρεχόμενες δυνατότητες μοιάζουν απεριόριστες και - μπορούν να κατανεμηθούν ανά πάσα στιγμή σε οποιαδήποτε ποσότητα. + Οι υπολογιστικές, δικτυακές και αποθηκευτικές δυνατότητες μπορούν να + παρέχονται και να απελευθερώνονται ελαστικά (αυτόματα) με σκοπό την + οριζόντια ή κάθετη κλιμάκωση υπηρεσιών αναλόγως την παρούσα ζήτηση. Από + την οπτική γωνία του καταναλωτή, οι παρεχόμενες δυνατότητες μοιάζουν + απεριόριστες και μπορούν να κατανεμηθούν ανά πάσα στιγμή σε οποιαδήποτε + ποσότητα. \item \textbf{Μετρούμενη υπηρεσία}: Τα συστήματα νέφους ελέγχουν και βελτιστοποιούν αυτόματα τη χρήση των - πόρων αξιοποιώντας δυνατότητες μέτρησης κατάλληλες για τον τύπο της - υπηρεσίας (π.χ, αποθήκευση, επεξεργασία, εύρος ζώνης και λογαριασμοί - ενεργών χρηστών). Η χρήση των πόρων μπορεί να παρακολουθείται, να - ελέγχεται και να αναγράφεται, παρέχοντας διαφάνεια τόσο στον πάροχο όσο - και στον καταναλωτή της υπηρεσίας που χρησιμοποιείται. + πόρων αξιοποιώντας δυνατότητες μέτρησης/παρακολούθησης κατάλληλες για + τον τύπο της υπηρεσίας (π.χ, αποθήκευση, επεξεργασία, εύρος ζώνης). Η + χρήση των πόρων μπορεί να παρακολουθείται, να ελέγχεται και να + αναγράφεται, παρέχοντας διαφάνεια τόσο στον πάροχο όσο και στον + καταναλωτή της υπηρεσίας που χρησιμοποιείται. Η αναφερόμενη χρήση + έπειτα χρησιμοποιείται για την χρέωση του καταναλωτή ανάλογα με το + μοντέλο χρέωσης που σχετίζεται με την χρησιμοποιούμενη υπηρεσία. \end{itemize} -\pagebreak +\clearpage -\subsection{Μοντέλα Υπηρεσιών} \label{cloudComputingServiceModels} +\subsection{Μοντέλα Υπηρεσιών/Παράδοσης} \label{cloudComputingServiceModels} -Τα τρία μοντέλα υπηρεσιών του \textlatin{Cloud Computing} όπως αναγράφονται στο -\textlatin{\citealt{mell2011nist}} είναι τα παρακάτω: +Τα τρία μοντέλα υπηρεσιών ή παράδοσης της νεφο-υπολογιστικής, όπως αναγράφονται +στο \cite{mell2011nist} είναι τα παρακάτω: \begin{itemize} - \item \textbf{\textlatin{Software as a Service (SaaS)}}: + \item \textbf{Software as a Service (SaaS) (Λογισμικό ως Υπηρεσία)}: - Η δυνατότητα που παρέχεται στον καταναλωτή είναι η χρήση εφαρμογών - εκτελούμενες σε μια υποδομή νέφους. Οι εφαρμογές αυτές είναι - προσβάσιμες από διάφορες συσκευές ικανές να συνδεθούν στο διαδίκτυο - ή μέσω διεπαφής προγράμματος. Δεν προσφέρεται έλεγχος ή δυνατότητα + Παρέχεται στον καταναλωτή η δυνατότητα χρήσης εφαρμογών εκτελούμενων σε + μια υποδομή νέφους προσφερόμενη είτε από τον πάροχο νέφους είτε από + τρίτο μέρος. Οι εφαρμογές αυτές είναι προσβάσιμες, από διάφορες + συσκευές ικανές να συνδεθούν στο διαδίκτυο, μέσω φυλλομετρητή ή μέσω + προγραμματιστικής διεπαφής. Δεν προσφέρεται έλεγχος ή δυνατότητα διαχείρισης της υποκείμενης υποδομής νέφους ή των δυνατοτήτων της - υπηρεσίας, με εξαίρεση περιορισμένη χρήση συγκεκριμένων - ρυθμίσεων διαμόρφωσης της εφαρμογής. + υπηρεσίας, με εξαίρεση περιορισμένη παραμετροποίηση κάποιων ρυθμίσεων + διαμόρφωσης της εφαρμογής. Το μοντέλο χρέωσης είθισται να είναι της + μορφής μιας σταθερής μηνιαίας ή ετήσιας συνδρομής χρησιμοποιώντας + βαθμίδες με διαφορετικά επίπεδα παροχής υπηρεσιών του λογισμικού + \footfullcite{saasPricingModel}. - \item \textbf{\textlatin{Platform as a Service (PaaS)}}: + \item \textbf{Platform as a Service (PaaS) (Πλατφόρμα ως Υπηρεσία)}: - Η παρεχόμενη δυνατότητα είναι η χρήση ή η ανάπτυξη εφαρμογών σε μια - υποδομή νέφους. Οι εφαρμογές αυτές μπορεί να δημιουργήθηκαν ή να - αποκτήθηκαν από τον καταναλωτή και έχουν κατασκευαστεί χρησιμοποιώντας - γλώσσες προγραμματισμού, βιβλιοθήκες, υπηρεσίες και εργαλεία που - υποστηρίζονται από τον πάροχο. Ο καταναλωτής δεν έχει τον έλεγχο της - υποκείμενης υποδομής νέφους, αλλά έχει τον έλεγχο των εφαρμογών που - εκτελούνται σε αυτήν, καθώς και των ρυθμίσεων διαμόρφωσης τους και του - περιβάλλοντος εκτέλεσης τους. + Παρέχεται η δυνατότητα ανάπτυξης και εκτέλεσης εφαρμογών σε ένα + κατάλληλο περιβάλλον παρεχόμενο από μια πλατφόρμα που υποστηρίζεται από + πόρους του υπολογιστικού νέφους. Οι εφαρμογές αυτές αναπτύσσονται από + τον καταναλωτή μέσω της πλατφόρμας χρησιμοποιώντας ένα ολοκληρωμένο + περιβάλλον ανάπτυξης και εκτέλεσης αποτελούμενο από runtimes γλωσσών + προγραμματισμού, βιβλιοθήκες, υπηρεσίες και εργαλεία. Ο καταναλωτής δεν + έχει τον έλεγχο της υποκείμενης υποδομής νέφους, αλλά έχει τον έλεγχο + των εφαρμογών που εκτελούνται σε αυτήν, καθώς και των ρυθμίσεων + διαμόρφωσης τους και του περιβάλλοντος ανάπτυξης/εκτέλεσης τους. + Συνήθως, τα περιβάλλοντα είναι προκαθορισμένα ως προς το περιεχόμενο + τους αλλά γίνεται προσπάθεια από τους παρόχους των υπηρεσιών PaaS να + καλύψουν τις ανάγκες όλων των πιθανών ομάδων έργων λογισμικού σε σχέση + με τα διαφορετικά περιβάλλοντα που προσφέρονται. Το μοντέλο χρέωσης + υπηρεσιών PaaS συνήθως περιλαμβάνει μια σταθερή χρέωση ανά χρονική + περίοδο για κάθε είδος πόρου που χρειάστηκε να χρησιμοποιηθεί από τον + πάροχο για την επίτευξη των απαιτήσεων της εφαρμογής του καταναλωτή + μέσω της παρεχόμενης πλατφόρμας \footfullcite{paasPricingModel}. + Ουσιαστικά, ο καταναλωτής χρεώνεται με βάση την χρήση των πόρων του + παρόχου. - \item \textbf{\textlatin{Infrastructure as a Service (IaaS)}}: + \item \textbf{Infrastructure as a Service (IaaS) (Υποδομή ως Υπηρεσία)}: - Η παρεχόμενη δυνατότητα είναι η χρήση επεξεργαστικών, αποθηκευτικών, - δικτυακών και άλλων υπολογιστικών πόρων όπου ο καταναλωτής μπορεί να - εκτελέσει και να εγκαταστήσει λογισμικό της επιλογής του, - συμπεριλαμβανομένων λειτουργικών συστημάτων και εφαρμογών. Ο - καταναλωτής δεν έχει τον έλεγχο της υποκείμενης υποδομής νέφους, αλλά - έχει τον έλεγχο των λειτουργικών συστημάτων, του αποθηκευτικού χώρου, - των εγκατεστημένων εφαρμογών και των ρυθμίσεων διαμόρφωσης τους. + Παρέχεται η δυνατότητα χρήσης επεξεργαστικών, αποθηκευτικών, δικτυακών + και άλλων υπολογιστικών πόρων. Συνήθως, οι πόροι αυτοί συγκροτούνται + στην μορφή μιας εικονικής μηχανής, δηλ. ενός απογυμνωμένου + περιβάλλοντος στο οποίο ο καταναλωτής μπορεί να εγκαταστήσει και να + εκτελέσει το λογισμικό της επιλογής του, συμπεριλαμβανομένων + λειτουργικών συστημάτων και εφαρμογών. Ο καταναλωτής δεν έχει τον + έλεγχο της υποκείμενης υποδομής νέφους, αλλά έχει τον έλεγχο των + λειτουργικών συστημάτων, του αποθηκευτικού χώρου, των περιβαλλόντων + ανάπτυξης/εκτέλεσης, των εγκατεστημένων εφαρμογών και των ρυθμίσεων + διαμόρφωσης τους. Το μοντέλο χρέωσης υπηρεσιών IaaS συνήθως αποτελείται + από μια συνεχόμενη χρέωση ανά χρονική περίοδο λόγω της ανάθεσης των + πόρων στον καταναλωτή η οποία αυξάνεται μετά την υπέρβαση ενός ορίου + χρήσης για ορισμένους πόρους όπως το εύρος ζώνης δικτύου. \end{itemize} -\pagebreak +\subsection{Μοντέλα Ανάπτυξης} \label{cloudComputingDeploymentModels} -\subsection{Μοντέλα Παράδοσης} \label{cloudComputingDeploymentModels} - -Τα τέσσερα μοντέλα παράδοσης του υπολογιστικού νέφους είναι με βάση τον -\textlatin{\citet{mell2011nist}}: +Τα τέσσερα μοντέλα ανάπτυξης του υπολογιστικού νέφους σύμφωνα με το +\cite{mell2011nist} και την \citeauthor{cloudDeploymentModels} +\footfullcite{cloudDeploymentModels} είναι: \begin{itemize} - \item \textbf{Ιδιωτικό νέφος}: + \item \textbf{Ιδιωτικό νέφος (Private Cloud)}: - Το νέφος υποδομής είναι αποκλειστικά αφιερωμένο σε έναν μόνο οργανισμό - αποτελούμενο από πολλαπλούς καταναλωτές (π.χ. επιχειρησιακές μονάδες). - Ενδεχομένως να ανήκει, να διαχειρίζεται και να λειτουργεί από τον - οργανισμό, από μια τρίτη οντότητα, ή έναν συνδυασμό των δύο και μπορεί - να βρίσκεται εντός ή εκτός του οργανισμού. + Το ιδιωτικό νέφος είναι αποκλειστικά αφιερωμένο σε έναν μόνο οργανισμό + αποτελούμενο από πολλαπλούς καταναλωτές (π.χ. επιχειρησιακές μονάδες ή + τμήματα). Ενδεχομένως να ανήκει, να διαχειρίζεται και να λειτουργεί από + τον οργανισμό, από μια τρίτη οντότητα, ή έναν συνδυασμό των δύο. Το + νέφος αυτό μπορεί να βρίσκεται εντός ή εκτός του οργανισμού (πχ. στην + περίπτωση που λειτουργεί από τρίτη οντότητα). Παρέχει πλήρη έλεγχο στον + τρόπο με τον οποίο μοιράζονται και αποθηκεύονται τα δεδομένα και + διασφαλίζει την συμμόρφωση με τυχόν κανονισμούς τους οποίους καλείται + μια επιχείρηση να ακολουθήσει. Επιπλέον, λόγω της αποκλειστικής + αφιέρωσης του σε έναν μόνο οργανισμό, εξασφαλίζεται η διαθεσιμότητα των + δεδομένων κατά παραγγελία, όπως επίσης και η αξιοπιστία του για + κρίσιμους φόρτους εργασίας - \item \textbf{Κοινό νέφος}: +\clearpage - Είναι διαθέσιμο για μια ευρύτερη κοινότητα καταναλωτών ή οργανισμών με - κοινές ανησυχίες όπως οι απαιτήσεις ασφαλείας και ζητήματα πολιτικής - και συμμόρφωσης. Μπορεί να ανήκει, να διαχειρίζεται και να λειτουργεί - από έναν ή περισσότερους οργανισμούς της κοινότητας, μια τρίτη οντότητα - ή έναν συνδυασμό των δύο και να βρίσκεται εντός ή εκτός του οργανισμού. + \item \textbf{Κοινοτικό νέφος (Community Cloud)}: - \item \textbf{Δημόσιο νέφος}: + Είναι διαθέσιμο για μια κοινότητα καταναλωτών ή οργανισμών με κοινές + ανησυχίες, όπως οι απαιτήσεις ασφαλείας και ζητήματα πολιτικής και + συμμόρφωσης. Μπορεί να ανήκει, να διαχειρίζεται και να λειτουργεί από + έναν ή περισσότερους οργανισμούς της κοινότητας, μια τρίτη οντότητα ή + έναν συνδυασμό των δύο. Το νέφος αυτό μπορεί να βρίσκεται εντός ή εκτός + των οργανισμών της κοινότητας (εφόσον λειτουργεί από τρίτη κοινότητα). + Το κόστος κτήσης, λειτουργίας και συντήρησης συνήθως διαμοιράζεται + μεταξύ των μελών/οργανισμών της κοινότητας. Επιπροσθέτως, είναι + προσβάσιμο συνήθως μόνο από τα μέλη της κοινότητας. Οπότε, μπορεί να + θεωρηθεί ένα ιδιωτικό νέφος και όχι μόνο για έναν αλλά πολλαπλούς + οργανισμούς. + + \item \textbf{Δημόσιο νέφος (Public Cloud)}: Εδώ, το νέφος υποδομής είναι διαθέσιμο για το γενικό κοινό. Μπορεί να ανήκει και να διαχειρίζεται από μια επιχείρηση, έναν ακαδημαϊκό ή κυβερνητικό οργανισμό ή έναν συνδυασμό των παραπάνω. Λειτουργεί εντός - των υποδομών του παρόχου νέφους. + των υποδομών του παρόχου νέφους. Το δημόσιο νέφος είναι ουσιαστικά οι + εικονικές μηχανές που εκτελούνται σε διακομιστές του παρόχου νέφους, + των οποίων οι υπολογιστικοί πόροι χρησιμοποιούνται από πολλούς + καταναλωτές ταυτόχρονα. Αποτελεί το πιο δημοφιλές μοντέλο που παρέχουν + εταιρίες υπηρεσιών IaaS λόγω της απουσίας απαίτησης μεγάλου αρχικού + κόστους και της ευελιξίας που παρέχεται μέσω της αυτοεξυπηρέτησης κατά + παραγγελία. Είναι η κατάλληλη επιλογή για μεγάλους φόρτους εργασίας + μικρής διάρκειας λόγω του μοντέλου χρέωσης ανά χρήση και διευκολύνει + μια επιχείρηση στην μετέπειτα διαχείριση του κόστους με βάση τις + προβλέψεις της ζήτησης της υπηρεσίας που αυτή προσφέρει. - \item \textbf{Υβριδικό νέφος}: + \item \textbf{Υβριδικό νέφος (Hybrid Cloud)}: - Είναι συνδυασμός δύο ή περισσότερων νεφών (ιδιωτικού, κοινού ή + Είναι συνδυασμός δύο ή περισσότερων νεφών (ιδιωτικού, κοινοτικού ή δημοσίου) που διατηρούνται ως ξεχωριστές οντότητες αλλά συνδέονται - μεταξύ τους με τεχνολογίες που επιτρέπουν τη μεταφορά δεδομένων και - εφαρμογών. + μεταξύ τους με πρότυπες ή ιδιόκτητες τεχνολογίες που επιτρέπουν τη + φορητότητα δεδομένων και εφαρμογών. Η πιο συνηθισμένη μορφή ενός + υβριδικού νέφους αντιστοιχεί στη χρήση ενός ιδιωτικού νέφους, το οποίο + μπορεί να αντλεί επιπλέον πόρους από το δημόσιο νέφος, όταν φθάνει στα + όρια της χωρητικότητάς του. \end{itemize} -\pagebreak +\clearpage -\section{\textlatin{Virtualization Definition}} \label{virtualizationDefinition} +\section{Ορισμός Εικονικοποίησης} \label{virtualizationDefinition} -Σύμφωνα με τον ορισμό της \textlatin{Red Hat} -\cite{redhatVirtualizationDefinition}, η εικονικοποίηση είναι μια τεχνολογία -που μας επιτρέπει να δημιουργήσουμε πολλαπλά εικονικά περιβάλλοντα ή +Σύμφωνα με τον ορισμό της Red Hat +\footfullcite{redhatVirtualizationDefinition}, η εικονικοποίηση είναι μια +τεχνολογία που μας επιτρέπει να δημιουργήσουμε πολλαπλά εικονικά περιβάλλοντα ή αποκλειστικούς πόρους από ένα μόνο, φυσικό σύστημα υλικού. Ένα λογισμικό -ονόματι \textlatin{hypervisor} συνδέεται απευθείας στο υλικό αυτό και δίνει τη -δυνατότητα διαμερισμού ενός συστήματος σε ξεχωριστά, διακριτά και ασφαλή -περιβάλλοντα, γνωστά και ως εικονικές μηχανές (\textlatin{VM}). Αυτές οι -εικονικές μηχανές βασίζονται στην ικανότητα του \textlatin{hypervisor} να -διαχωρίζει τους πόρους της μηχανής από το υλικό και να τους κατανέμει -κατάλληλα. +ονόματι υπερ-επόπτης (hypervisor) συνδέεται στο υλικό αυτό\footnote{Απευθείας +στην εικονικοποίηση υποβοηθούμενη από το υλικό και έμμεσα στην +εικονικοποίηση υποβοηθούμενη από το λογισμικό} και δίνει τη δυνατότητα +διαμερισμού ενός συστήματος σε ξεχωριστά, διακριτά και ασφαλή περιβάλλοντα, +γνωστά και ως εικονικές μηχανές (Virtual Machines - VMs). Επομένως, αυτές οι +εικονικές μηχανές βασίζονται στην ικανότητα του υπερ-επόπτη να διαχωρίζει τους +πόρους της μηχανής και να τους κατανέμει κατάλληλα. -Το φυσικό υλικό, εξοπλισμένο με έναν \textlatin{hypervisor}, ονομάζεται -\textlatin{host}, ενώ τα πολλά \textlatin{VM} που χρησιμοποιούν τους πόρους του -είναι οι \textlatin{guests}. Αυτοί, αντιμετωπίζουν τους υπολογιστικούς πόρους -όπως είναι η κεντρική μονάδα επεξεργασίας, η μνήμη και ο αποθηκευτικός χώρος, -ως μια δεξαμενή πόρων που μπορεί εύκολα να ανακατανεμηθεί. Οι χειριστές μπορούν -να ελέγχουν εικονικά στιγμιότυπα της μνήμης, της κεντρικής μονάδας επεξεργασίας -και άλλων πόρων, ούτως ώστε οι \textlatin{guest} να λαμβάνουν τους πόρους που -χρειάζονται όταν είναι απαραίτητο. +Το φυσικό υλικό, εξοπλισμένο με έναν υπερ-επόπτη, ονομάζεται ξενιστής (host) ή +μηχάνημα φιλοξενίας, ενώ οι πολλές εικονικές μηχανές που χρησιμοποιούν τους +πόρους του είναι οι επισκέπτες (guests) ή αλλιώς τα φιλοξενούμενα μηχανήματα. +Οι επισκέπτες, αντιμετωπίζουν τους υπολογιστικούς πόρους όπως είναι η κεντρική +μονάδα επεξεργασίας, η μνήμη και ο αποθηκευτικός χώρος, ως μια δεξαμενή πόρων +που μπορεί εύκολα να ανακατανεμηθεί. Οι χειριστές μπορούν να ελέγχουν εικονικά +στιγμιότυπα αυτών των πόρων, ούτως ώστε να πραγματοποιούν οριζόντια ή κάθετη +κλιμάκωση. Δηλαδή είτε να δημιουργούν περισσότερες εικονικές μηχανές, είτε να +αναδημιουργούν την ίδια με επιπλέον πόρους (εφόσον δεν έχουν δεσμευτεί από +άλλες εικονικές μηχανές του ίδιου φυσικού μηχανήματος) όταν αυτό είναι +απαραίτητο. Η εικονικοποίηση καθιστά δυνατή τη δημιουργία χρήσιμων υπηρεσιών ΤΠ χρησιμοποιώντας πόρους στους οποίους παραδοσιακά μπορούσαμε να έχουμε πρόσβαση μονάχα με την ιδιοκτησία φυσικών μηχανημάτων. Μας επιτρέπει να αξιοποιήσουμε όλες τις δυνατότητες ενός φυσικού μηχανήματος διανέμοντας τις σε πολλούς -χρήστες και περιβάλλοντα. +χρήστες και περιβάλλοντα. Με άλλα λόγια, υποστηρίζεται η πολλαπλή μίσθωση ανά +φυσικό μηχάνημα με τη μορφή εικονικών μηχανημάτων καθώς και η αυξημένη χρήση +πόρων των φυσικών μηχανημάτων (στα κέντρα δεδομένων του νέφους) -\pagebreak +\clearpage -Ας φανταστούμε πως έχουμε τρεις διακομιστές, στον καθένα από τους οποίους έχει -ανατεθεί ένας συγκεκριμένος σκοπός. Ένας διακομιστής ηλεκτρονικού ταχυδρομείου, -ένας διακομιστής ιστού και ένας που εκτελεί εσωτερικές εταιρικές εφαρμογές οι -οποίες σταμάτησαν να διατηρούνται αλλά είναι ακόμα λειτουργικές. Στο -συγκεκριμένο παράδειγμα κάθε ένας από τους διακομιστές χρησιμοποιεί το μονάχα -το 30\% των δυνατοτήτων του. +Με βάση ένα παράδειγμα της Red Hat \footfullcite{redhatVirtualization}, ας +φανταστούμε πως έχουμε τρεις διακομιστές (servers) (δηλ. φυσικά μηχανήματα), +στον καθένα από τους οποίους έχει ανατεθεί ένας συγκεκριμένος σκοπός. Ένας +διακομιστής ηλεκτρονικού ταχυδρομείου, ένας διακομιστής ιστού και ένας που +εκτελεί εσωτερικές εταιρικές εφαρμογές οι οποίες σταμάτησαν να διατηρούνται +αλλά είναι ακόμα λειτουργικές. Στο συγκεκριμένο παράδειγμα κάθε ένας από τους +διακομιστές χρησιμοποιεί μονάχα το 30\% των δυνατοτήτων του (ως προς τους +πόρους που μπορεί να διαθέσει). \begin{center} +\begin{figure}[!ht] +\centering \includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_virtualization_server_usage1.png} - \captionof{figure}{Χρήση διακομιστών χωρίς εικονικοποίηση} + \captionof{figure}{Χρήση διακομιστών χωρίς εικονικοποίηση \cite{redhatVirtualization}} \label{fig:virtualizationServerUsage1} +\end{figure} +\vspace*{-30pt} \end{center} Παραδοσιακά, αυτή η αρχιτεκτονική όπου εκτελούνται μεμονωμένες εργασίες σε μεμονωμένους διακομιστές ήταν ευκολότερη και πιο αξιόπιστη αλλά δεν παύει να μην είναι η πιο αποδοτική λύση. Με την άφιξη της τεχνολογίας της -εικονικοποίησης όμως ήταν πλέον εφικτό να χωριστεί ένας διακομιστής σε -περισσότερα κομμάτια έχοντας πλέον δύο εικονικά μηχανήματα με τη χρήση ενός -φυσικού. +εικονικοποίησης, όμως είναι πλέον εφικτό να χωριστεί ένας διακομιστής σε +περισσότερα μέρη, έχοντας πλέον δύο ή παραπάνω εικονικά μηχανήματα με τη χρήση +ενός φυσικού. \begin{center} +\begin{figure}[!ht] +\centering \includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_virtualization_server_usage2.png} - \captionof{figure}{Χρήση διακομιστών με εικονικοποίηση} + \captionof{figure}{Χρήση διακομιστών με εικονικοποίηση \cite{redhatVirtualization}} \label{fig:virtualizationServerUsage2} +\end{figure} +\vspace*{-30pt} \end{center} -Ο χωρισμός των διακομιστών σε μικρότερους μπορεί να πραγματοποιηθεί -περισσότερες από μια φορές αυξάνοντας την αξιοποίηση των δυνατοτήτων τους, -παραδείγματος χάριν από 30\% σε 60\% και έπειτα σε 90\% αφήνοντας μας με -διακομιστές που είτε μπορούν μετά να χρησιμοποιηθούν για νέους σκοπούς είτε να -αποσυρθούν μειώνοντας έτσι και το κόστος λειτουργίας και συντήρησης τους. +Εφόσον ένας διακομιστής χωρίζεται σε δύο ή παραπάνω εικονικά μέρη, μπορεί να +αυξηθεί ραγδαία η αξιοποίηση των δυνατοτήτων του. Με βάση το προηγούμενο +παράδειγμα, αν μια εικονική μηχανή λαμβάνει το 30\% των πόρων ενός +διακομιστή/φυσικού μηχανήματος, τότε όλες οι προαναφερόμενες τρεις +λειτουργικότητες (παροχής υπηρεσιών ιστού, ηλεκτρονικού ταχυδρομείου και +εφαρμογών) θα μπορούσαν να εγκατασταθούν στον ίδιο διακομιστή με την μορφή +τριών διαφορετικών εικονικών μηχανημάτων, αντίστοιχα. -\pagebreak +\clearpage -\section{Ιστορική αναδρομή της εικονικοποίησης} \label{virtualizationHistory} +Αφού η δημιουργία και καταστροφή των εικονικών μηχανών σε ένα μηχάνημα +πραγματοποιείται δυναμικά ανάλογα με τη ζήτηση, αυτό σημαίνει πως ένας +διακομιστής μπορεί να συνεχίσει να χρησιμοποιείται για νέους σκοπούς σε σχέση +με τους αρχικούς είτε να αποσυρθεί τελείως σταματώντας την λειτουργία του +(switch off). Το τελευταίο είναι χρήσιμο κυρίως όταν η ζήτηση σε ένα κέντρο +δεδομένων είναι μικρή και επομένως υπάρχει οικονομικό συμφέρον (λόγω +ενεργειακού κόστους) ως προς το κλείσιμο των διακομιστών που δεν απαιτούνται +για την κάλυψη της παρούσας ζήτησης. -Ενώ η τεχνολογία εικονικοποίησης χρονολογείται από τη δεκαετία του 1960, δεν +\subsection{Ιστορική αναδρομή της εικονικοποίησης} \label{virtualizationHistory} + +Όπως αναφέρει μια θυγατρική της IBM \footfullcite{redhatVirtualization}, ενώ η +τεχνολογία εικονικοποίησης χρονολογείται από τη δεκαετία του 1960, δεν υιοθετήθηκε ευρέως μέχρι τις αρχές της δεκαετίας του 2000. Οι τεχνολογίες που -την έκαναν πραγματικότητα όπως οι \textlatin{hypervisors} αναπτύχθηκαν πριν από +την έκαναν πραγματικότητα, όπως οι υπερ-επόπτες, αναπτύχθηκαν πριν από δεκαετίες για να δώσουν σε πολλούς χρήστες ταυτόχρονη πρόσβαση σε υπολογιστές που επεξεργαζόντουσαν πολλά δεδομένα ταυτόχρονα. Κάτι ιδιαίτερα δημοφιλές στον τομέα των επιχειρήσεων για καθήκοντα ρουτίνας που έπρεπε να εκτελεστούν @@ -236,93 +317,113 @@ Ωστόσο, μέσα στις επόμενες δεκαετίες, ήρθαν στο προσκήνιο άλλες λύσεις στο πρόβλημα διαμοιρασμού ενός μηχανήματος σε πολλούς χρήστες, μειώνοντας έτσι το -ενδιαφέρον για την τεχνολογία εικονικοποίησης. Μία από αυτές ήταν ο διαμοιρασμός -χρόνου (\textlatin{time-sharing}) όπου ένας χρήστης μπορούσε να χρησιμοποιεί το -λειτουργικό σύστημα απομονωμένα από του υπόλοιπους. Κάτι που οδήγησε στη -δημιουργία λειτουργικών συστημάτων όπως το \textlatin{UNIX} το οποίο με τη -σειρά του άνοιξε δρόμο για την άφιξη του \textlatin{Linux}. Καθ'' όλη τη -διάρκεια αυτή, η εικονικοποίηση παρέμεινε σε μεγάλο βαθμό μη διαδεδομένη. +ενδιαφέρον για την τεχνολογία εικονικοποίησης. Μία από αυτές ήταν ο +διαμοιρασμός χρόνου (time-sharing) όπου ένας χρήστης μπορούσε να χρησιμοποιεί +το λειτουργικό σύστημα απομονωμένα από τους υπόλοιπους. Κάτι που οδήγησε στη +δημιουργία λειτουργικών συστημάτων όπως το UNIX, το οποίο με τη σειρά του +άνοιξε δρόμο για την άφιξη του Linux. Καθ' όλη τη διάρκεια αυτή, η +εικονικοποίηση παρέμεινε σε μεγάλο βαθμό μη διαδεδομένη. Προχωρώντας στη δεκαετία του 1990, οι περισσότερες επιχειρήσεις διέθεταν φυσικούς διακομιστές και στοίβες μηχανημάτων ενός προμηθευτή, οι οποίες δεν -είχαν τη δυνατότητα εκτέλεσης παλαιών εφαρμογών σε υλικό διαφορετικού -προμηθευτή. Καθώς οι εταιρείες αναβάθμιζαν τα περιβάλλοντα πληροφορικής τους με -λιγότερο δαπανηρούς διακομιστές, λειτουργικά συστήματα και εφαρμογές από -διάφορους προμηθευτές, ήταν υποχρεωμένες να υπολειτουργούν το φυσικό υλικό αφού -κάθε διακομιστής μπορούσε να εκτελέσει μόνο μια εργασία που αφορούσε -συγκεκριμένο προμηθευτή. +είχαν τη δυνατότητα εκτέλεσης εφαρμογών σε υλικό διαφορετικού προμηθευτή. Καθώς +οι εταιρείες αναβάθμιζαν τα περιβάλλοντα πληροφορικής τους με λιγότερο +δαπανηρούς διακομιστές, λειτουργικά συστήματα και εφαρμογές από διάφορους +προμηθευτές, ήταν υποχρεωμένες να υπολειτουργούν το φυσικό υλικό, αφού κάθε +διακομιστής μπορούσε συνήθως να εκτελέσει μόνο μια εργασία/εφαρμογή που είχε +υλοποιηθεί με βάση το υλικό του συγκεκριμένου προμηθευτή (του διακομιστή). + +\clearpage Από εκείνο το σημείο και έπειτα άρχισε να γίνεται εμφανής η ανάγκη της εικονικοποίησης και να ανεβαίνει η δημοτικότητα της. Οι εταιρείες μπορούσαν -πλέον να διαμερίσουν τους διακομιστές τους και να εκτελούν παλαιές εφαρμογές σε -πολλούς τύπους και εκδόσεις λειτουργικών συστημάτων. Οι διακομιστές άρχισαν να -χρησιμοποιούνται πιο αποδοτικά ή και καθόλου μειώνοντας το απαιτούμενο κόστος -αγοράς, εγκατάστασης, συντήρησης και ψύξης τους. +πλέον να διαμερίσουν τους διακομιστές τους και να εκτελούν ακόμα και τις +παλαιές τους εφαρμογές σε πολλούς τύπους και εκδόσεις λειτουργικών συστημάτων. +Οι διακομιστές άρχισαν να χρησιμοποιούνται πιο αποδοτικά ή και καθόλου, +μειώνοντας το απαιτούμενο κόστος αγοράς, εγκατάστασης, συντήρησης και ψύξης +τους. Η ευρεία εφαρμογή της εικονικοποίησης συνέβαλε στη μείωση του εγκλωβισμού σε έναν μόνο προμηθευτή και την κατέστησε το θεμέλιο του υπολογιστικού νέφους. Σήμερα είναι τόσο διαδεδομένη σε όλες τις επιχειρήσεις που συχνά απαιτείται -εξειδικευμένο λογισμικό διαχείρισης των εικονικών πόρων για να μπορέσει κανείς -να παρακολουθεί τα δρώμενα της επιχείρησής. +εξειδικευμένο λογισμικό διαχείρισης των εικονικών πόρων +\footfullcite{redhatVirtualizationManagement} για να μπορέσει κανείς να +παρακολουθεί τα δρώμενα της επιχείρησης. Πρόκειται για ένα λογισμικό το οποίο +διασυνδέεται με εικονικά περιβάλλοντα και το υποκείμενο φυσικό υλικό τους με +απώτερο σκοπό την απλοποίηση της διαχείρισης πόρων, τη βελτίωση της ανάλυσης +δεδομένων και τον εξορθολογισμό των λειτουργιών. Ουσιαστικά ένα λογισμικό που +συνδέεται απομακρυσμένα με υπερ-επόπτες, προσφέροντας φιλική προς τον χρήση +διεπαφή και επιπρόσθετες λειτουργίες όπως η συγκρότηση αναφορών χρήσης, η +αυτοματοποίηση επιβολής κανόνων και η παρακολούθηση χρήσης εικονικών +περιβαλλόντων. -\section{Τι είναι ένας \textlatin{hypervisor}} \label{hypervisors} +\section{Τι είναι ένας υπερ-επόπτης} \label{hypervisors} -Προτού έρθουν στο προσκήνιο, οι περισσότεροι φυσικοί υπολογιστές μπορούσαν να -εκτελέσουν ένα λειτουργικό σύστημα τη φορά. Αυτό συνέβαλε στη σταθερότητα τους -μιας και δε χρειαζόταν να διαχειριστούν αιτήματα από άλλα λειτουργικά συστήματα -αλλά αυτή η προσέγγιση είχε ένα μειονέκτημα. Μεγάλο κομμάτι των πόρων του -συστήματος έμενε ανεκμετάλλευτο. +Προτού οι υπερ-επόπτες έρθουν στο προσκήνιο, οι περισσότεροι φυσικοί +υπολογιστές μπορούσαν να εκτελέσουν ένα λειτουργικό σύστημα τη φορά. Αυτό +συνέβαλε στη σταθερότητα τους μιας και δε χρειαζόταν να διαχειριστούν αιτήματα +από άλλα λειτουργικά συστήματα. Αυτή η προσέγγιση όμως είχε ένα μειονέκτημα. +Μεγάλο κομμάτι των πόρων του συστήματος έμενε ανεκμετάλλευτο. -Τη λύση σε αυτό το πρόβλημα την έφερε η εισαγωγή των \textlatin{hypervisors}. -Πρόκειται για μια στρώση λογισμικού που καθιστά δυνατή την εκτέλεση πολλαπλών -λειτουργικών συστημάτων το ένα δίπλα στο άλλο μοιράζοντας τους ίδιους φυσικούς -πόρους σε κάθε ένα από αυτά. Η πράξη αυτή ονομάζεται εικονικοποίηση και τα -στιγμιότυπα των λειτουργικών συστημάτων λέγονται εικονικές μηχανές οι οποίες -αντιπροσωπεύουν προσομοιώσεις φυσικών υπολογιστών. +Τη λύση σε αυτό το πρόβλημα την έφερε η εισαγωγή των υπερ-εποπτών. Πρόκειται +για μια στρώση λογισμικού που καθιστά δυνατή την εκτέλεση πολλαπλών +λειτουργικών συστημάτων, το ένα δίπλα στο άλλο, μοιράζοντας τους ίδιους +φυσικούς πόρους σε κάθε ένα από αυτά. Η πράξη αυτή ονομάζεται εικονικοποίηση +και τα στιγμιότυπα των λειτουργικών συστημάτων λέγονται εικονικές μηχανές οι +οποίες αντιπροσωπεύουν προσομοιώσεις φυσικών υπολογιστών. -Οι \textlatin{hypervisors} είναι υπεύθυνοι για τη διαχείριση των εικονικών -μηχανών χωρίζοντας τις και αναθέτοντας σε κάθε μια ένα κομμάτι της διαθέσιμης +\clearpage + +Οι υπερ-επόπτες είναι υπεύθυνοι για τη διαχείριση των εικονικών μηχανών +χωρίζοντας τις και αναθέτοντας σε κάθε μια ένα κομμάτι της διαθέσιμης υπολογιστικής ισχύος, μνήμης και χώρου αποθήκευσης. Αυτή η διαδικασία τις -αποτρέπει από την αλληλεπίδραση μεταξύ τους και στην περίπτωση κατάρρευσης μιας -εικονικής μηχανής, οι υπόλοιπες παραμένουν ανεπηρέαστες. +αποτρέπει από την αλληλεπίδραση μεταξύ τους. Μάλιστα, στην περίπτωση +κατάρρευσης μιας εικονικής μηχανής, οι υπόλοιπες παραμένουν ανεπηρέαστες. -\pagebreak +\subsection{Είδη υπερ-εποπτών} \label{hypervisorTypes} -\section{Είδη \textlatin{hypervisor}} \label{hypervisorTypes} - -Οι \textlatin{hypervisors} χωρίζονται σε δύο κατηγορίες ανάλογα με το -περιβάλλον στο οποίο εκτελούνται. Με βάση την -\textlatin{\citet{ibmVirtualizationDefinition}}, αυτές είναι: +Οι υπερ-επόπτες χωρίζονται σε δύο κατηγορίες ανάλογα με το περιβάλλον στο οποίο +εκτελούνται. Με βάση την \citeauthor{ibmHypervisorDefinition} +\footfullcite{ibmHypervisorDefinition}, αυτές είναι: \begin{itemize} - \item \textbf{\textlatin{Type 1 (Bare Metal)}}: + \item \textbf{Τύπου 1 (Bare Metal)}: - Ένας \textlatin{hypervisor} τύπου 1 εκτελείται απευθείας στο φυσικό - υλικό του υποκείμενου υπολογιστή, αλληλεπιδρώντας άμεσα με την κεντρική - μονάδα επεξεργασίας, τη μνήμη και το φυσικό αποθηκευτικό χώρο. Για το - λόγο αυτό, οι \textlatin{hypervisors} τύπου 1 αναφέρονται επίσης ως - \textlatin{bare-metal hypervisors} και αντικαθιστούν το λειτουργικό - σύστημα του κεντρικού υπολογιστή. Η άμεση πρόσβαση στο φυσικό υλικό - τους καθιστά ιδιαίτερα αποδοτικούς. Συχνά απαιτείται μια ξεχωριστή - μηχανή διαχείρισης για τον έλεγχο των εικονικών μηχανών και του υλικού - του κεντρικού υπολογιστή. + Ένας υπερ-επόπτης τύπου 1 εκτελείται απευθείας στο φυσικό υλικό του + υποκείμενου υπολογιστή, αλληλεπιδρώντας άμεσα με την κεντρική μονάδα + επεξεργασίας, τη μνήμη και το φυσικό αποθηκευτικό χώρο. Για το λόγο + αυτό, οι υπερ-επόπτες τύπου 1 αναφέρονται επίσης ως bare-metal + υπερ-επόπτες και αντικαθιστούν το λειτουργικό σύστημα του κεντρικού + υπολογιστή. Η άμεση πρόσβαση στο φυσικό υλικό, τους καθιστά ιδιαίτερα + αποδοτικούς. Παρ' όλα αυτά, επειδή αντικαθιστούν το ΛΣ, προκειμένου να + μπορούν να αξιοποιηθούν απομακρυσμένα, συχνά απαιτείται μια ξεχωριστή + μηχανή στην οποία θα εκτελείται λογισμικό διαχείρισης εικονικών πόρων + \footfullcite{phoenixnapHypervisors}, μέσω του οποίου προσφέρεται μια + διεπαφή για τον έλεγχο των εικονικών μηχανών και του υλικού του + κεντρικού υπολογιστή. -\pagebreak + \item \textbf{Τύπου 2 (Hosted)}: - \item \textbf{\textlatin{Type 2 (Hosted)}}: + Ένας υπερ-επόπτης τύπου 2 δεν εκτελείται απευθείας στο υποκείμενο + υλικό. Αντ' αυτού, εκτελείται ως εφαρμογή σε ένα υπάρχον λειτουργικό + σύστημα. Η χρήση τους δε συνηθίζεται σε περιβάλλοντα με πολλούς + διακομιστές λόγω της καθυστέρησης που εισάγεται εξαιτίας της συνεχούς + επικοινωνίας του με το ΛΣ φιλοξενίας και επειδή το υποκείμενο αυτό ΛΣ + βάζει σε προτεραιότητα τις δικές του εφαρμογές και λειτουργίες έναντι + αυτών του υπερ-επόπτη \footfullcite{amazonHypervisors}. - Ένας \textlatin{hypervisor} τύπου 2 δεν εκτελείται απευθείας στο - υποκείμενο υλικό. Αντ'' αυτού, εκτελείται ως εφαρμογή σε ένα υπάρχον - λειτουργικό σύστημα. Η χρήση τους δε συνηθίζεται σε περιβάλλοντα με - πολλούς διακομιστές. Αντίθετα, είναι καταλληλότεροι για μεμονωμένους - τελικούς χρήστες υπολογιστών που έχουν την ανάγκη να εκτελέσουν - πολλαπλά λειτουργικά συστήματα. Μερικοί από αυτούς είναι μηχανικοί, - επαγγελματίες ασφαλείας που αναλύουν κακόβουλο λογισμικό και υπάλληλοι - επιχειρήσεων που χρειάζονται πρόσβαση σε εφαρμογές που είναι διαθέσιμες - αποκλειστικά σε διαφορετικές πλατφόρμες λογισμικού από τη δική τους. +\clearpage - Διατίθενται συχνά πρόσθετες εργαλειοθήκες για τους χρήστες οι οποίες + Αντίθετα, είναι καταλληλότεροι για μεμονωμένους τελικούς χρήστες + υπολογιστών που έχουν την ανάγκη να εκτελέσουν πολλαπλά λειτουργικά + συστήματα (σε έναν υπολογιστή). Παραδείγματα τέτοιων χρηστών είναι + μηχανικοί, επαγγελματίες ασφαλείας που αναλύουν κακόβουλο λογισμικό και + υπάλληλοι επιχειρήσεων που χρειάζονται πρόσβαση σε εφαρμογές που είναι + διαθέσιμες αποκλειστικά σε διαφορετικές πλατφόρμες λογισμικού από τη + δική τους. + + Διατίθενται συχνά πρόσθετες εργαλειοθήκες για τους χρήστες, οι οποίες μπορούν να εγκατασταθούν στο λειτουργικό σύστημα προκειμένου να παρέχουν βελτιωμένες συνδέσεις μεταξύ του υποκείμενου λειτουργικού συστήματος και εκείνου της εικονικής μηχανής. Οι πρόσθετες δυνατότητες @@ -330,95 +431,125 @@ αποκοπή και επικόλληση μεταξύ των δύο συστημάτων ή η κοινή πρόσβαση στον αποθηκευτικό χώρο. - Επιτρέπει τη γρήγορη εναλλαγή σε διαφορετικά λειτουργικά συστήματα - πέραν του ήδη υπάρχοντος, πράγμα που αυξάνει την παραγωγικότητα του - τελικού χρήστη, αφού μπορεί να έχει πρόσβαση σε εργαλεία που δεν - υποστηρίζονται στο δικό του. + Η τρέχουσα προσέγγιση επιτρέπει τη γρήγορη εναλλαγή σε διαφορετικά + λειτουργικά συστήματα πέραν του ήδη υπάρχοντος, πράγμα που αυξάνει την + παραγωγικότητα του τελικού χρήστη, αφού μπορεί να έχει πρόσβαση σε + εργαλεία που δεν υποστηρίζονται στο δικό του (αρχικό/υπάρχον σύστημα). - Εξαιτίας της αρχιτεκτονικής τους, οι \textlatin{hypervisors} τύπου 2 - εισάγουν προβλήματα καθυστέρησης που μπορεί να επηρεάσουν την απόδοση - διότι η πρόσβαση στους πόρους υπολογισμού, μνήμης και δικτύου - πραγματοποιείται μέσω του κεντρικού λειτουργικού συστήματος. + Σε κάθε τύπο υπερ-επόπτη, όταν το φιλοξενούμενο ΛΣ αιτηθεί πρόσβαση + στους πόρους υπολογισμού, μνήμης και δικτύου του φυσικού υλικού, όλες + οι προσβάσεις περνάνε πρώτα από αυτόν. Στην περίπτωση όμως + υπερ-επόπτη τύπου 2, επειδή εκτελείται ως εφαρμογή του ΛΣ φιλοξενίας, + οι προσβάσεις αυτές χρειάζεται να μεταφραστούν προτού περάσουν στο + φιλοξενούμενο ΛΣ και τους υποκείμενους πόρους του. Επομένως, σε + αντίθεση με τους υπερ-επόπτες τύπου 1 όπου η πρόσβαση γίνεται άμεσα, η + χρήση υπερ-εποπτών τύπου 2 εισάγει προβλήματα καθυστέρησης που μπορεί + να επηρεάσουν την απόδοση. - Επιπροσθέτως, εισάγει πιθανούς κινδύνους ασφάλειας εάν ένας εισβολέας - παραβιάσει το κεντρικό λειτουργικό σύστημα, επειδή θα μπορούσε στη - συνέχεια να χειραγωγήσει οποιοδήποτε φιλοξενούμενο λειτουργικό σύστημα - που εκτελείται σε αυτόν. + Κατά την χρήση υπερ-επόπτη τύπου 2 παρέχεται μεγαλύτερη + συμβατότητα/γκάμα υλικού διότι αυτό διαχειρίζεται από το υποκείμενο ΛΣ + φιλοξενίας. Επιπροσθέτως, εισάγεται πιθανός κίνδυνος ασφαλείας εάν ένας + εισβολέας παραβιάσει το κεντρικό λειτουργικό σύστημα, επειδή θα + μπορούσε στη συνέχεια να χειραγωγήσει οποιοδήποτε φιλοξενούμενο + λειτουργικό σύστημα εκτελείται σε αυτόν. \end{itemize} -\pagebreak +\clearpage -\section{Χαρακτηριστικά των \textlatin{hypervisor}} \label{hypervisorCharacteristics} +\subsection{Χαρακτηριστικά ενός υπερ-επόπτη} \label{hypervisorCharacteristics} -Αν και υπάρχουν διαφορετικά είδη \textlatin{hypervisor}, όλοι έχουν κάποια -χαρακτηριστικά που πρέπει να λάβει κανείς υπόψιν όταν επιλέγει ποιον θα -χρησιμοποιήσει. Μερικά σημαντικά αυτών όπως αναφέρονται από το -\textlatin{\citep{ibmHypervisorDefinition}} είναι: +Αν και υπάρχουν διαφορετικά είδη υπερ-εποπτών, όλοι έχουν κάποια χαρακτηριστικά +που πρέπει να λάβει κανείς υπόψιν όταν επιλέγει ποιον θα χρησιμοποιήσει. Μερικά +σημαντικά αυτών όπως αναφέρονται από την \citeauthor{ibmHypervisorDefinition} +\footfullcite{ibmHypervisorDefinition} είναι: \begin{itemize} \item \textbf{Απόδοση}: - Βασικό χαρακτηριστικό ενός \textlatin{hypervisor} είναι η απόδοση του. - Διαφέρει από τον ένα στον άλλο αναλόγως την κατασκευή και τον τύπο του. - Οι \textlatin{bare-metal hypervisors} θα πρέπει να παρέχουν απόδοση - κοντά στην εγγενή. + Βασικό χαρακτηριστικό ενός υπερ-επόπτη είναι η απόδοση του. Αυτή + διαφέρει από τον ένα υπερ-επόπτη στον άλλο αναλόγως την κατασκευή και + τον τύπο του. Όμως, εν γένει, οι bare-metal υπερ-επόπτες θα πρέπει να + παρέχουν απόδοση κοντά στην εγγενή λόγω της απουσίας ανάγκης μετάφρασης + των αιτημάτων του φιλοξενούμενου ΛΣ. \item \textbf{Οικοσύστημα}: - Για τη διαχείριση \textlatin{hypervisor} σε διάφορες κλίμακες πρέπει να + Για τη διαχείριση ενός υπερ-επόπτη σε διάφορες κλίμακες πρέπει να υπάρχει καλή τεκμηρίωση και διάφορα εργαλεία είτε επίσημα είτε από την κοινότητα που να επιτρέπουν δυνατότητες όπως δημιουργία αντιγράφων ασφαλείας, ανάλυση χωρητικότητας και διαχείριση εναλλαγής εικονικών - μηχανών σε περιπτώσεις σφάλματος του λειτουργικού συστήματος της - εκτελούμενης. + μηχανών \footfullcite{vmfailover} με αντίγραφα τους σε περιπτώσεις + σφάλματος του λειτουργικού συστήματος της εκτελούμενης (εικονικής + μηχανής). \item \textbf{Εργαλεία διαχείρισης}: Η εκτέλεση εικονικών μηχανών δεν αποτελεί το μοναδικό καθήκον ενός - διαχειριστή κατά τη χρήση ενός \textlatin{hypervisor}. Απαραίτητες - πρόσθετες ενέργειες είναι η συντήρηση και η ανάλυση τους, καθώς και ο - καθαρισμός όσων δε χρησιμοποιούνται πλέον. Επομένως, η ύπαρξη εργαλείων - που να καθιστούν δυνατές αυτές τις ενέργειες αποτελεί σημαντικό - παράγοντα κατά την επιλογή λογισμικού \textlatin{hypervisor}. + διαχειριστή κατά τη χρήση ενός υπερ-επόπτη. Απαραίτητες πρόσθετες + ενέργειες είναι η συντήρηση και η ανάλυση τους, καθώς και η διαγραφή + όσων δε χρησιμοποιούνται πλέον. Επομένως, η ύπαρξη εργαλείων που να + καθιστούν δυνατές αυτές τις ενέργειες αποτελεί σημαντικό παράγοντα κατά + την επιλογή λογισμικού υπερ-επόπτη. \item \textbf{Μεταφορά κατά τη λειτουργία}: Πρέπει να υπάρχει η δυνατότητα μεταφοράς εικονικών μηχανών από έναν - \textlatin{hypervisor} σε έναν δεύτερο σε διαφορετική φυσική μηχανή - χωρίς την ανάγκη διακοπής της λειτουργίας τους. Ένα χαρακτηριστικό που - χρησιμεύει τόσο για την ανατροπή αποτυχίας όσο και για την εξισορρόπηση - του φόρτου εργασίας. + υπερ-επόπτη σε έναν δεύτερο σε διαφορετική φυσική μηχανή, ιδανικά χωρίς + την ανάγκη διακοπής της λειτουργίας τους. Ένα χαρακτηριστικό που + χρησιμεύει τόσο για την αποτροπή αποτυχίας παροχής υπηρεσιών της + εκάστοτε επιχείρησης όσο και για την εξισορρόπηση του φόρτου εργασίας. + +\clearpage \item \textbf{Κόστος}: Το κόστος είναι ένας παράγοντας που πρέπει να ληφθεί υπόψιν κατά την - επιλογή ενός \textlatin{hypervisor}. Οι περισσότεροι είναι δωρεάν αλλά - υπάρχουν και εμπορικές εκδόσεις που προσφέρουν περισσότερες - δυνατότητες. Όπως επίσης και ύπαρξη ή μη, λογισμικού διαχείρισης τους - που να επιτρέπει την εύκολη κλιμάκωση με βάση τις απαιτήσεις της - επιχείρησης. + επιλογή ενός υπερ-επόπτη. Οι περισσότεροι είναι δωρεάν αλλά υπάρχουν + και εμπορικές εκδόσεις που προσφέρουν περισσότερες δυνατότητες. Για + παράδειγμα, η ύπαρξη ή μη, λογισμικού διαχείρισης τους που να επιτρέπει + την εύκολη κλιμάκωση με βάση τις απαιτήσεις της επιχείρησης. \end{itemize} +\subsection{Επιλογή υπερ-επόπτη} \label{hypervisorSelection} + + Σε κάθε περίπτωση υπερ-επόπτη, το φιλοξενούμενο ΛΣ δεν γνωρίζει πως + εκτελείται σε εικονικοποιημένο περιβάλλον ενώ στην περίπτωση παραβίασης + του ίδιου, η χειραγώγηση όλων των εικονικών μηχανών θα μπορεί να + πραγματοποιηθεί χωρίς μεγάλη δυσκολία. + + Η επιλογή του τύπου υπερ-επόπτη που θα χρησιμοποιηθεί είναι άμεσα + εξαρτώμενη από τις ανάγκες του κάθε τελικού χρήση ή επιχείρησης + ζυγίζοντας τα πλεονεκτήματα και μειονεκτήματα που έρχονται με την κάθε + επιλογή. Παραδείγματος χάριν, αν η ταχύτητα και η απόδοση αποτελούν + χαρακτηριστικά υψίστης σημασίας, τότε η επιλογή υπερ-επόπτη τύπου 1 + αποτελεί μονόδρομο. Από την άλλη, αν η προτεραιότητα είναι η ευκολία + διαχείρισης και η ευελιξία ταχείας εναλλαγής σε διαφορετικά λειτουργικά + συστήματα, η πιο ταιριαστή επιλογή είναι ένας υπερ-επόπτης τύπου 2. + \section {Τρόπος λειτουργίας της εικονικοποίησης} \label{virtualizationOperation} -Για να πραγματοποιηθεί η εικονικοποίηση, χρειαζόμαστε έναν -\textlatin{hypervisor}. Δηλαδή ενός λογισμικό που διαχωρίζει τους φυσικούς -πόρους από τα εικονικά περιβάλλοντα, τα οποία τους χρειάζονται. Ένας -\textlatin{hypervisor} μπορεί να τοποθετηθεί πάνω σε ένα λειτουργικό σύστημα ή -να εγκατασταθεί απευθείας στο υλικό. Κάτι που κάνουν οι περισσότερες +Για να πραγματοποιηθεί η εικονικοποίηση, χρειαζόμαστε έναν υπερ-επόπτη. Δηλαδή +ενός λογισμικού που διαχωρίζει τους φυσικούς πόρους από τα εικονικά +περιβάλλοντα, τα οποία τους χρειάζονται. Ένας υπερ-επόπτης μπορεί να +τοποθετηθεί πάνω σε ένα λειτουργικό σύστημα ή να εγκατασταθεί απευθείας στο +υλικό. Η τελευταία εναλλακτική είναι αυτή που επιλέγουν οι περισσότερες επιχειρήσεις για λόγους αποδοτικότητας αφού θα βρίσκεται μια στρώση πιο κοντά -στο υλικό το οποίο θα διαχειρίζεται. Η δουλειά ενός \textlatin{hypervisor} -είναι ουσιαστικά να πάρουν τους φυσικούς μας πόρους και να τους χωρίσουν με -τέτοιο τρόπο ώστε να μπορούν να χρησιμοποιηθούν από τα εικονικά μας -περιβάλλοντα \cite{redhatVirtualization}. +στο υλικό το οποίο θα διαχειρίζεται. Η δουλειά ενός υπερ-επόπτη είναι +ουσιαστικά να λάβει τους φυσικούς πόρους ενός (φυσικού) μηχανήματος και να τους +χωρίσει με τέτοιο τρόπο ώστε να μπορούν να χρησιμοποιηθούν από τα εικονικά μας +περιβάλλοντα \footfullcite{redhatVirtualization}. \begin{center} +\begin{figure}[!ht] +\centering \includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_virtualization_architecture.png} - \captionof{figure}{\textlatin{hypervisor} πάνω σε διακομιστές} + \captionof{figure}{Υπερ-επόπτης πάνω σε διακομιστές \cite{redhatVirtualization}} \label{fig:hypervisorOnServers} +\end{figure} +\vspace*{-30pt} \end{center} Μετά τη δημιουργία μιας εικονικής μηχανής, οι χρήστες αλληλεπιδρούν με αυτήν @@ -427,239 +558,438 @@ οποιονδήποτε υπολογιστή αναμένοντας τον ίδιο τρόπο λειτουργίας. Κατά την εκτέλεση του εικονικού περιβάλλοντος, όταν ένας χρήστης ή ένα πρόγραμμα εκδώσει μία εντολή που απαιτεί περισσότερους πόρους από τους διαθέσιμους του, ο -\textlatin{hypervisor} αναμεταδίδει το αίτημα αυτό στο φυσικό σύστημα και +υπερ-επόπτης είτε αναμεταδίδει το αίτημα αυτό στο φυσικό σύστημα είτε πρώτα το +μεταφράζει και μεταδίδει το μεταφρασμένο αν είναι υπερ-επόπτης τύπου 2. Έπειτα, μπορεί να διαθέσει τους απαραίτητους για την εκτέλεση πόρους. Όλα αυτά -συμβαίνουν με σχεδόν εγγενή ταχύτητα, ιδίως αν αποστέλλεται μέσω ενός -\textlatin{hypervisor} ανοιχτού κώδικα βασισμένου στο \textlatin{KVM}, το -\textlatin{(Kernel-based Virtual Machine)} που επιτρέπει στο \textlatin{Linux} -να συμπεριφέρεται ως ένας \textlatin{hypervisor}. +συμβαίνουν με σχεδόν εγγενή ταχύτητα αν γίνεται χρήση υπερ-επόπτη τύπου 1 όπου +δεν υπάρχει λειτουργικό σύστημα ανάμεσα στις εικονικές μηχανές και το φυσικό +μηχάνημα. Εξαίρεση στον κανόνα απουσίας λειτουργικού συστήματος αποτελεί η +χρήση ενός υπερ-επόπτη ανοιχτού κώδικα βασισμένου στο KVM (Kernel-based Virtual +Machine), που επιτρέπει στο Linux να συμπεριφέρεται ως ένας υπερ-επόπτης. Αυτό +συμβαίνει διότι το KVM αποτελεί κομμάτι του πυρήνα του Linux από την έκδοση +2.6.20 και έπειτα, επιτρέποντας του να επωφεληθεί από τους διαθέσιμους +μηχανισμούς απομόνωσης μέσω αυτού. Επομένως, του προσφέρεται η ικανότητα να +λάβει αποκλειστικούς πόρους από το φυσικό μηχάνημα \footfullcite{kvm}, κάτι που +εξαλείφει το μειονέκτημα έλλειψης προτεραιότητας των διεργασιών ενός +υπερ-επόπτη τύπου 2 έναντι αυτών του λειτουργικού συστήματος φιλοξενίας. -\pagebreak +\clearpage -\section{Τύποι εικονικοποίησης} \label{virtualizationTypes} +\subsection{Είδη εικονικοποίησης} \label{virtualizationImplementations} -Υπάρχουν πολλοί τύποι εικονικοποίησης. Πέντε βασικοί αυτών όπως αναφέρεται από -την \textlatin{Red Hat} \cite{redhatVirtualization} είναι οι παρακάτω: +Υπάρχουν πολλά είδη εικονικοποίησης. Πέντε βασικά αυτών όπως αναφέρονται από +την Red Hat \footfullcite{redhatVirtualization} και τρία ακόμα που +χρησιμοποιούνται συχνά είναι τα παρακάτω: \begin{itemize} - \item \textbf{\textlatin{Data Virtualization}}: + \item \textbf{Εικονικοποίηση Δεδομένων}: \begin{center} + \begin{figure}[!ht] + \centering \includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_data_virtualization.png} - \captionof{figure}{\textlatin{Data Virtualization}} + \captionof{figure}{Εικονικοποίηση Δεδομένων \cite{redhatVirtualization}} \label{fig:dataVirtualization} + \end{figure} + \vspace*{-30pt} \end{center} - Διασκορπισμένα δεδομένα μπορούν να ενοποιηθούν σε μια ενιαία πηγή. Με - την εικονικοποίηση δεδομένων, οι εταιρείες μπορούν να οργανώσουν και να + Η εικονικοποίηση δεδομένων είναι μια προσέγγιση ενσωμάτωσης δεδομένων + από διαφορετικές πηγές, σε μια ολιστική, λογική προβολή δίχως την + ανάγκη της φυσικής μετακίνησης τους \footfullcite{dataVirtualization}. + Δηλαδή διασκορπισμένα ετερογενή δεδομένα παρεχόμενα από πηγές διαφόρων + τοποθεσιών δύναται να συσσωματωθούν σε μοναδικά, λογικά τεμάχια μιας + ενιαίας εικονικής πηγής. Με αυτόν τον τρόπο, οι εταιρείες μπορούν από + ένα μόνο μοντέλο διαχείρισης δεδομένων να οργανώσουν και να επεξεργαστούν διασκορπισμένες πληροφορίες με γνώμονα τις ανάγκες των - χρηστών με μεγαλύτερη ευκολία και αποδοτικότητα. Τομείς οι οποίοι - επωφελούνται από την εικονικοποίηση δεδομένων είναι η λήψη αποφάσεων, η - επιχειρηματική αναλυτική και η αξιολόγηση των κινδύνων. + χρηστών με μεγαλύτερη ευκολία και αποδοτικότητα χωρίς την ανάγκη να + γνωρίζουν τεχνικές λεπτομέρειες (όπως γλώσσες πρόσβασης, δομές + αποθήκευσης κα.). Τομείς οι οποίοι επωφελούνται από την εικονικοποίηση + δεδομένων είναι η λήψη αποφάσεων, η επιχειρηματική αναλυτική και η + αξιολόγηση των κινδύνων. -\pagebreak +\clearpage - \item \textbf{\textlatin{Desktop Virtualization}}: + \item \textbf{Εικονικοποίηση Επιφάνειας Εργασίας}: \begin{center} + \begin{figure}[!ht] + \centering \includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_desktop_virtualization.png} - \captionof{figure}{\textlatin{Desktop Virtualization}} + \captionof{figure}{Εικονικοποίηση Επιφάνειας Εργασίας \cite{redhatVirtualization}} \label{fig:desktopVirtualization} + \end{figure} + \vspace*{-30pt} \end{center} - Επιτρέπει σε έναν κεντρικό διαχειριστή να μοιράζει προσομοιωμένα - περιβάλλοντα εργασίας σε εκατοντάδες φυσικές μηχανές ταυτοχρόνως. Εν + Με την εικονικοποίηση επιφάνειας εργασίας, δίνεται σε έναν κεντρικό + διαχειριστή η ικανότητα διαμοιρασμού προσομοιωμένων περιβαλλόντων + εργασίας σε εκατοντάδες φυσικές μηχανές ή συσκευές ταυτοχρόνως. Εν αντιθέσει με τα παραδοσιακά περιβάλλοντα εργασίας που χρήζουν εγκατάστασης, διαμόρφωσης και ενημέρωσης σε κάθε υπολογιστή, η εικονικοποίηση επιφάνειας εργασίας καθιστά δυνατή τη μαζική διαμόρφωση, - ενημέρωση και έλεγχο ασφαλείας σε όλα τα εικονικά περιβάλλοντα - εργασίας. + ενημέρωση και έλεγχο ασφαλείας σε όλα τα εικονικά περιβάλλοντα εργασίας + που παρέχονται από έναν μόνο διακομιστή. Καθ' αυτόν τον τρόπο, οι + επιχειρήσεις επιτρέπουν στους χρήστες να μπορούν να εργαστούν από + οπουδήποτε και με κάθε συσκευή ανεξαρτήτως του είδους ή του + λειτουργικού συστήματος τους \footfullcite{desktopVirtualization}. - \item \textbf{\textlatin{Server Virtualization}}: +\clearpage + + \item \textbf{Εικονικοποίηση Διακομιστών}: \begin{center} + \begin{figure}[!ht] + \centering \includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_server_virtualization.png} - \captionof{figure}{\textlatin{Server Virtualization}} + \captionof{figure}{Εικονικοποίηση Διακομιστών \cite{redhatVirtualization}} \label{fig:serverVirtualization} + \end{figure} + \vspace*{-30pt} \end{center} Οι διακομιστές είναι υπολογιστές σχεδιασμένοι με σκοπό να - επεξεργάζονται πολύ καλά έναν μεγάλο όγκο συγκεκριμένων εργασιών, ώστε - οι κύριοι υπολογιστές να μπορούν να δίνουν προτεραιότητα σε άλλες - εργασίες. Η εικονικοποίηση ενός διακομιστή του επιτρέπει να εκτελεί - περισσότερες λειτουργίες από αυτές που σχεδιάστηκε αρχικά να - πραγματοποιεί. Για την επίτευξη αυτού απαιτείται η κατάτμησή του με - τέτοιο τρόπο ώστε οι πόροι του να μπορούν να χρησιμοποιηθούν για την - εξυπηρέτηση πολλαπλών λειτουργιών. + επεξεργάζονται πολύ καλά έναν μεγάλο όγκο συγκεκριμένων διεργασιών, + ώστε οι κύριοι υπολογιστές μιας επιχείρησης να μπορούν να δίνουν + προτεραιότητα σε άλλες εργασίες. Με την εικονικοποίηση διακομιστών + αναφερόμαστε στην διαδικασία κατά την οποία ένας φυσικός διακομιστής + χωρίζεται σε πολλούς μικρότερους εικονικούς διακομιστές, με απώτερο + σκοπό την αποτελεσματικότερη αξιοποίηση των πόρων του. Αυτό είναι + απαραίτητο διότι προτιμάται για λόγους ευκολίας της διαχείρισης τους, + κάθε διακομιστής να είναι υπεύθυνος για μια μόνο διεργασία την φορά. + Μετά την κατάτμησή του, ενώ μπορεί να ακολουθείται η ίδια πρακτική, + παύει το φυσικό μηχάνημα να μένει με αχρησιμοποίητους πόρους και + πρακτικά μπορεί το σύνολο τον πόρων του να χρησιμοποιηθεί για την + εξυπηρέτηση πολλαπλών λειτουργιών. Ο ορισμός της εικονικοποίησης + διακομιστών αναλύθηκε πιο λεπτομερώς και στο + \ref{virtualizationDefinition}. -\pagebreak +\clearpage - \item \textbf{\textlatin{Operating System Virtualization}}: + \item \textbf{Εικονικοποίηση Λειτουργικού Συστήματος}: \begin{center} + \begin{figure}[!ht] + \centering \includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_os_virtualization.png} - \captionof{figure}{\textlatin{Operating System Virtualization}} + \captionof{figure}{Εικονικοποίηση Λειτουργικού Συστήματος \cite{redhatVirtualization}} \label{fig:operatingSystemVirtualization} + \end{figure} + \vspace*{-30pt} \end{center} Η εικονικοποίηση λειτουργικού συστήματος είναι κάτι που συμβαίνει στον - πυρήνα. Αποτελεί έναν χρήσιμο τρόπο εκτέλεσης \textlatin{Linux} και - \textlatin{Windows} συστημάτων στο ίδιο μηχάνημα. Πολλές επιχειρήσεις - προωθούν τα εικονικά λειτουργικά συστήματα σε υπολογιστές, προκειμένου - να μειωθεί το κόστος μηχανημάτων, να αυξηθεί η ασφάλεια και να μειωθεί - ο χρόνος συντήρησης τους. + πυρήνα. Αποτελεί υποκατηγορία της εικονικοποίησης διακομιστών και + πραγματοποιείται σε επίπεδο λειτουργικού συστήματος. Ουσιαστικά + αναφερόμαστε στην διαδικασία της δοχειοποίησης και συγκεκριμένα, την + δοχειοποίηση λειτουργικών συστημάτων. Κατά την χρήση της, μπορούν να + εκτελεστούν ταυτοχρόνως πολλαπλά λειτουργικά συστήματα μέσα σε + απομονωμένα εικονικά περιβάλλοντα, όπου το κάθε ένα από αυτά μοιράζεται + τον ίδιο πυρήνα με το λειτουργικό σύστημα φιλοξενίας. Μεγαλύτερη + ανάλυση της εικονικοποίησης σε επίπεδο λειτουργικού συστήματος + πραγματοποιήθηκε στο \ref{osVirtualization}. -\pagebreak +\clearpage - \item \textbf{\textlatin{Network Function Virtualization}}: + \item \textbf{Εικονικοποίηση Λειτουργιών Δικτύου}: \begin{center} + \begin{figure}[!ht] + \centering \includegraphics[width = .5\textwidth]{Figures/RedHat_Virtualization/redhat_network_function_virtualization.png} - \captionof{figure}{\textlatin{Network Function Virtualization}} + \captionof{figure}{Εικονικοποίηση Λειτουργιών Δικτύου \cite{redhatVirtualization}} \label{fig:networkFunctionVirtualization} + \end{figure} + \vspace*{-30pt} \end{center} - Η εικονικοποίηση λειτουργιών δικτύου (\textlatin{NFV}) διαχωρίζει τις - βασικές λειτουργίες ενός δικτύου (όπως ο διαμοιρασμός αρχείων, και η - διαμόρφωση \textlatin{IP}), ώστε να μπορούν να διανεμηθούν σε διάφορα - περιβάλλοντα. Από τη στιγμή που οι λειτουργίες λογισμικού είναι - ανεξάρτητες από τα φυσικά μηχανήματα στα οποία εκτελούνται, - συγκεκριμένες λειτουργίες μπορούν να πακεταριστούν μαζί σε ένα νέο - δίκτυο και να ανατεθούν σε ένα ξεχωριστό περιβάλλον. Η εικονικοποίηση - των δικτύων μειώνει τον αριθμό των φυσικών εξαρτημάτων όπως οι - μεταγωγείς, δρομολογητές, διακομιστές, καλώδια και κόμβοι που + Η εικονικοποίηση λειτουργιών δικτύου (Network Functions Virtualization + - NFV) διαχωρίζει τις βασικές λειτουργίες ενός δικτύου (όπως ο + διαμοιρασμός αρχείων, και η διαμόρφωση IP), ώστε να μπορούν να + διανεμηθούν σε διάφορα περιβάλλοντα. Από τη στιγμή που οι λειτουργίες + λογισμικού είναι ανεξάρτητες από τα φυσικά μηχανήματα στα οποία + εκτελούνται, συγκεκριμένες λειτουργίες μπορούν να πακεταριστούν μαζί σε + ένα νέο δίκτυο και να ανατεθούν σε ένα ξεχωριστό περιβάλλον. Η + εικονικοποίηση των δικτύων μειώνει τον αριθμό των φυσικών εξαρτημάτων, + όπως οι μεταγωγείς, δρομολογητές, διακομιστές, καλώδια και κόμβοι, που απαιτούνται για τη δημιουργία πολλαπλών, ανεξάρτητων δικτύων και είναι - ιδιαίτερα δημοφιλής στον κλάδο των τηλεπικοινωνιών. + ιδιαίτερα δημοφιλής στον κλάδο των τηλεπικοινωνιών. Παραδοσιακά, οι + λειτουργίες δικτύου εκτελούνταν σε ιδιόκτητο υλικό συγκεκριμένου σκοπού + και επομένως ήταν απαραίτητο να πραγματοποιηθεί αγορά, ρύθμιση και + συντήρηση του κάθε φυσικού εξαρτήματος. Με την αύξηση όμως της + δημοτικότητας των τεχνολογιών εικονικοποίησης, άρχισε να γίνεται πιο + δημοφιλής και η πρακτική πακεταρίσματος των λειτουργιών των εξαρτημάτων + αυτών σε διακομιστές κοινής χρήσης (commodity servers). Το αποτέλεσμα + αυτού, ήταν η απόκτηση της δυνατότητας εκτέλεσης των λειτουργιών + δικτύου μιας επιχείρησης σε τυπικούς διακομιστές γενικού σκοπού και + κατά προέκταση, η αντικατάσταση κάθε ξεχωριστού φυσικού μηχανήματος με + ένα αντίστοιχο εικονικό εκτελούμενο μέσα από μια εικονική μηχανή + \footfullcite{redhatNFV}. + +\clearpage + + \item \textbf{Εικονικοποίηση Μνήμης}: + + \begin{center} + \begin{figure}[!ht] + \centering + \includegraphics[width = .5\textwidth]{Figures/VMWARE_Virtualization/vmware_memory_virtualization.png} + \captionof{figure}{Εικονικοποίηση Μνήμης \cite{vmwareMemoryVirtualization}} + \label{fig:memoryVirtualization} + \end{figure} + \vspace*{-30pt} + \end{center} + + Η εικονικοποίηση μνήμης αποτελεί ένα κομμάτι της ευρύτερης έννοιας της + εικονικοποίησης πόρων \footfullcite{hostitsmartMemoryVirtualization}. + Συγκεκριμένα, είναι μια τεχνική κατά την οποία δύναται να + διαχειριστούμε με έναν πιο αποδοτικό τρόπο την φυσική μνήμη (RAM) που + χρησιμοποιείται στα υπολογιστικά μας συστήματα. Αυτό συμβαίνει διότι + στην βασικότερη μορφή της, η εικονικοποίηση μνήμης εμφανίζεται ως + εικονική μνήμη ή όπως η μνήμη swap σε διακομιστές και σταθμούς εργασίας + \footfullcite{petriMemoryVirtualization}. Δηλαδή, ως επιπρόσθετη μνήμη + την οποία το σύστημα εκλαμβάνει ως πραγματική και μπορεί να την + χρησιμοποιήσει προτού αναγκαστεί να τερματίσει διεργασίες για να + απελευθερώσει κομμάτι της μνήμης. Για να επιτευχθεί αυτό, μέσω του + υπερ-επόπτη πραγματοποιείται αντιστοίχιση σελίδων φυσικής μνήμης του + φιλοξενούμενου λειτουργικού συστήματος στις σελίδες φυσικής μνήμης της + υποκείμενης μηχανής. Καθ' αυτόν τον τρόπο, κάθε εικονική μηχανή βλέπει + έναν συνεχόμενο χώρο διευθύνσεων μνήμης που δύναται να χρησιμοποιήσει + \footfullcite{vmwareMemoryVirtualization}. Ως αποτέλεσμα, επιτυγχάνεται + εν γένει υψηλότερη αξιοποίηση της μνήμης και η δυνατότητα διαμοιρασμού + μιας κοινής δεξαμενής μνήμης ακόμα και σε κατανεμημένα συστήματα, + παρακάμπτοντας τους περιορισμούς της φυσικής μνήμης + \footfullcite{codingninjasMemoryVirtualization}. + +\clearpage + + \item \textbf{Εικονικοποίηση Αποθήκευσης}: + + \begin{center} + \begin{figure}[!ht] + \centering + \includegraphics[width = .4\textwidth]{Figures/UnixArena_Virtualization/unixarena_storage_virtualization.png} + \captionof{figure}{Εικονικοποίηση Αποθήκευσης \cite{unixarenaVirtualization}} + \label{fig:storageVirtualization} + \end{figure} + \vspace*{-30pt} + \end{center} + + Ένα ακόμα κομμάτι της ευρύτερης έννοιας της εικονικοποίησης πόρων είναι + και η εικονικοποίηση αποθήκευσης. Συγκεκριμένα, ο όρος εικονικοποίηση + αποθήκευσης αναφέρεται στην πρακτική της συγκέντρωσης φυσικού + αποθηκευτικού χώρου από πολλαπλές συσκευές αποθήκευσης σε μια + φαινομενικά ενιαία, εικονική συσκευή + \footfullcite{ubackupStorageVirtualization}. Παρομοίως με την + εικονικοποίηση μνήμης, αυτό είναι κάτι που θα επιτρέψει την υψηλότερη + αξιοποίηση δίσκου, θα επιφέρει μεγαλύτερη ευελιξία στον τομέα της + αποθήκευσης και επιπλέον, θα αποτελέσει ένα πιο διαχειρίσιμο μοντέλο + χώρου αποθήκευσης σε σχέση με το παραδοσιακό, όπου κάθε υπολογιστής + έχει πρόσβαση μονάχα στον δικό του δίσκο. + + Προκειμένου να γίνει πράξη, απαιτείται αναλόγως την μέθοδο + εικονικοποίησης και τον τύπος της, είτε να χρησιμοποιηθεί ένας + αλγόριθμος για να εντοπίσει δυναμικά τα δεδομένα είτε να δημιουργηθεί + ένας χάρτης αντιστοίχισης τους χρησιμοποιώντας μεταδεδομένα + \footfullcite{cloudinfraStorageVirtualization}. Αφότου γίνει αυτό, τα + δεδομένα πλέον αποθηκεύονται σε ένα αρχείο και οι συστοιχίες δίσκων + τοποθετούνται μέσα σε μια εικονική δεξαμενή. Έπειτα, κάθε αίτημα + ανάγνωσης και εγγραφής από τις εφαρμογές φιλτράρεται και δύναται έμμεσα + μέσω των αντιστοιχιών η δυνατότητα εύρεσης και αποθήκευσης δεδομένων. + +\clearpage + + \item \textbf{Εικονικοποίηση Εφαρμογών}: + + \begin{center} + \begin{figure}[!ht] + \centering + \includegraphics[width = .5\textwidth]{Figures/TutorialsPoint_Virtualization/tutorialspoint_application_virtualization.jpg} + \captionof{figure}{Εικονικοποίηση Εφαρμογών \cite{tutorialsPointVirtualization}} + \label{fig:applicationVirtualization} + \end{figure} + \vspace*{-30pt} + \end{center} + + Όπως και η εικονικοποίηση λειτουργικού συστήματος, έτσι και η + εικονικοποίηση εφαρμογών αποτελεί υποκατηγορία της εικονικοποίησης + διακομιστών και υπάγεται στην διαδικασία της δοχειοποίησης. Το + επιθυμητό αποτέλεσμα της εικονικοποίησης εφαρμογών είναι ο διαχωρισμός + των βιβλιοθηκών και εξαρτήσεων τους από το περιβάλλον στο οποίο + εκτελούνται μέσω της δημιουργίας δοχείων. Στα δοχεία αυτά, + εικονικοποιούνται οι απαραίτητοι υπολογιστικοί πόροι όπως το + λειτουργικό σύστημα, η μνήμη και η κεντρική μονάδα επεξεργασίας + \footfullcite{geeksforgeeksApplicationVirtualization} κάνοντας χρήση + των διαθέσιμων μηχανισμών απομόνωσης του πυρήνα του λειτουργικού + συστήματος. Περισσότερες λεπτομέρειες για τον τρόπο κατά τον οποίο + επιτυγχάνεται αυτό, παρουσιάζονται στο \ref{osVirtualization}. \end{itemize} -\pagebreak +\clearpage -\section{Πλεονεκτήματα της εικονικοποίησης} \label{virtualizationAdvantages} +\subsection{Πλεονεκτήματα της εικονικοποίησης} \label{virtualizationAdvantages} Η εικονικοποίηση προσφέρει πολλά πλεονεκτήματα στις επιχειρήσεις. Τα πιο -αξιοσημείωτα αυτών με βάση την -\textlatin{\citeauthor{ibmVirtualizationDefinition}} είναι τα εξής: +αξιοσημείωτα αυτών με βάση την \citeauthor{ibmVirtualizationDefinition} +\footfullcite{ibmVirtualizationDefinition} είναι τα εξής: \begin{itemize} \item \textbf{Αποδοτικότητα πόρων}: - Προτού η εικονικοποίηση γίνει δημοφιλής, κάθε διακομιστής εφαρμογής - απαιτούσε τη δική του αποκλειστική μονάδα κεντρικής επεξεργασίας. Το - προσωπικό της επιχείρησης έπρεπε να αγοράσει και να ρυθμίσει έναν - ξεχωριστό διακομιστή για κάθε εφαρμογή που έπρεπε να εκτελέσει. Η - προτιμώμενη αρχιτεκτονική για λόγους αξιοπιστίας ήταν να υπάρχει μια - εφαρμογή και ένα μόνο λειτουργικό σύστημα για κάθε υπολογιστή. Αυτό - είχε ως αποτέλεσμα την υποχρησιμοποίηση κάθε διακομιστή. Η λύση ήρθε με - τη μορφή της εικονικοποίησης διακομιστών η οποία επέτρεπε την εκτέλεση - πολλαπλών εφαρμογών σε έναν φυσικό υπολογιστή δίχως την ελάττωση της - αξιοπιστίας. + Η χρήση εικονικοποίησης συνεπάγεται με την μείωση του αριθμού των + φυσικών μηχανημάτων που απαιτούνται για την εκτέλεση των εφαρμογών. + Αυτό συμβαίνει διότι εφόσον ένας φυσικός διακομιστής μπορεί να + φιλοξενήσει πολλαπλές εικονικές μηχανές, αυτές με την σειρά τους + δύναται να αντικαταστήσουν άλλους φυσικούς διακομιστές που θα ήταν + απαραίτητοι για την εκτέλεση διαφορετικών λειτουργιών + \footfullcite{mediumVirtualization}. Με αυτόν τον τρόπο, εξοικονομείται + η ενέργεια που θα απαιτούσε η διάθεση των υπολογιστικών πόρων των + φυσικών μηχανημάτων που αποσύρθηκαν, ενώ ταυτόχρονα αξιοποιούνται σε + μεγαλύτερο βαθμό οι υπολογιστικοί πόροι του μηχανήματος που φιλοξενεί + τις εικονικές μηχανές. \item \textbf{Ευκολότερη διαχείριση}: Αντικαθιστώντας φυσικούς υπολογιστές με προγραμματιστικά καθορισμένες - εικονικές μηχανές δύναται η χρήση αυτοματοποιημένων ροών διαχείρισης + εικονικές μηχανές δύναται η χρήση αυτοματοποιημένων ροών διαχειριστικών εργασιών. Οι διαχειριστές συστημάτων μπορούν να χρησιμοποιούν εργαλεία για τον καθορισμό εικονικών μηχανών χρησιμοποιώντας πρότυπα κατάλληλα - για την υποδομή κάθε επιχείρησης. Με αυτόν τον τρόπο η εγκατάσταση και - η ρύθμισή τους μπορεί να γίνεται επανειλημμένα δίχως το ρίσκο - ανθρώπινου λάθους και γλιτώνοντας τον χρόνο εγκατάστασης και ρύθμισης - τους χειροκίνητα. Ένας συνδυασμός εργαλείων που κάνει αυτή τη - διαδικασία πραγματικότητα είναι τα \textlatin{Ansible} \cite{ansible} - και \textlatin{Terraform} \cite{terraform}. + για την υποδομή κάθε επιχείρησης. Με αυτόν τον τρόπο, η εγκατάσταση και + η ρύθμισή τους μπορεί να γίνεται επανειλημμένα με αυτοματοποιημένο + τρόπο δίχως το ρίσκο ανθρώπινου λάθους και γλιτώνοντας τον χρόνο + εγκατάστασης και ρύθμισης τους χειροκίνητα. Ένας συνδυασμός εργαλείων + που κάνει αυτή τη διαδικασία πραγματικότητα είναι τα Ansible + \footfullcite{ansible} και Terraform \footfullcite{terraform}. \item \textbf{Ελάχιστος χρόνος διακοπής λειτουργίας}: Οι καταρρεύσεις λειτουργικών συστημάτων και εφαρμογών μπορεί να προκαλέσουν διακοπή λειτουργίας και να διαταράξουν την παραγωγικότητα - των χρηστών. Οι διαχειριστές μπορεί να έχουν πλεονάζουσες εικονικές - μηχανές και να πραγματοποιούν εναλλαγή σε αυτές εάν εμφανιστούν - προβλήματα, κάτι που δε θα ήταν αποδοτικό για την επιχείρηση - διαθέτοντας μονάχα φυσικούς διακομιστές. + των χρηστών. Οι διαχειριστές έχουν την δυνατότητα εκτέλεσης + πλεοναζουσών εικονικών μηχανών, με σκοπό την ταχεία εναλλαγή σε αυτές + στην περίπτωση που προκύψουν προβλήματα στις αρχικές. Κάτι τέτοιο, δε + θα ήταν αποδοτικό για την επιχείρηση διαθέτοντας αποκλειστικά μη + εικονικοποιημένα φυσικά μηχανήματα. \item \textbf{Ταχύτερη παροχή}: Η αγορά, εγκατάσταση και διαμόρφωση του υλικού για κάθε εφαρμογή είναι - χρονοβόρα. Εφόσον το υλικό είναι ήδη στη θέση του, η παροχή εικονικών - μηχανών για την εκτέλεση όλων των εφαρμογών είναι σημαντικά ταχύτερη. + χρονοβόρα. Εφόσον το υλικό είναι ήδη στη θέση του και μπορεί να + εντοπίζεται και απομακρυσμένα (όπως στην περίπτωση περιβαλλόντων + νέφους), η παροχή εικονικών μηχανών για την εγκατάσταση και εκτέλεση + όλων των εφαρμογών είναι σημαντικά ταχύτερη. \end{itemize} -\section{Τεχνολογίες εικονικοποίησης} \label{virtualizationTechnologies} +\subsection{Παρα-εικονικοποίηση} \label{paraVirtualization} Όταν αναφερόμαστε στην εικονικοποίηση συνήθως μιλάμε για την πιο συνηθισμένη -μορφή της η οποία είναι η πλήρης εικονικοποίηση. Με την πάροδο του χρόνου και -την αύξηση της δημοτικότητας της εικονικοποίησης αναπτύχθηκαν πολλοί -\textlatin{hypervisors} που μπορεί να διαφέρουν όχι μόνο στα χαρακτηριστικά -τους αλλά και στις διάφορες τεχνικές που χρησιμοποιούν για να κάνουν την -εικονικοποίηση πραγματικότητα. Μια από αυτές ονομάζεται -\textlatin{para-virtualization} \cite{suseParavirtualizationDefinition}. +μορφή της, η οποία είναι η πλήρης εικονικοποίηση. Με την πάροδο του χρόνου και +την αύξηση της δημοτικότητας της εικονικοποίησης, αναπτύχθηκαν πολλοί +υπερ-επόπτες που μπορεί να διαφέρουν όχι μόνο στα χαρακτηριστικά τους αλλά και +στις διάφορες τεχνικές που χρησιμοποιούν για να κάνουν την εικονικοποίηση +πραγματικότητα. Μια από αυτές ονομάζεται παρα-εικονικοποίηση +(para-virtualization) \footfullcite{suseParavirtualizationDefinition}. -\subsection{\textlatin{Para-virtualization}} \label{paraVirtualization} +Κάθε εικονική μηχανή απαιτεί ένα συγκεκριμένο ποσοστό χρήσης υπολογιστικών +πόρων του φυσικού διακομιστή για να εκτελείται. Μέσα σε αυτό το ποσοστό, +συμπεριλαμβάνεται και η επιβάρυνση που εισάγει η συνεχής μετάφραση εικονικών σε +φυσικούς πόρους. Έχοντας υπόψιν πως κάθε φυσικός διακομιστής διαθέτει +πεπερασμένους πόρους, με την πλήρη εικονικοποίηση επιβάλλεται ένα όριο στον +αριθμό των εικονικών μηχανών που μπορεί αυτός να υποστηρίξει. Επιπροσθέτως, +προκύπτουν και προβλήματα καθυστέρησης αφού η διαδικασία της μετάφρασης απαιτεί +κάποιο χρόνο για να διεκπεραιωθεί. Επομένως, η πλήρης εικονικοποίηση περιορίζει +σημαντικά τον αριθμό των εικονικών μηχανών που δύναται ένας διακομιστής να +εκτελέσει παράλληλα, όπως επίσης και τα είδη εφαρμογών που μπορούν να +εκτελεστούν σε μια εικονική μηχανή (εφόσον η ταχύτητα εκτέλεσης τους παίζει +σημαντικό ρόλο στην ευχρηστία τους). Μερικοί τομείς που επωφελούνται από την +παρα-εικονικοποίηση είναι η χρήση λογισμικών που επιτρέπουν την ανάκαμψη από +καταστροφές, την μετανάστευση δεδομένων μεταξύ λειτουργικών συστημάτων +\footfullcite{insightsForProfessionalsParavirtualization} ή ακόμα και λογισμικά +ενσωματωμένων συστημάτων αυτοκινήτων +\footfullcite{blackberryParavirtualization}. -Η \textlatin{para-virtualization} είναι μια τεχνική εικονικοποίησης που -αναπτύχθηκε προκειμένου να ξεπεραστούν ορισμένα προβλήματα επιδόσεων που -εισάγει η πλήρης εικονικοποίηση λόγω της συνεχούς μετάφρασης φυσικών και -εικονικών πόρων. Εξαιτίας αυτού, περιορίζεται σημαντικά ο αριθμός εικονικών -μηχανών που μπορεί να υποστηρίξει ένας διακομιστής και τα είδη εφαρμογών που -μπορούν να εκτελεστούν σε μια εικονική μηχανή. Πρόκειται για μια κατηγορία -εικονικοποίησης της κεντρικής μονάδας επεξεργασίας -\cite{geeksforgeeksParavirtualizationDefinition} κατά την οποία, δύναται το -λειτουργικό σύστημα να επικοινωνεί άμεσα με τον \textlatin{hypervisor} με σκοπό -τη διεξαγωγή δραστηριοτήτων που θα ήταν χρονοβόρες για τον διαχειριστή -εικονικών μηχανών, κάνοντας χρήση ειδικών εντολών ονόματι -\textlatin{hypercalls} για τη διαχείριση αιτημάτων κατά τον χρόνο εκτέλεσης. -Προκειμένου να επιτευχθεί αυτό, τα λειτουργικά συστήματα χρειάζονται μια μικρή -τροποποίηση η οποία επιτρέπει την υλοποίηση ενός ειδικού \textlatin{API} μέσω -του οποίου θα πραγματοποιείται η ανταλλαγή \textlatin{hypercall} ανάμεσα σε -αυτά και τον \textlatin{hypervisor}. Οι \textlatin{hypervisors} που το -υποστηρίζουν αυτό απαιτούν την υποστήριξη του λειτουργικού συστήματος και τη -χρήση ειδικών προγραμμάτων οδήγησης τα οποία είναι πλέον ενσωματωμένα στον -πυρήνα του \textlatin{Linux}. Κάνοντας χρήση της τεχνικής αυτής, το λειτουργικό -σύστημα της εικονικής μηχανής δεν είναι πλήρως απομονωμένο αλλά απομονώνεται -μερικώς από το υλικό και το επίπεδο εικονικοποίησης. +\clearpage -\pagebreak +Η παρα-εικονικοποίηση είναι μια τεχνική εικονικοποίησης που αναπτύχθηκε +προκειμένου να ξεπεραστούν τα προαναφερόμενα προβλήματα επιδόσεων που έρχονται +με την χρήση της πλήρους εικονικοποίησης. Κατά την χρήση της, το φιλοξενούμενο +λειτουργικό σύστημα δεν είναι πλήρως απομονωμένο από το υλικό αλλά απομονώνεται +μερικώς \footfullcite{serverWatchParavirtualization} και έχει άμεση επικοινωνία +με αυτό. Υπάρχει δηλαδή επίγνωση της εικονικοποίησης από μεριάς του ΛΣ των +εικονικών μηχανών και αξιοποίηση της, μέσω της χρήσης υπερ-κλήσεων προς τον +υπερ-επόπτη. Οι κλήσεις αυτές, επιτρέπουν σε κάθε ΛΣ να ζητάει πόρους κατά +παραγγελία και να αναθέτει την εκτέλεση διεργασιών του απευθείας στο υλικό. Για +να μπορέσει να επιτευχθεί αυτό, απαιτείται η τροποποίηση του φιλοξενούμενου +λειτουργικού συστήματος, η οποία θα του επιτρέπει την υλοποίηση ενός ειδικού +API, ώστε να μπορεί να κάνει χρήση των υπερ-κλήσεων +\footfullcite{servermaniaParavirtualization}, ενώ επιβάλλεται να υποστηρίζεται +και από τον υπερ-επόπτη η κατανόηση τους. + +Παρ' όλα τα πλεονεκτήματα που παρέχει η χρήση της παρα-εικονικοποίησης, +υπάρχουν και μερικά ζητήματα που πρέπει να ληφθούν υπόψιν. Εξαιτίας της ανάγκης +τροποποίησης του λειτουργικού συστήματος των φιλοξενούμενων λειτουργικών +συστημάτων, αυτά καθίστανται λιγότερο φορητά σε σχέση με την πλήρη +εικονικοποίηση, αφού τροποποιούνται για την υποστήριξη συγκεκριμένου υλικού +αντί ενός υπερ-επόπτη \footfullcite{blackberryParavirtualization}. Ταυτοχρόνως, +η στενή εξάρτηση μεταξύ του υπερ-επόπτη και των φιλοξενούμενων ΛΣ μπορεί να +διακοπεί από τις ενημερώσεις του λειτουργικού συστήματος +\footfullcite{insightsForProfessionalsParavirtualization}, κάνοντας την +παρα-εικονικοποίηση λιγότερο αξιόπιστη. + +\clearpage Στην εικόνα \ref{fig:FullVirtualization} \cite{geeksforgeeksParavirtualizationDefinition} παρουσιάζεται η αρχιτεκτονική -της πλήρους εικονικοποίησης όπου το λειτουργικό σύστημα της εικονικής μηχανής -επιβάλλεται να περάσει τα αιτήματα του μέσω του διαχειριστή εικονικών μηχανών. +της πλήρους εικονικοποίησης όπου το φιλοξενούμενο λειτουργικό σύστημα (της +εικονικής μηχανής) επιβάλλεται να περάσει τα αιτήματα του (πρόσβασης πόρων) +μέσω του υπερ-επόπτη. \begin{center} +\begin{figure}[!ht] +\centering \includegraphics[width = .5\textwidth]{Figures/GeeksForGeeksParavirtualization/Full-Virualization.png} - \captionof{figure}{\textlatin{Full Virtualization}} + \captionof{figure}{Πλήρης εικονικοποίηση \cite{geeksforgeeksParavirtualizationDefinition}} \label{fig:FullVirtualization} +\end{figure} +\vspace*{-30pt} \end{center} Αντιθέτως, στην εικόνα \ref{fig:ParaVirtualization} όπου και απεικονίζεται η -αρχιτεκτονική της τεχνικής \textlatin{para-virtualization}, βλέπουμε πως μέσω -των \textlatin{hypercall} όλα τα αιτήματα προορίζονται στη στρώση -εικονικοποίησης και από εκεί στο κύριο σύστημα. +αρχιτεκτονική της παρα-εικονικοποίησης, βλέπουμε πως μέσω των υπερ-κλήσεων, όλα +τα αιτήματα προορίζονται στη στρώση εικονικοποίησης και από εκεί στο κύριο +σύστημα (χωρίς την ανάγκη κάποιας επεξεργασίας ή μετάφρασης). \begin{center} +\begin{figure}[!ht] +\centering \includegraphics[width = .5\textwidth]{Figures/GeeksForGeeksParavirtualization/Paravirtualization.png} - \captionof{figure}{\textlatin{Para Virtualization}} + \captionof{figure}{Παρα-εικονικοποίηση \cite{geeksforgeeksParavirtualizationDefinition}} \label{fig:ParaVirtualization} +\end{figure} +\vspace*{-30pt} \end{center} -\pagebreak +\clearpage -Οι διαφορές της πλήρους εικονικοποίησης με την \textlatin{para-virtualization} -με βάση την δημοσίευση της -\textlatin{\citeauthor{geeksforgeeksParavirtualizationDefinition}} είναι οι -εξής: +Οι διαφορές της πλήρους εικονικοποίησης με την παρα-εικονικοποίηση με βάση τον +οργανισμό \citeauthor{geeksforgeeksParavirtualizationDefinition} +\footfullcite{geeksforgeeksParavirtualizationDefinition} είναι οι εξής: -\begin{table}[h!] +\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{6cm}} -\begin{tabular}{||c|C|C||} +\textgreek{\begin{tabular}{||c|C|C||} \hline -Νούμερο & Πλήρης εικονικοποίηση & \textlatin{Paravirtualization} \\ [0.5ex] +Νούμερο & Πλήρης εικονικοποίηση & Παρα-εικονικοποίηση \\ [0.5ex] \hline\hline @@ -667,7 +997,7 @@ Πλήρης απομόνωση της εικονικής μηχανής. & -Μερική απομόνωση και χρήση \textlatin{API} για αμεσότερη επικοινωνία. \\ +Μερική απομόνωση και χρήση API για αμεσότερη επικοινωνία. \\ \hline @@ -675,23 +1005,28 @@ Λιγότερο ασφαλής. & -Υπάρχει επίγνωση του εικονικού περιβάλλοντος και δε γίνεται εκκίνηση του -\textlatin{BIOS} \cite{ParavirtualizationSecurity}, πράγμα που την καθιστά -ασφαλέστερη. \\ +Υπάρχει επίγνωση του εικονικού περιβάλλοντος και δε γίνεται εκκίνηση του BIOS +\footfullcite{ParavirtualizationSecurity}, πράγμα που την καθιστά ασφαλέστερη. +\\ \hline 3 & -Χρήση δυαδικής μετάφρασης. & +Χρήση δυαδικής μετάφρασης.\footnote{\textgreek{Αυτό ισχύει στην περίπτωση +εικονικοποίησης υποβοηθούμενη από το λογισμικό.}} & -Χρήση \textlatin{hypercall} κατά την εκτέλεση. \\ +Χρήση υπερ-κλήσεων κατά την εκτέλεση. \\ \hline 4 & -Πιο αργές ταχύτητες. & +Πιο αργές ταχύτητες +\footfullcite{ParavirtualizationVmware}\footnote{\textgreek{Με βάση την VMware, +η απόδοση της παρα-εικονικοποίησης είναι καλύτερη υπό ορισμένες περιπτώσεις, +ενώ η πλήρης εικονικοποίηση με χρήση δυαδικής μετάφρασης παρέχει καλύτερη +απόδοση από την πρώτη γενιά εικονικοποίησης υποβοηθούμενη από το υλικό.}}. & Γρηγορότερη εκτέλεση. \\ @@ -699,7 +1034,7 @@ 5 & -Μεγαλύτερη συμβατότητα και φορητότητα. & +Μεγαλύτερη συμβατότητα και μεταφερσιμότητα. & Λόγω της αρχιτεκτονικής της είναι δυσκολότερη η μεταφορά εικονικών μηχανών. \\ @@ -709,525 +1044,807 @@ Υποστήριξη όλων των συστημάτων χωρίς την απαίτηση τροποποιήσεων. & -Απαιτείται τροποποίηση του λειτουργικού συστήματος της εικονικής μηχανής για να -κάνει χρήση \textlatin{hypercalls}. \\ +Απαιτείται τροποποίηση του φιλοξενούμενου λειτουργικού συστήματος για να κάνει +χρήση υπερ-κλήσεων. \\ \hline -\end{tabular} -\caption{Διαφορές πλήρους εικονικοποίησης και παρα-εικονικοποίησης} -\label{table:virtualizationTechniquesDifference} +\end{tabular}} +\label{table:virtualizationTypesDifferences} \renewcommand{\arraystretch}{1} \end{table} +\end{savenotes} + +\clearpage \section{Ασφάλεια στην εικονικοποίηση} \label{virtualizationSecurity} -Η χρήση της εικονικοποίησης παρέχει αρκετά εγγενή οφέλη ασφαλείας. Ένα -σημαντικό αυτών είναι η ικανότητα επαναφοράς εικονικών μηχανών που έχουν -μολυνθεί με κακόβουλο λογισμικό σε μια χρονική περίοδο πριν τη μόλυνση τους και -η δυνατότητα διαγραφής και αναδημιουργίας τους με έναν αυτοματοποιημένο τρόπο -σε περίπτωση που η επαναφορά για οποιονδήποτε λόγο δεν είναι εφικτή. Κάτι το -οποίο είναι αρκετές φορές αδύνατο να συμβεί με ένα φυσικό μηχάνημα διότι το -κακόβουλο λογισμικό συχνά μπορεί να είναι βαθιά ριζωμένο στα βασικά συστατικά -του συστήματος. +Η χρήση της εικονικοποίησης παρέχει αρκετά εγγενή οφέλη ασφαλείας με την μορφή +μέτρων ανάκαμψης από επιθέσεις. Ένα σημαντικό αυτών, είναι η ικανότητα +επαναφοράς εικονικών μηχανών που έχουν μολυνθεί με κακόβουλο λογισμικό σε μια +χρονική περίοδο πριν τη μόλυνση τους. Αυτό επιτυγχάνεται μέσω της δυνατότητας +δημιουργίας στιγμιοτύπων εικονικών μηχανών \footfullcite{vmSnapshots}, η οποία +παρέχεται από τον υπερ-επόπτη. Επιπρόσθετα, μπορεί εύκολα να πραγματοποιηθεί +διαγραφή και αναδημιουργία τους με έναν αυτοματοποιημένο τρόπο, σε περίπτωση +που η επαναφορά σε προηγούμενη χρονική περίοδο για οποιονδήποτε λόγο δεν είναι +εφικτή. Αυτή η λύση μπορεί να εφαρμοστεί χωρίς αρνητικές επιπτώσεις εάν τα +δεδομένα της εικονικής μηχανής είτε δεν μας ενδιαφέρουν, είτε βρίσκονται σε +διαφορετική τοποθεσία επειδή γίνεται χρήση εικονικοποίησης αποθήκευσης, είτε +υπάρχουν αντίγραφα ασφαλείας τους. Αυτές οι λειτουργίες είναι αρκετές φορές +αδύνατο να εφαρμοστούν σε ένα φυσικό μηχάνημα διότι το κακόβουλο λογισμικό +συχνά μπορεί να είναι βαθιά ριζωμένο στα βασικά συστατικά του συστήματος +\footfullcite{ibmVirtualizationDefinition}. Επιπλέον, ακόμα και αν το κακόβουλο +λογισμικό ήταν σε θέση να εξαφανιστεί με μια επαναφορά, κάτι τέτοιο θα +χρειαζόταν σημαντικά περισσότερο χρόνο για να διεκπεραιωθεί σε ένα φυσικό +μηχάνημα συγκριτικά με μια εικονική μηχανή. -Παρ'' όλα αυτά η εικονικοποίηση δεν είναι απαλλαγμένη από κινδύνους καθώς -παραβιάζοντας τον \textlatin{hypervisor}, ένας επιτιθέμενος έχει πρόσβαση σε -όλες τις εικονικές μηχανές που διαχειρίζονται μέσω αυτού και είναι δυσκολότερο -να εντοπιστεί λόγω της ικανότητας του \textlatin{hypervisor} να επιτρέπει στις -εικονικές μηχανές τη μεταξύ τους επικοινωνία χωρίς την αλληλεπίδραση με το -φυσικό δίκτυο. Επιπροσθέτως, η ακεραιότητα ενός \textlatin{hypervisor} -εξαρτάται άμεσα και από τον τύπου του αφού στην κατηγορία \textlatin{hosted -hypervisor} αρκεί να παραβιαστεί το λειτουργικό σύστημα στο οποίο εκτελείται -\cite{ibmVirtualizationDefinition}. +Παρ' όλα αυτά, η εικονικοποίηση δεν είναι απαλλαγμένη από κινδύνους καθώς +παραβιάζοντας τον υπερ-επόπτη, ένας επιτιθέμενος έχει πρόσβαση σε όλες τις +εικονικές μηχανές που διαχειρίζονται μέσω αυτού. Επίσης, αυτό είναι δυσκολότερο +να εντοπιστεί λόγω της ικανότητας του υπερ-επόπτη να επιτρέπει στις εικονικές +μηχανές τη μεταξύ τους επικοινωνία χωρίς την αλληλεπίδραση με το φυσικό δίκτυο. +Τέλος, η ακεραιότητα του συστήματος εξαρτάται άμεσα και από τον τύπο του +υπερ-επόπτη. Αυτό συμβαίνει διότι για υπερ-επόπτες τύπου 2, υπάρχει πολλές +φορές η ανάγκη διαμοιρασμού δεδομένων μεταξύ των εικονικών μηχανών και του ΛΣ +φιλοξενίας. Επομένως, η παραβίαση ενός υπερ-επόπτη τύπου 2 μπορεί δυνητικά να +οδηγήσει στην εξάπλωση κακόβουλου λογισμικού και να κινδυνεύσει όλο το σύστημα +\footfullcite{techtargetHypervisorSecurity}. + +\clearpage \subsection{Απειλές στην εικονικοποίηση} \label{virtualizationThreats} Όλες οι μορφές εικονικοποίησης είναι ευάλωτες σε επιθέσεις. Όπως αναφέρεται και στο \cite{wen2008sevmm} μέσω του \cite{arif2015virtualization}, πολλές φορές δε -δύναται ο διαχειριστής εικονικών μηχανών, το λειτουργικό σύστημα ή ακόμα και το -\textlatin{Mandatory Access Control} του \textlatin{Linux} να ανταπεξέλθουν -στις απαιτήσεις ασφαλείας όλων των εφαρμογών. Το παράδειγμα που παρουσιάζεται -στο \cite{arif2015virtualization} αναφέρεται στην εικονικοποίηση χώρου -αποθήκευσης μέσω δικτύου αλλά πολλές από τις απειλές δεν περιορίζονται μονάχα -εκεί. Ουσιαστικά κάθε εικονική μηχανή που έχει πρόσβαση στο διαδίκτυο είναι -ευάλωτη σε απειλές όπως \textlatin{Trojans}, ιούς και κακόβουλα λογισμικά που -μπορεί να μεταφερθούν από έναν \textlatin{hypervisor} σε κάθε εικονική μηχανή. +δύναται ο υπερ-επόπτης, το λειτουργικό σύστημα ή ακόμα και η υπηρεσία ελέγχου +πρόσβασης (Mandatory Access Control) του Linux να ανταπεξέλθουν στις απαιτήσεις +ασφαλείας όλων των εφαρμογών. Το παράδειγμα που παρουσιάζεται στο +\cite{arif2015virtualization} αναφέρεται στην εικονικοποίηση χώρου αποθήκευσης +μέσω δικτύου αλλά πολλές από τις απειλές δεν περιορίζονται μονάχα εκεί. -Πολλές από τις απειλές που θα αναφερθούν παρακάτω μπορούν να συνοψιστούν και ως εξής: +Πολλές από τις απειλές που θα αναφερθούν παρακάτω +\ref{virtualizationThreatsCategorization}, μπορούν να κατηγοριοποιηθούν και ως +εξής: -\begin{table}[h!] +\begin{table}[!ht] +\caption{Πηγές απειλών στην εικονικοποίηση} \renewcommand{\arraystretch}{1.5} \centering \newcolumntype{C}{>{\centering\arraybackslash}m{6cm}} -\begin{tabular}{||C|C||} +\textgreek{\begin{tabular}{||C|C||} \hline Πηγή απειλής & Περιγραφή \\ [0.5ex] \hline\hline -\textlatin{NW $\Rightarrow$ VMM} & +Δίκτυο $\Rightarrow$ Υπερ-επόπτη & -Απειλές που προέρχονται από το δίκτυο και στοχεύουν τον \textlatin{hypervisor}. -\\ +Απειλές που προέρχονται από το δίκτυο και στοχεύουν τον υπερ-επόπτη. \\ \hline -\textlatin{NW $\Rightarrow$ VM} & +Δίκτυο $\Rightarrow$ Εικονική Μηχανή & -Απειλές που προέρχονται από το δίκτυο και στοχεύουν τις εικονικές μηχανές. \\ +Απειλές που προέρχονται από το δίκτυο και στοχεύουν εικονικές μηχανές. \\ \hline -\textlatin{VMM $\Rightarrow$ VM} & +Υπερ-επόπτη $\Rightarrow$ Εικονική Μηχανή & -Απειλές που προέρχονται από τον \textlatin{hypervisor} και στοχεύουν τις -εικονικές μηχανές. \\ +Απειλές που προέρχονται από τον υπερ-επόπτη και στοχεύουν εικονικές μηχανές. \\ \hline -\textlatin{VM $\Rightarrow$ VM} & +Εικονική μηχανή $\Rightarrow$ Εικονική Μηχανή & -Απειλές που προέρχονται από τις εικονικές μηχανές και στοχεύουν άλλες εικονικές +Απειλές που προέρχονται από εικονικές μηχανές και στοχεύουν άλλες εικονικές μηχανές. \\ \hline -\textlatin{Admin $\Rightarrow$ VMM} & +Εικονική μηχανή $\Rightarrow$ Υπερ-επόπτη & -Απειλές που προέρχονται από τον διαχειριστή εικονικών μηχανών και στοχεύουν τον -\textlatin{hypervisor}. \\ +Απειλές που προέρχονται από εικονικές μηχανές και στοχεύουν τον υπερ-επόπτη. \\ \hline -\textlatin{Admin $\Rightarrow$ VM} & +Διαχειριστή $\Rightarrow$ Υπερ-επόπτη & + +Απειλές που προέρχονται από τον διαχειριστή εικονικών μηχανών και στοχεύουν τον +υπερ-επόπτη. \\ + +\hline + +Διαχειριστή $\Rightarrow$ Εικονική Μηχανή & Απειλές που προέρχονται από τον διαχειριστή εικονικών μηχανών και στοχεύουν τις εικονικές μηχανές. \\ \hline -\end{tabular} -\caption{Απειλές στην εικονικοποίηση} -\label{table:virtualizationThreats} +\end{tabular}} +\label{table:virtualizationThreatSources} \renewcommand{\arraystretch}{1} \end{table} -\pagebreak +\clearpage -\subsubsection{Επιθέσεις στον πάροχο νέφους} \label{cloudProviderAttack} +\subsubsection{Απειλές για τον πάροχο νέφους μέσω δικτύου} \label{cloudProviderThreatsOverNetwork} -Τη σήμερον ημέρα όλο και περισσότερες επιχειρήσεις θα προτιμήσουν να βασιστούν -σε έναν πάροχο νέφους για την απόκτηση υποδομών προκειμένου να ξεκινήσουν να +Σήμερα όλο και περισσότερες επιχειρήσεις θα προτιμήσουν να βασιστούν σε έναν +πάροχο νέφους για την απόκτηση υποδομών προκειμένου να ξεκινήσουν να εξυπηρετούν τους δυνητικούς πελάτες τους έναντι της παραδοσιακής διαδικασίας αγοράς, ρύθμισης και διαχείρισης φυσικών διακομιστών. Η ταχύτερη εκκίνηση -παροχής υπηρεσιών και η ευκολία διαχείρισης της υποδομής τους, δεν αφήνουν -περιθώρια αμφιβολίας της ορθότητας αυτής της απόφασης. Όπως αναφέραμε όμως στο +παροχής υπηρεσιών, το μικρότερο κόστος και η ευκολία διαχείρισης της υποδομής +τους, δεν αφήνουν περιθώρια αμφιβολίας της ορθότητας αυτής της απόφασης. Για να +μπορούν όμως να παρέχουν τις υπηρεσίες τους στους τελικούς χρήστες, είναι +απαραίτητη η μεταφορά δεδομένων από την επιχείρηση προς τον πάροχο νέφους, στις +υποδομές του οποίου στεγάζονται οι εφαρμογές τους. Όπως αναφέραμε όμως στο \ref{cloudComputingSecurity}, εισάγεται έτσι ένα αναγκαίο μοντέλο εμπιστοσύνης -ανάμεσα στον πάροχο νέφους και τις επιχειρήσεις. +ανάμεσα στον πάροχο νέφους και τις επιχειρήσεις. Δηλαδή ταυτόχρονη εμπιστοσύνη +ως προς την απουσία μη εξουσιοδοτημένης πρόσβασης σε αυτά από τον πάροχο και ως +προς την ικανότητα του παρόχου να λάβει τα απαραίτητα μέτρα ασφαλείας για την +προστασία τους από εξωτερικούς κακόβουλους χρήστες. Ένα από τα σημαντικότερα ζητήματα που απασχολεί μια επιχείρηση είναι η -ασφάλεια. Επιλέγοντας να χρησιμοποιήσουν τις υπηρεσίες ενός παρόχου νέφους όμως -παραχωρούν ουσιαστικά πρόσβαση στις εφαρμογές τους και στα ευαίσθητα δεδομένα -αυτών διότι η ευθύνη προστασίας των υποδομών ανήκει στον ιδιοκτήτη τους και -στην προκειμένη περίπτωση αυτός είναι ο πάροχος νέφους. Έτσι κακόβουλοι -εισβολείς θα προσπαθήσουν να βρουν ατασθαλίες στη διαδικασία παράδοσης των -υπηρεσιών του παρόχου εκτελώντας επιθέσεις τύπου \textlatin{Cross site -scripting, SQL injection}, χειραγώγηση \textlatin{cookies} ή εκμετάλλευση μη -ασφαλούς ρύθμισης, θέτοντας έτσι σε κίνδυνο ευαίσθητες πληροφορίες και δεδομένα -των επιχειρήσεων. +ασφάλεια. Επιλέγοντας να χρησιμοποιήσουν τις υπηρεσίες ενός παρόχου νέφους, +όμως, παραχωρούν ουσιαστικά πρόσβαση στις εφαρμογές τους και στα ευαίσθητα +δεδομένα αυτών, διότι η ευθύνη προστασίας των υποδομών ανήκει στον ιδιοκτήτη +των υποδομών αυτών και στην προκειμένη περίπτωση αυτός είναι ο πάροχος νέφους. +Έτσι κακόβουλοι εισβολείς θα προσπαθήσουν να βρουν τρωτότητες στη διαδικασία +παράδοσης των υπηρεσιών του παρόχου, τις υπηρεσίες τις ίδιες ή και τις διεπαφές +με τις οποίες παρέχονται. Ένας συνηθισμένος τρόπος για να γίνει αυτό είναι +εκτελώντας επιθέσεις τύπου Cross site scripting (XSS), έκχυση SQL (SQL +injection), χειραγώγησης cookies ή εκμετάλλευσης μη ασφαλούς ρύθμισης, θέτοντας +έτσι σε κίνδυνο ευαίσθητες πληροφορίες και δεδομένα των επιχειρήσεων. Επιπλέον, +επειδή όλα τα δίκτυα είναι επιρρεπή σε επιθέσεις αν δεν έχουν ληφθεί τα +κατάλληλα μέτρα προστασίας, ένας πάροχος πρέπει να μπορεί να προστατευτεί από +επιθέσεις όπως η κατασκοπεία και διείσδυση δικτύου (network +penetration)\cite{arif2015virtualization}. -\subsubsection{Επιθέσεις μέσω του δικτύου} \label{attackOverNetwork} +\clearpage -Για να μπορούν οι επιχειρήσεις να παρέχουν τις υπηρεσίες τους στους τελικούς -χρήστες είναι απαραίτητη η μεταφορά δεδομένων από την επιχείρηση προς τον -πάροχο νέφους στου οποίου τις υποδομές στεγάζονται οι εφαρμογές τους. Όλα τα -δίκτυα όμως είναι επιρρεπή σε επιθέσεις αν δεν έχουν ληφθεί τα κατάλληλα μέτρα -προστασίας. Στις επιθέσεις αυτές περιλαμβάνονται η κατασκοπεία και διείσδυση -δικτύου και η εκμετάλλευση αδυναμιών του. Αυτές οι επιθέσεις όμως συνήθως -καταπολεμούνται με χρήση κρυπτογραφημένης σύνδεσης κατά τη μεταφορά δεδομένων. +\subsubsection{Απειλές για τον πάροχο νέφους μέσω εικονικών μηχανών} \label{cloudProviderAttackOverVMs} -\subsubsection{Ακεραιότητα δεδομένων} \label{dataIntegrity} +Όπως μια επιχείρηση πρέπει να εμπιστεύεται τον πάροχο νέφους ότι θα +προστατεύσει τα δεδομένα της, έτσι και ο πάροχος πρέπει να εμπιστεύεται την +επιχείρηση ότι δε θα προσπαθήσει να προκαλέσει ζημιά στις υπηρεσίες του. Αυτό +μπορεί να πραγματοποιηθεί με την εκτέλεση κακόβουλου λογισμικού στις εικονικές +μηχανές του παρόχου είτε από την επιχείρηση την ίδια, είτε μέσω ενός +επιτιθέμενου που παραβίασε τις εικονικές μηχανές της. -Η ακεραιότητα των δεδομένων αποτελεί είναι ένα από τα τρία βασικά στοιχεία της -ασφάλειας \cite{ciaTriad} δίχως την οποία οι επιχειρήσεις δε θα μπορούσαν να -παραμείνουν λειτουργικές. Απαιτείται μεγάλη προσοχή κατά τον σχεδιασμό των -βάσεων δεδομένων και της συντήρησης τους σε περιβάλλοντα νέφους αλλά και η -χρήση ορθών πρακτικών όπως ένα σχέδιο επαναφοράς εφεδρικών αντιγράφων -προκειμένου να μην υπάρξει απώλεια σημαντικών δεδομένων της επιχείρησης. +Ουσιαστικά κάθε εικονική μηχανή που έχει πρόσβαση στο διαδίκτυο είναι ευάλωτη +σε απειλές όπως δούρειοι ίπποι (Trojans), ιοί και κακόβουλα λογισμικά που +μπορεί να εξαπλωθούν στο σύστημα μεταπηδώντας από μια εικονική μηχανή στον +υπερ-επόπτη και από εκεί είτε να συνεχίσουν στο σύστημα είτε να μολύνουν και +τις υπόλοιπες εικονικές μηχανές που αυτός διαχειρίζεται. Επομένως, ο πάροχος +απαιτείται να έχει λάβει τα κατάλληλα μέτρα προστασίας έναντι κακόβουλων +εικονικών μηχανών. -\subsubsection{Εμπιστευτικότητα δεδομένων} \label{dataConfidentiality} +Με βάση την ανάλυση που έγινε στο \cite{virtualizationSecurity}, στις απειλές +από εικονική μηχανή σε εικονική μηχανή, οι πιο συνηθισμένες είναι η επίθεση +πλευρικού καναλιού (cross VM side channel attack), οι επιθέσεις βάσει +χρονοπρογραμματιστή (Scheduler based attacks) και οι επιθέσεις που στοχεύουν +τρωτότητες της διαδικασίας μετανάστευσης και επαναφοράς εικονικών μηχανών (VM +migration and rollback attacks). Από την άλλη, όσον αφορά τις απειλές από +εικονικές μηχανές προς τον υπερ-επόπτη, ανάμεσα στις πιο σημαντικές βρίσκονται +η μεταπήδηση εικονικής μηχανής (VM Hopping) και η απόδραση εικονικής μηχανής +(VM Escape). Τέλος, μερικές επιπρόσθετες απειλές σύμφωνα με τους +\citeauthor{Aalam_2021} \cite{Aalam_2021}, είναι η κλοπή εικονικών μηχανών και +η τροποποίηση του υπερ-επόπτη. -Όπως η ακεραιότητα, έτσι και η εμπιστευτικότητα των δεδομένων είναι κάτι για το -οποίο μια επιχείρηση πρέπει να φροντίσει εκ των προτέρων. Ένα κενό ασφαλείας -στην τελική εφαρμογή ενός χρήστη μπορεί να δώσει πρόσβαση σε έναν εισβολέα -παραβιάζοντας έτσι τις βάσεις δεδομένων της επιχείρησης. Επειδή σε ένα -περιβάλλον νέφους δεν έχει η ίδια η επιχείρηση πρόσβαση στις υποδομές που -χρησιμοποιεί, είναι απαραίτητη η επικοινωνία με τον πάροχο νέφους προκειμένου -να διαπιστωθεί ο τρόπος εξασφάλισης της εμπιστευτικότητας των δεδομένων από -μεριάς του. +\clearpage -\subsubsection{Διαθεσιμότητα δεδομένων} \label{dataAvailability} +\subsubsection{Κατηγοριοποίηση απειλών στην εικονικοποίηση} \label{virtualizationThreatsCategorization} -Η διαθεσιμότητα των δεδομένων που είναι και το τελευταίο στοιχείο της ασφάλειας -εξαρτάται άμεσα από τη συνεχή παροχή υποδομών προς την επιχείρηση. Είναι -απαραίτητη λοιπόν η εμπιστοσύνη προς τον πάροχο νέφους και γι'' αυτό τον λόγο -είθισται να επιλέγουν οι επιχειρήσεις μεγάλα ονόματα στον κλάδο της -υπολογιστικής νέφους. Ένας διαχειριστής εικονικών μηχανών έχει τον πλήρη έλεγχο -της λειτουργίας τους και το ίδιο ισχύει και για τον πάροχο νέφους μέσω του -οποίου έχει πρόσβαση ο διαχειριστής. Όλες οι ιδέες περί προστασίας και -ασφάλειας των εικονικών μηχανών λειτουργούν υπό την προϋπόθεση ότι υπάρχει -εμπιστοσύνη προς τον πάροχο. Είναι λοιπόν απαραίτητη όχι μόνο η έρευνα για -καλύτερη προστασία εικονικών περιβαλλόντων αλλά και για την ορθότερη επιλογή -παρόχου νέφους. +Οι προαναφερόμενες απειλές σε συνδυασμό με μερικές πιθανές ευπάθειες, έχουν +κατηγοριοποιηθεί από τους \citeauthor{virtualizationSecurity} στο +\cite{virtualizationSecurity} ως εξής: -\section{\textlatin{Containerization}} \label{containerizationDefinition} +\begin{table}[!ht] +\caption{Κατηγοριοποίηση απειλών στην εικονικοποίηση} +\renewcommand{\arraystretch}{1.5} +\centering +\newcolumntype{C}{>{\centering\arraybackslash}m{6cm}} +\newcommand\Tstrut{\rule{0pt}{2.6ex}} % = `top' strut +\newcommand\Bstrut{\rule[-0.9ex]{0pt}{0pt}} % = `bottom' strut +\textgreek{\begin{tabular}{||C|C||} +\hline -Πέραν της πλήρους εικονικοποίησης και της παρα-εικονικοποίησης, εδώ και αρκετά -χρόνια πολλές επιχειρήσεις στρέφονται σε τεχνολογίες που χρησιμοποιούν -\textlatin{containerization}. Με βάση την -\textlatin{\citeauthor{ibmContainerizationDefinition}}, πρόκειται για το -πακετάρισμα λογισμικού μονάχα με τις βιβλιοθήκες και τις εξαρτήσεις που -χρειάζεται για να εκτελεστεί δημιουργώντας ένα εκτελέσιμο ````δοχείο'''' που -πάντοτε θα εκτελείται με την ίδια συμπεριφορά ανεξαρτήτως υποδομής. Με την -παραδοσιακή μέθοδο ανάπτυξης λογισμικού υπήρχε πάντα το ρίσκο το πρόγραμμα που -αναπτύχθηκε σε ένα συγκεκριμένο περιβάλλον να μη λειτουργεί με τον αναμενόμενο -τρόπο κατά τη μεταφορά του σε ένα άλλο, εκτός εάν έχει ελεγχθεί ότι υπάρχουν -όλες οι εξαρτήσεις που χρειάζεται στις εκδόσεις που τις χρειάζεται. Ακόμα και -σε αυτήν την περίπτωση όμως, πέραν του κόπου για τον έλεγχο είναι αρκετά πιθανό -ένα δεύτερο πρόγραμμα να χρειάζεται διαφορετικές εκδόσεις ίδιων εξαρτήσεων. +Κατηγορία & Απειλές και πιθανά ευπαθή σημεία \\ [0.5ex] -Τα προβλήματα αυτά έρχεται να λύσει η τεχνολογία \textlatin{containerization}. -Όπως αναφέραμε στο \ref{dockerOrigins}, από το 2013 και έπειτα η άφιξη του -\textlatin{Docker} επιτάχυνε κατά πολύ την υιοθέτηση της τεχνολογίας αυτής. Σε -τέτοιο βαθμό που σε μια έρευνα της \textlatin{IBM} \cite{ibmContainerSurvey} -βρέθηκε πως το 61\% όσων ξεκίνησαν να χρησιμοποιούν δοχεία, το κάνουν στο 50\% -ή παραπάνω των εφαρμογών που δημιούργησαν τα τελευταία δύο χρόνια, ενώ 64\% -αυτών αναμένουν 50\% των υπαρχουσών εφαρμογών τους να κάνουν χρήση δοχείων στα -επόμενα δύο χρόνια. +\hline\hline -Ένας από τους χαρακτηρισμούς των δοχείων είναι η ````ελαφρότητα'''' τους σε -σχέση με μια εικονική μηχανή λόγω της ικανότητας τους να μοιράζονται τον πυρήνα -του συστήματος. Η απαίτηση μιας εικονικής μηχανής να χρειάζεται να έχει δικό -της πυρήνα, την καθιστά μεγαλύτερη σε μέγεθος και λιγότερο αποδοτική στη χρήση -πόρων του συστήματος. Τα δοχεία είναι εγγενώς μικρότερα σε μέγεθος και έχουν -και μικρότερο χρόνο εκκίνησης. Πράγμα που τραβάει το ενδιαφέρον των -επιχειρήσεων διότι μεταφράζεται σε υψηλότερη αποδοτικότητα διακομιστών και -επομένως μειωμένα κόστη λειτουργίας. +Απειλές Δικτύου & -\subsection{\textlatin{Application containerization}} \label{applicationContainerization} +XML Signature Wrapping Attacks\Tstrut\Bstrut\hline +Flooding Attacks (DDoS)\Tstrut\Bstrut\hline +Metadata Spoofing Attacks\Tstrut\Bstrut\hline +Insecure Web Apps \& APIs\Tstrut\Bstrut\hline +Cross Site Scripting Attacks\Tstrut\Bstrut\hline +Port scanning\Tstrut\Bstrut\hline +Botnets\Tstrut\Bstrut\hline +Spoofing attacks\Tstrut\Bstrut\hline +DNS attacks\Tstrut\Bstrut\hline +Sniffer attacks\Tstrut\Bstrut\hline +Denial of Service (DoS)\Tstrut\Bstrut \\ -Τα δοχεία ενθυλακώνουν μια εφαρμογή ως ένα αυτόνομο πακέτο που περιέχει τον -κώδικα, τις βιβλιοθήκες και τις εξαρτήσεις που χρειάζεται για να εκτελεστεί. Οι -εφαρμογές σε δοχεία θεωρούνται απομονωμένες με την έννοια ότι δεν έχουν ανάγκη -ένα αντίγραφο του λειτουργικού συστήματος αλλά αντ'' αυτού ένα -\textlatin{runtime engine} στο κύριο μηχάνημα που λειτουργεί ως διαμεσολαβητής -των δοχείων για να μοιράζονται το λειτουργικό σύστημα μεταξύ τους. Κοινές -βιβλιοθήκες ή εκτελέσιμα αρχεία μπορούν επίσης να μοιραστούν μεταξύ πολλών -δοχείων, συμβάλλοντας έτσι στην εξάλειψη περιττής υπολογιστικής ισχύος -καθιστώντας τα δοχεία μικρά στον χώρο που καταλαμβάνουν, γρήγορα στην εκκίνηση -και ικανά να εκτελεστούν σε οποιαδήποτε πλατφόρμα ή περιβάλλον νέφους -\cite{ibmContainerizationDefinition}. +\hline -\pagebreak +Απειλές για τον Πάροχο & -\subsection{Πλεονεκτήματα \textlatin{containerization}} \label{containerizationAdvantages} +Sniffing Attacks\Tstrut\Bstrut\hline +Spoofing Attacks\Tstrut\Bstrut\hline +Denial of Service Attacks\Tstrut\Bstrut\hline +cross VM side channel attacks\Tstrut\Bstrut\hline +VM scheduler based attacks\Tstrut\Bstrut\hline +VM Hopping\Tstrut\Bstrut\hline +VM Escape\Tstrut\Bstrut\hline +Dynamic Data Updates\Tstrut\Bstrut\hline +Data scavenging\Tstrut\Bstrut \\ -Τα δοχεία προσφέρουν μια σειρά από πλεονεκτήματα σε σχέση με τις παραδοσιακές -εικονικές μηχανές. Αυτά είναι μεταξύ άλλων σύμφωνα με την -\textlatin{\citeauthor{ibmContainerizationDefinition}} είναι τα εξής: +\hline + +Απειλές για τις Εφαρμογές & + +Malware injection\Tstrut\Bstrut\hline +Steganography attacks\Tstrut\Bstrut\hline +Web services attacks\Tstrut\Bstrut\hline +Protocol-based attacks\Tstrut\Bstrut\hline +Security Misconfigurations\Tstrut\Bstrut\hline +SQL Injection Attacks\Tstrut\Bstrut \\ + +\hline +\end{tabular}} +\label{table:virtualizationThreatCategories} +\renewcommand{\arraystretch}{1} +\end{table} + +\clearpage + +Κατηγοριοποίηση με μεγαλύτερη λεπτομέρεια ως προς τις κατηγορίες αδυναμιών όπου +δύναται να υπάρχουν τρωτότητες και τις αντιστοιχούμενες αδυναμίες αυτών, +πραγματοποιήθηκε από τον οργανισμό \citeauthor{enisaSecurityOfVirtualization} +στο \cite{enisaSecurityOfVirtualization} όπου και απεικονίζεται ως: + +\begin{center} + \begin{figure}[!ht] + \centering + \includegraphics[width = .93\textwidth]{Figures/Enisa/enisaThreats.jpg} + \captionof{figure}{Πιθανά σημεία εμφάνισης τρωτοτήτων και οι απειλές που τους αντιστοιχούν} + \label{fig:virtualizationThreats.png} + \end{figure} +\vspace*{-30pt} +\end{center} + +\clearpage + +\subsection{Η τριάδα της ασφάλειας} \label{securityTriad} + +Εν γένει, ο λόγος που μια επιχείρηση ενδιαφέρεται για την ασφάλεια, είναι +προκειμένου να διασφαλίσει την ακεραιότητα, την εμπιστευτικότητα και τη +διαθεσιμότητα των δεδομένων της. Αυτά τα τρία στοιχεία αποτελούν την τριάδα της +ασφάλειας \footfullcite{ciaTriad} και η απώλεια οποιουδήποτε από αυτά μπορεί να +έχει σοβαρές επιπτώσεις στην επιχείρηση. Η σημασία του καθενός, καθώς και +γενικές ορθές πρακτικές διατήρησης τους περιγράφονται ως εξής: \begin{itemize} - \item \textbf{Φορητότητα}: + \item \textbf{Ακεραιότητα δεδομένων} \label{dataIntegrity} + + Η ακεραιότητα των δεδομένων είναι ένα από τα τρία βασικά στοιχεία της + ασφάλειας, δίχως την οποία οι επιχειρήσεις δε θα μπορούσαν να + παραμείνουν λειτουργικές. Αναφέρεται στην προστασία των δεδομένων από + μη εξουσιοδοτημένη αλλοίωση καθ' όλη τη διάρκεια της ύπαρξης τους. + Δηλαδή είτε βρίσκονται στο στάδιο της μεταφοράς, είτε της αποθήκευσης. + Για κάθε επιχείρηση, απαιτείται μεγάλη προσοχή κατά τον σχεδιασμό των + βάσεων δεδομένων και της συντήρησης τους σε περιβάλλοντα νέφους αλλά + και η χρήση ορθών πρακτικών, όπως ο περιοδικός έλεγχος των δεδομένων + για την ανίχνευση πιθανών αλλοιώσεων και η χρήση μηχανισμών αναγνώρισης + και αποκατάστασης σφαλμάτων. + + \item \textbf{Εμπιστευτικότητα δεδομένων} \label{dataConfidentiality} + + Όπως η ακεραιότητα, έτσι και η εμπιστευτικότητα των δεδομένων είναι + κάτι για το οποίο μια επιχείρηση πρέπει να φροντίσει εκ των προτέρων. + Αναφέρεται στην προστασία των δεδομένων από μη εξουσιοδοτημένη πρόσβαση + κατά τη μεταφορά, την αποθήκευση και την επεξεργασία τους. Ένα κενό + ασφαλείας στην τελική εφαρμογή ενός χρήστη μπορεί να δώσει πρόσβαση σε + έναν εισβολέα παραβιάζοντας έτσι τις βάσεις δεδομένων της επιχείρησης. + Επειδή σε ένα περιβάλλον νέφους δεν έχει η ίδια η επιχείρηση πρόσβαση + στις υποδομές που χρησιμοποιεί, πέρα από μέτρα προστασίας που θα πρέπει + να λάβει η ίδια, είναι απαραίτητη και η επικοινωνία με τον πάροχο + νέφους προκειμένου να διαπιστωθεί ο τρόπος εξασφάλισης της + εμπιστευτικότητας των δεδομένων από μεριάς του. + +\clearpage + + \item \textbf{Διαθεσιμότητα δεδομένων} \label{dataAvailability} + + Η διαθεσιμότητα των δεδομένων, που ολοκληρώνει την τριάδα της + ασφάλειας, είναι το στοιχείο που εξασφαλίζει πως μια επιχείρηση θα + μπορεί να παρέχει τις υπηρεσίες της στους τελικούς της χρήστες. + Αναφέρεται στην αποφυγή της διακοπής πρόσβασης στα δεδομένα της από + εξουσιοδοτημένους φορείς και εξαρτάται άμεσα από τη συνεχή παροχή + υπηρεσιών υποδομών προς την επιχείρηση. Η απώλεια της θα είχε ως + αποτέλεσμα την διακοπή σημαντικών λειτουργιών της και δυνητικά την + μείωση της αξιοπιστίας της. Για να μπορέσει να διασφαλιστεί, πρέπει μια + επιχείρηση να έχει προβλέψει για ένα σχέδιο ανάκτησης εφεδρικών + αντιγράφων προς αποφυγή της απώλειας σημαντικών δεδομένων της, καθώς + και για ένα σχέδιο επαναφοράς των διαδικασιών παροχής τους ώστε να + μειώσει στο ελάχιστο την οποιαδήποτε διάρκεια διακοπής των υπηρεσιών + της. Τέλος, πρέπει να υπάρχει εμπιστοσύνη προς στον πάροχο νέφους πως + δεν θα υπάρξει από μεριάς του απρόσμενη διακοπή της λειτουργίας + υποδομών που μπορεί να είναι απαραίτητες για την επιχείρηση. + +\end{itemize} + +\subsection{Μέτρα ασφαλείας} \label{securityMeasures} + +Προκειμένου να προστατευτεί μια επιχείρηση από τις απειλές που αναφέρθηκαν +παραπάνω, θα πρέπει να έχει λάβει τα κατάλληλα μέτρα ασφαλείας. Μερικές ορθές +πρακτικές με βάση τους οργανισμούς +\citeauthor{geeksforgeeksVirtualizationSecurityGoodPractices} +\footfullcite{geeksforgeeksVirtualizationSecurityGoodPractices} και +\citeauthor{enisaSecurityOfVirtualization} +\footfullcite{enisaSecurityOfVirtualization} είναι οι παρακάτω: + +\begin{itemize} + + \item \textbf{Συχνή ενημέρωση του υπερ-επόπτη}: + + Ο υπερ-επόπτης είναι ο πυρήνας του συστήματος εικονικοποίησης και + επομένως η ασφάλεια του είναι ζωτικής σημασίας. Οι εταιρίες που + αναπτύσσουν το λογισμικό του, τον ενημερώνουν συχνά για να διορθώσουν + τυχόν ευπάθειες που έχουν ανακαλυφθεί. Επομένως, οι επιχειρήσεις πρέπει + να εφαρμόζουν τις ενημερώσεις αυτές το συντομότερο δυνατόν από την + στιγμή που θα είναι διαθέσιμες. + + \item \textbf{Περιορισμός πρόσβασης στο διαχειριστικό πάνελ του υπερ-επόπτη}: + + Η πρόσβαση στον υπερ-επόπτη παρέχει πλήρη έλεγχο στις λειτουργίες του + και επομένως, πρέπει να περιορίζεται μόνο σε εξουσιοδοτημένα άτομα. + Επιπλέον, οι επιχειρήσεις πρέπει να επιβάλλουν την χρήση πολύπλοκων + κωδικών πρόσβασης και να τους αλλάζουν τακτικά, καθώς και την χρήση + αυθεντικοποίησης πολλαπλών παραγόντων. + + \item \textbf{Έλεγχος των μηχανημάτων που έχουν πρόσβαση στον υπερ-επόπτη}: + + Οι επιχειρήσεις πρέπει να ελέγχουν συχνά ποια μηχανήματα έχουν πρόσβαση + στον υπερ-επόπτη και να προσθέτουν ή να αφαιρούν μηχανήματα από την + εξουσιοδοτημένη λίστα. Ο συχνός έλεγχος πρόσβασης θα μπορέσει επίσης να + αναδείξει προσπάθειες μη εξουσιοδοτημένης πρόσβασης ώστε να ληφθούν τα + κατάλληλα μέτρα περιορισμού των ατόμων που επιχειρούν να εισέλθουν σε + αυτόν. + + \item \textbf{Περιορισμός δικτυακής πρόσβασης στο διαχειριστικό πάνελ του υπερ-επόπτη}: + + Η πρόσβαση στο διαχειριστικό πάνελ του υπερ-επόπτη πρέπει να + πραγματοποιείται μόνο από ασφαλή δίκτυα. Επομένως, για την επιβολή + περιορισμών θα πρέπει να γίνεται χρήση αναχωμάτων ασφαλείας και άλλων + εργαλείων ασφαλείας του δικτύου. + + \item \textbf{Χρήση κρυπτογράφησης εικονικών μηχανών}: + + Η κρυπτογράφηση των εικονικών μηχανών προστατεύει τα δεδομένα τους από + μη εξουσιοδοτημένη πρόσβαση. Επιπλέον, στην περίπτωση κλοπής εικονικής + μηχανής μετά από παραβίαση του υπερ-επόπτη, ο επιτιθέμενος δεν θα είναι + σε θέση να αποκτήσει πρόσβαση στα δεδομένα της. + + \item \textbf{Απομόνωση των εικονικών μηχανών μεταξύ τους}: + + Ένας υπερ-επόπτης πρέπει να επιτρέπει την αλληλεπίδραση μεταξύ + εικονικών μηχανών μόνο όταν αυτό είναι απαραίτητο (παραδείγματος χάριν, + για τον διαμοιρασμό αποθηκευτικού χώρου). Επιβάλλεται να εφαρμοστούν + πολιτικές που να διαχειρίζονται την φυσική και λογική κατάτμηση πόρων. + Αυτό θα αποτρέψει την μη εξουσιοδοτημένη πρόσβαση, θα μειώσει τις + επιθέσεις έκχυσης κώδικα από μια εικονική μηχανή σε μια άλλη, καθώς και + το ρίσκο επίθεσης τύπου άρνησης υπηρεσίας. + + \item \textbf{Παρακολούθηση των πόρων}: + + Η δικτυακή κίνηση, η μνήμη και οι διεργασίες των εκτελούμενων εικονικών + μηχανών πρέπει να παρακολουθούνται διαρκώς προκειμένου να ξεχωρίζουν οι + εικονικές μηχανές που παρουσιάζουν ασυνήθιστες συμπεριφορές. Αυτό θα + βοηθήσει στην ορθότερη θέση σε λειτουργία υπαρχόντων μηχανισμών + ασφαλείας και ανίχνευσης εισβολών. + +\clearpage + + \item \textbf{Ορθή διαχείριση στιγμιοτύπων εικονικών μηχανών}: + + Κάθε στιγμιότυπο μιας εικονικής μηχανής, δύναται να περιέχει ευαίσθητα + δεδομένα όπως κωδικοί και προσωπικά δεδομένα χρηστών. Συνεπώς, πρέπει + κατά την αποθήκευση τους να προστατεύονται έναντι μη εξουσιοδοτημένης + πρόσβασης, τροποποίησης και αντικατάστασης. Αυτό περιλαμβάνει την ορθή + κρυπτογράφηση τους και την διαγραφή όσων στιγμιοτύπων δεν χρειάζονται + πλέον. + + \item \textbf{Ασφάλιση του μηχανήματος φιλοξενίας}: + + Το μηχάνημα φιλοξενίας αποτελεί ένα από τα πιο σημαντικά σημεία που + πρέπει να προστατευτούν. Αν ένας εισβολέας καταφέρει να αποκτήσει + πρόσβαση σε αυτό, θα μπορεί να αποκτήσει πρόσβαση σε όλες τις εικονικές + μηχανές που αυτό φιλοξενεί. Επομένως, οι επιχειρήσεις πρέπει να εφαρμόζουν + τακτικά ενημερώσεις λογισμικού, να περιορίζουν την πρόσβαση στο + μηχάνημα, να εφαρμόζουν πολύπλοκους κωδικούς πρόσβασης και να + παρακολουθούν την πρόσβαση σε αυτό. + +\end{itemize} + +\section{Δοχειοποίηση} \label{containerizationDefinition} + +Πέραν της πλήρους εικονικοποίησης και της παρα-εικονικοποίησης, εδώ και αρκετά +χρόνια πολλές επιχειρήσεις στρέφονται σε τεχνολογίες που χρησιμοποιούν μια +υποκατηγορία της εικονικοποίησης, ονόματι δοχειοποίηση (containerization). Με +βάση την \citeauthor{ibmContainerizationDefinition} +\footfullcite{ibmContainerizationDefinition}, πρόκειται για το πακετάρισμα +λογισμικού μονάχα με τις βιβλιοθήκες και τις εξαρτήσεις που χρειάζεται για να +εκτελεστεί, δημιουργώντας ένα εκτελέσιμο \textquote{δοχείο} που πάντοτε θα +εκτελείται με την ίδια συμπεριφορά ανεξαρτήτως υποδομής. Με την παραδοσιακή +μέθοδο ανάπτυξης λογισμικού, υπήρχε πάντα το ρίσκο το πρόγραμμα που αναπτύχθηκε +σε ένα συγκεκριμένο περιβάλλον να μη λειτουργεί με τον αναμενόμενο τρόπο κατά +τη μεταφορά του σε ένα άλλο, εκτός εάν έχει ελεγχθεί ότι υπάρχουν όλες οι +εξαρτήσεις που χρειάζεται στις εκδόσεις που τις χρειάζεται. Ακόμα και σε αυτήν +την περίπτωση όμως, πέραν του κόπου για τον έλεγχο είναι αρκετά πιθανό ένα +δεύτερο πρόγραμμα να χρειάζεται διαφορετικές εκδόσεις των ίδιων εξαρτήσεων. +Αυτό πρακτικά σήμαινε πως το δεύτερο αυτό πρόγραμμα θα έπρεπε να στεγαστεί σε +διαφορετικό διακομιστή, αυξάνοντας το σχετικό κόστος. + +\clearpage + +Τα προβλήματα αυτά έρχεται να λύσει η τεχνολογία της δοχειοποίησης. Με τη +δοχειοποίηση, είναι δυνατή η συστέγαση δοχείων, δηλ. διαφορετικών προγραμμάτων +ή συστατικών προγραμμάτων στο ίδιο μηχάνημα (είτε αυτό είναι φυσικό είτε +εικονικό). Όπως αναφέραμε στο \ref{containerManagement}, από το 2013 και έπειτα +η άφιξη του Docker επιτάχυνε κατά πολύ την υιοθέτηση της τεχνολογίας αυτής. Σε +τέτοιο βαθμό που σε μια έρευνα της IBM \footfullcite{ibmContainerSurvey} +βρέθηκε πως το 61\% όσων ξεκίνησαν να χρησιμοποιούν δοχεία, το κάνουν στο 50\% +ή παραπάνω των εφαρμογών που δημιούργησαν τα τελευταία δύο χρόνια, ενώ 64\% +αυτών, αναμένουν στο 50\% των υπαρχουσών εφαρμογών τους να κάνουν χρήση δοχείων +στα επόμενα δύο χρόνια. + +Ένας από τους χαρακτηρισμούς των δοχείων είναι η \textquote{ελαφρότητα} τους σε +σχέση με μια εικονική μηχανή λόγω της ικανότητας τους να μοιράζονται τον πυρήνα +του ίδιου λειτουργικού συστήματος (ΛΣ). Η απαίτηση μιας εικονικής μηχανής να +χρειάζεται να έχει δικό της ΛΣ, την καθιστά μεγαλύτερη σε μέγεθος και λιγότερο +αποδοτική στη χρήση πόρων του συστήματος. Απεναντίας, τα δοχεία είναι εγγενώς +μικρότερα σε μέγεθος και έχουν και μικρότερο χρόνο εκκίνησης. Πράγμα που +τραβάει το ενδιαφέρον των επιχειρήσεων διότι αυτό μεταφράζεται σε υψηλότερη +αποδοτικότητα \& βαθμό χρήσης των διακομιστών και επομένως μειωμένα κόστη +λειτουργίας. Επίσης, τα δοχεία κλιμακώνονται αρκετά πιο γρήγορα σε σχέση με τις +εικονικές μηχανές, επιτρέποντας την αντίδραση σε οποιαδήποτε διακύμανση του +φόρτου εργασίας. + +\subsection{Δοχειοποίηση Εφαρμογών (Application Containerization)} \label{applicationContainerization} + +Τα δοχεία ενθυλακώνουν ένα λογισμικό ή μέρος εφαρμογής ως ένα αυτόνομο πακέτο +που περιέχει τον κώδικα, τις βιβλιοθήκες και τις εξαρτήσεις που χρειάζεται για +να εκτελεστεί. Οι διεργασίες ενός δοχείου θεωρούνται απομονωμένες με την έννοια +ότι δεν έχουν ανάγκη ένα αντίγραφο του λειτουργικού συστήματος αλλά αντ' αυτού +μια μηχανή εκτέλεσης δοχείων (container execution engine) στο μηχάνημα +(φιλοξενίας) που λειτουργεί ως διαμεσολαβητής των δοχείων για να μοιράζονται το +ίδιο λειτουργικό σύστημα και κατά προέκταση τους υποκείμενους πόρους του μεταξύ +τους. Κοινές βιβλιοθήκες ή εκτελέσιμα αρχεία μιας στρώσης εικόνας δοχείων +μπορούν επίσης να χρησιμοποιηθούν για την δημιουργία πολλών δοχείων, +συμβάλλοντας έτσι στην εξάλειψη περιττής υπολογιστικής ισχύος, καθιστώντας τα +δοχεία μικρά στον χώρο που καταλαμβάνουν, γρήγορα στην εκκίνηση και ικανά να +εκτελεστούν σε οποιαδήποτε πλατφόρμα ή περιβάλλον νέφους +\footfullcite{ibmContainerizationDefinition}. + +Η δοχειοποίηση εφαρμογών αποτελεί εν γένει την πιο δημοφιλή μορφή δοχειοποίησης +που χρησιμοποιείται σήμερα. Είθισται να χρησιμοποιείται σε περιπτώσεις χρήσης +μικρο-υπηρεσιών, CI/CD pipelines, επαναλαμβανόμενες διεργασίες και εφαρμογής +μεθόδων DevOps \footfullcite{applicationContainerization}. + +\subsection{Πλεονεκτήματα Δοχειοποίησης} \label{containerizationAdvantages} + +Τα δοχεία προσφέρουν μια σειρά από πλεονεκτήματα σε σχέση με τις παραδοσιακές +εικονικές μηχανές. Αυτά, σύμφωνα με την +\citeauthor{ibmContainerizationDefinition} +\footfullcite{ibmContainerizationDefinition}, είναι τα εξής: + +\begin{itemize} + + \item \textbf{Mεταφερσιμότητα}: Τα δοχεία είναι ανεξάρτητα από το λειτουργικό σύστημα και το περιβάλλον εκτέλεσης τους και ως εκ τούτου μπορούν να εκτελεστούν σε οποιαδήποτε - πλατφόρμα ή περιβάλλον νέφους ομοιόμορφα και με συνέπεια. Το γεγονός - ότι τα κομμάτια ενός προγράμματος μπορούν να ορισθούν σε ένα μονάχα - αρχείο κειμένου και να κατασκευαστούν με αυτοματοποιημένο τρόπο - οπουδήποτε τους δίνει πολύ μεγαλύτερο προβάδισμα στον τομέα της - φορητότητας σε σχέση με τις εικονικές μηχανές. + πλατφόρμα ή περιβάλλον νέφους ομοιόμορφα και με συνέπεια. Εφόσον τα + κομμάτια ενός προγράμματος μπορούν να ορισθούν σε ένα μονάχα αρχείο + κειμένου και να κατασκευαστούν με αυτοματοποιημένο τρόπο οπουδήποτε, + αυτό δίνει στα δοχεία πολύ μεγαλύτερο προβάδισμα στον τομέα της + μεταφερσιμότητας σε σχέση με τις εικονικές μηχανές. - \item \textbf{\textlatin{Agility}}: + \item \textbf{Ευελιξία}: - Το \textlatin{Docker Engine} ξεκίνησε το βιομηχανικό πρότυπο για τη - χρήση δοχείων προσφέροντας απλά εργαλεία ανάπτυξης και μια καθολική + Το Docker Engine ξεκίνησε το βιομηχανικό πρότυπο Docker για τη χρήση + δοχείων προσφέροντας απλά εργαλεία ανάπτυξης και μια καθολική προσέγγιση πακεταρίσματος που λειτουργεί εξίσου καλά σε όλες τις - πλατφόρμες. Το οικοσύστημα των δοχείων έχει μετατοπιστεί σε μηχανές που - διαχειρίζεται η \textlatin{Open Container Initiative (OCI)} και οι - προγραμματιστές μπορούν εύκολα και γρήγορα να πακετάρουν τις εφαρμογές - τους ως δοχεία τα οποία μπορούν να προσφέρουν χωρίς την έγνοια - υποστήριξης πολλών διαφορετικών πλατφορμών. + πλατφόρμες. Το οικοσύστημα των δοχείων έχει μετατοπιστεί σε μηχανές + δοχείων που ακολουθούν τα πρότυπα της Open Container Initiative (OCI) + και οι προγραμματιστές μπορούν εύκολα και γρήγορα να πακετάρουν τις + εφαρμογές τους ως δοχεία, τα οποία μπορούν να παρέχονται χωρίς την + έγνοια υποστήριξης πολλών διαφορετικών πλατφορμών. \item \textbf{Ταχύτητα}: Τα δοχεία είναι ελαφρύτερα από τις παραδοσιακές εικονικές μηχανές λόγω - του διαμοιρασμού του πυρήνα και γι'' αυτό έχουν μικρότερο χρόνο + του διαμοιρασμού του ίδιου ΛΣ και γι' αυτό έχουν μικρότερο χρόνο εκκίνησης. Αυτό τα καθιστά ιδανικά για την ανάπτυξη και την εκτέλεση εφαρμογών σε περιβάλλοντα νέφους όπου η αποδοτικότητα αξιοποίησης των υπολογιστικών πόρων αντανακλάται σε άμεση εξοικονόμηση κόστους. +\clearpage + \item \textbf{Απομόνωση σφαλμάτων}: Εφόσον κάθε δοχείο είναι απομονωμένο και λειτουργεί ανεξάρτητα από τα - υπόλοιπα, η αποτυχία του ενός δε θα επηρεάσει τη συνεχή λειτουργία των - υπολοίπων. Οι ομάδες ανάπτυξης λογισμικού μπορούν να εντοπίζουν και να - διορθώνουν τυχόν τεχνικά προβλήματα χωρίς να υπάρχει διακοπή - λειτουργίας σε άλλα δοχεία. + υπόλοιπα, η αποτυχία ενός δοχείου στο ίδιο ΛΣ δε θα επηρεάσει τη συνεχή + λειτουργία των υπόλοιπων δοχείων. Με αυτόν τον τρόπο, οι ομάδες + ανάπτυξης λογισμικού μπορούν να εντοπίζουν και να διορθώνουν τυχόν + τεχνικά προβλήματα χωρίς να υπάρχει διακοπή λειτουργίας σε άλλα δοχεία. + Επιπρόσθετα, ο εντοπισμός του προβλήματος είναι εύκολος διότι εστιάζει + σε ένα μόνο δοχείο και όχι σε περισσότερα. Αυτό οδηγεί σε πιο γρήγορη + αποσφαλμάτωση και εν τέλει την πιο γρήγορη ανάπτυξη και διατήρηση + προγραμμάτων. \item \textbf{Αποδοτικότητα}: - Το γεγονός ότι τα δοχεία μοιράζονται τον ίδιο πυρήνα και κοινά κομμάτια - άλλων δοχείων του συστήματος τα καθιστά αρκετά μικρά σε μέγεθος ώστε να - είναι δυνατόν να εκτελεστούν πολλά περισσότερα δοχεία απ'' ότι θα - μπορούσαν εικονικές μηχανές. Επομένως, αξιοποιούνται καλύτερα οι πόροι - του συστήματος. - -\pagebreak + Το γεγονός ότι τα δοχεία μοιράζονται το ίδιο ΛΣ και κοινά κομμάτια μιας + στρώσης εικόνας δοχείου μπορούν να χρησιμοποιηθούν ξανά για την + δημιουργία πολλών δοχείων, τα καθιστά αρκετά μικρά σε μέγεθος ώστε να + είναι δυνατόν να εκτελεστούν πολλά περισσότερα δοχεία σε έναν + διακομιστή απ' ότι θα μπορούσαν εικονικές μηχανές. Επομένως, + αξιοποιούνται καλύτερα οι πόροι του συστήματος. \item \textbf{Ευκολία διαχείρισης}: Τα δοχεία σε ένα σύστημα είναι εύκολα διαχειρίσιμα με απλές εντολές. Η - διαδικασία ενημέρωσης, εκκίνησης και τερματισμού τους μεταξύ άλλων - είναι γρήγορη και απλή. Ακόμα και για μια επιχείρηση με πολλούς - διακομιστές που θα έπρεπε να τα κάνει αυτά χειροκίνητα, υπάρχουν - πλατφόρμες ενορχήστρωσης δοχείων που πέραν αυτών των λειτουργιών - βοηθάνε και στην κλιμάκωση και διαχείριση του φόρτου εργασίας μεταξύ - δοχείων. + διαδικασία ενημέρωσης, εκκίνησης, τερματισμού τους και εν γένει + διαχείρισης τους είναι γρήγορη και απλή. Ακόμα και για μια επιχείρηση + με πολλούς διακομιστές, όπου ο αντίστοιχος φόρτος διαχείρισης θα ήταν + αρκετά υψηλός, υπάρχουν πλατφόρμες ενορχήστρωσης δοχείων που πέραν της + αυτοματοποίησης αυτών των λειτουργιών διαχείρισης, βοηθάνε και στην + κλιμάκωση και διαχείριση του φόρτου εργασίας των δοχειοποιημένων + εφαρμογών τους. \item \textbf{Ασφάλεια}: - Η απομόνωση των εφαρμογών ως δοχεία εγγενώς αποτρέπει την εισβολή - κακόβουλου λογισμικού από το να επηρεάσει τα υπόλοιπα δοχεία ή το - σύστημα στο οποίο εκτελούνται. Επιπροσθέτως, άδειες ασφαλείας μπορούν - να ορισθούν με σκοπό τον αυτόματο αποκλεισμό ανεπιθύμητων στοιχείων από - τα δοχεία και τον περιορισμό επικοινωνίας μεταξύ δοχείων ή κομματιών - του συστήματος. + Η απομόνωση των εφαρμογών ως δοχεία, όταν εφαρμόζεται ακολουθώντας + ορθές πρακτικές, εγγενώς αποτρέπει την εισβολή κακόβουλου λογισμικού + από το να επηρεάσει τα υπόλοιπα δοχεία ή το σύστημα στο οποίο + εκτελούνται. Συγκεκριμένα, χρησιμοποιώντας Kernel Security Modules όπως + AppArmor ή SELinux μπορούν να ορισθούν άδειες ασφαλείας με σκοπό τον + περιορισμό του εύρους πρόσβασης του Docker στο σύστημα και με access + authorization plugins \footfullcite{accessAuthorizationPlugin}, + περιορίζεται η πρόσβαση στον δαίμονα του Docker. Επιπροσθέτως, πολύ + εύκολα μπορεί να περιοριστεί και η επικοινωνία μεταξύ δοχείων, καθώς + και του δικτύου του συστήματος. \end{itemize} -\subsection{Τύποι \textlatin{containerization}} \label{containerizationTypes} +\subsection{Διαφορές σε υλοποιήσεις της δοχειοποίησης} \label{containerizationImplementationDifferences} -Στην παράγραφο \ref{containerizationDefinition} αναφέραμε την έννοια -\textlatin{containerization}. Η ραγδαία αύξηση του ενδιαφέροντος και της χρήσης -δοχείων οδήγησε στην ανάγκη για πρότυπα γύρω από την τεχνολογία αυτή. Η -\textlatin{Open Container Initiative (OCI)} η οποία ιδρύθηκε τον Ιούνιο του -2015 από την \textlatin{Docker} και άλλους ηγέτες του κλάδου, προωθεί κοινά, -ανοικτά πρότυπα και προδιαγραφές γύρω από την τεχνολογία δοχείων. Εξαιτίας -αυτού, η \textlatin{OCI} συμβάλλει στη διεύρυνση των επιλογών για μηχανές -ανοιχτού κώδικα. Οι χρήστες δε θα είναι εγκλωβισμένοι στην τεχνολογία ενός -συγκεκριμένου προμηθευτή, αλλά θα μπορούν να επωφεληθούν από τις πιστοποιημένες -από την \textlatin{OCI} τεχνολογίες που θα τους επιτρέπουν να δημιουργούν -εφαρμογές σε δοχεία χρησιμοποιώντας ένα ευρύ σύνολο εργαλείων -\textlatin{DevOps} και να τις εκτελούν με τον ίδιο τρόπο σε οποιεσδήποτε +Στην παράγραφο \ref{containerizationDefinition} αναφέραμε την έννοια της +δοχειοποίησης. Η ραγδαία αύξηση του ενδιαφέροντος και της χρήσης δοχείων +οδήγησε στην ανάγκη για πρότυπα γύρω από την τεχνολογία αυτή. Έτσι, η Open +Container Initiative (OCI), η οποία ιδρύθηκε τον Ιούνιο του 2015 από την Docker +και άλλους ηγέτες του κλάδου, προωθεί κοινά, ανοικτά πρότυπα και προδιαγραφές +γύρω από την τεχνολογία δοχείων. Εξαιτίας αυτού, η OCI συμβάλλει στη διεύρυνση +των επιλογών για μηχανές δοχείων ανοιχτού κώδικα και συνεπώς, οι χρήστες δε θα +είναι εγκλωβισμένοι στην τεχνολογία ενός συγκεκριμένου προμηθευτή. Απεναντίας, +θα μπορούν να επωφεληθούν από τις πιστοποιημένες από την OCI τεχνολογίες που θα +τους επιτρέπουν να δημιουργούν εφαρμογές σε δοχεία χρησιμοποιώντας ένα ευρύ +σύνολο εργαλείων DevOps και να τις εκτελούν με τον ίδιο τρόπο σε οποιεσδήποτε υποδομές της επιλογής τους. -Σήμερα αν και το \textlatin{Docker} αποτελεί μία από τις πιο γνωστές και ευρέως +Σήμερα αν και το Docker αποτελεί μία από τις πιο γνωστές και ευρέως χρησιμοποιούμενες μηχανές δοχείων, υπάρχουν πολλές άλλες υλοποιήσεις. -Εναλλακτικές όπως το \textlatin{podman, LXC} και το \textlatin{containerd} που -ήταν για καιρό η προεπιλογή του \textlatin{Docker} για \textlatin{container -runtime} προτού υιοθετήσει το \textlatin{runC} μπορεί να έχουν διαφορετικά -χαρακτηριστικά και προεπιλογές αλλά η υιοθέτηση και η αξιοποίηση των -προδιαγραφών της \textlatin{OCI} καθώς αυτές εξελίσσονται θα διασφαλίσει ότι οι +Εναλλακτικές μηχανών δοχείων όπως το Podman \footfullcite{podman} και container +runtimes όπως το LXC και το containerd, το οποίο ήταν για καιρό η προεπιλογή +του Docker για container runtime προτού υιοθετήσει το runC, μπορεί να έχουν +διαφορετικά χαρακτηριστικά και προεπιλογές αλλά η υιοθέτηση και η αξιοποίηση +των προδιαγραφών της OCI καθώς αυτές εξελίσσονται θα διασφαλίσει ότι οι εναλλακτικές αυτές παραμένουν ανεξάρτητες από τους προμηθευτές, πιστοποιημένες για να τρέχουν σε πολλαπλά λειτουργικά συστήματα και χρησιμοποιήσιμες σε -πολλαπλά περιβάλλοντα \cite{ibmContainerizationDefinition}. +πολλαπλά περιβάλλοντα \footfullcite{ibmContainerizationDefinition}. -\subsection{Μερικές διαφορές σε υλοποιήσεις \textlatin{containerization}} \label{containerizationDifferences} +Παρότι οι προδιαγραφές της OCI έχουν ως στόχο να διασφαλίσουν την ομοιόμορφη +λειτουργία της τεχνολογίας αυτής, υπάρχουν αρκετές διαφορές στην υλοποίηση της. +Παραδείγματος χάριν, το Podman, ενώ συμμορφώνεται στις προδιαγραφές της OCI +όπως το Docker, δουλεύει χωρίς δαίμονα από πίσω, πράγμα που επιδιώκει να +κατευνάσει τις ανησυχίες γύρω από τον τρόπο λειτουργίας του Docker. Αυτό +συμβαίνει διότι το Docker χρειάζεται διαχειριστικές άδειες για την λειτουργία +του δαίμονα του, γεγονός που αφήνει το σύστημα ευάλωτο σε επιθέσεις σε +περίπτωση που αυτός παραβιαστεί. Παρότι και οι δύο αυτές μηχανές δοχείων +χρησιμοποιούν το runC ως container runtime, το Podman χρησιμοποιεί το systemd +για την διαχείριση των δοχείων του, το οποίο μπορεί να χρησιμοποιηθεί από +χρήστες χωρίς διαχειριστικές άδειες. Συνεπώς, εξαιτίας του τρόπου λειτουργίας +του, αν και από το 2021, χάρη στη δουλειά του Akihiro Suda +\footfullcite{AkihiroSuda}, η αποφυγή χρήσης δαίμονα δεν ισχύει μόνο για αυτό +πλέον, το Podman δύναται να εκτελεστεί από έναν χρήστη πέραν του +διαχειριστή/ριζικού (root). -Παρότι οι προδιαγραφές της \textlatin{OCI} έχουν ως στόχο να διασφαλίσουν την -ομοιόμορφη λειτουργία της τεχνολογίας αυτής, υπάρχουν αρκετές διαφορές στην -υλοποίηση. Παραδείγματος χάριν, το \textlatin{podman} ενώ όπως το -\textlatin{Docker} συμμορφώνεται στις προδιαγραφές της \textlatin{OCI}, -δουλεύει χωρίς δαίμονα από πίσω, πράγμα που επιδιώκει να κατευνάσει τις -ανησυχίες γύρω από τον τρόπο λειτουργίας του \textlatin{Docker}. Εξαιτίας του -τρόπου λειτουργίας του αν και από το 2021 χάρη στη δουλειά του -\textlatin{Akihiro Suda} \cite{AkihiroSuda} δεν ισχύει μόνο για αυτό πλεόν, το -\textlatin{podman} δύναται να εκτελεστεί από έναν χρήστη πέραν του -\textlatin{root}. +Ένα ακόμα εργαλείο που έχει παρόμοια αρχιτεκτονική με το Podman είναι το rkt το +οποίο προσπαθούσε να κρατήσει μια προσέγγιση ασφαλούς σχεδιασμού εξαρχής +(Secure-by-design). Μπορούσε να ενσωματώσει χαρακτηριστικά ασφαλείας, όπως +υποστήριξη SELinux, TPM measurement και εκτέλεση δοχείων σε απομονωμένες από το +υλικό εικονικές μηχανές. Παρ' όλα αυτά, σύμφωνα με το \cite{dockerAlternatives} +\footfullcite{dockerAlternatives}, έπαψε να έχει ενεργή ανάπτυξη και επομένως +δεν θα συνεχίζει να ανταγωνίζεται παρόμοια εργαλεία στον κλάδο των δοχείων. -Ένα ακόμα εργαλείο που έχει παρόμοια αρχιτεκτονική με το \textlatin{podman} -είναι το \textlatin{rkt} το οποίο προσπαθούσε να κρατήσει μια προσέγγιση -ασφαλούς σχεδιασμού εξαρχής (\textlatin{Secure-by-design}). Μπορούσε να -ενσωματώσει χαρακτηριστικά ασφαλείας όπως υποστήριξη \textlatin{SELinux, TMP -measurement} και εκτέλεση δοχείων σε απομονωμένες από το υλικό εικονικές -μηχανές. Παρ'' όλα αυτά, σύμφωνα με το \cite{dockerAlternatives} έπαψε να έχει -ενεργή ανάπτυξη και επομένως δεν θα συνεχίζει να ανταγωνίζεται παρόμοια -εργαλεία στον κλάδο των δοχείων. +Στην παράγραφο \ref{virtualizationImplementations} αναφέραμε την εικονικοποίηση +λειτουργικού συστήματος και στην \ref{containerManagement} το LXC. Αποτελεί και +αυτό ένα container runtime, με την διαφορά ότι αντί να επικεντρώνεται στην +δοχειοποίηση εφαρμογών όπως κάνει το Docker χρησιμοποιώντας το runC, ο κύριος +σκοπός της δημιουργίας του ήταν η δοχειοποίηση λειτουργικών συστημάτων. Αν και +χρησιμοποιείται ακόμα στις μέρες μας, η δημοτικότητα του έχει πέσει από τότε +που το ενδιαφέρον τον επιχειρήσεων στράφηκε στην δοχειοποίηση εφαρμογών, με +αποτέλεσμα την ανάγκη δημιουργίας εργαλείων που να διευκολύνουν την διαδικασία +αυτή, η οποία οδήγησε στην δημιουργία του Docker. -\subsection{Δοχεία έναντι εικονικών μηχανών} \label{containersVsVms} +Σχετικά με τα container runtimes runC και containerd, το πρώτο είναι ένα +container runtime χαμηλού επιπέδου ενώ το δεύτερο υψηλού επιπέδου. +Δημιουργήθηκαν και τα δύο από το Docker σε διαφορετικές χρονικές περιόδους και +από τις αρχικές του εκδόσεις, το Docker χρησιμοποιούσε το containerd από +προεπιλογή. Μετέπειτα, αποφάσισε να το καταστήσει ένα αυτόνομο container +runtime και αντικαταστάθηκε με το runC προκειμένου να μπορέσουν τα δοχεία του +Docker να δουλεύουν ευκολότερα σε διαφορετικές πλατφόρμες όπως το Kubernetes +\footfullcite{containerdRunc}. Επιπροσθέτως, η απόφαση αυτή κατέστησε το Docker +πιο διαχειρίσιμο διότι πλέον αποτελούνταν από πολλά μικρότερα εργαλεία, όπου το +καθένα από αυτά είχε συγκεκριμένους ρόλους. Αναλυτικότερα, το containerd πλέον +είναι υπεύθυνο για την απόκτηση εικόνων δοχείων και την διαχείριση τους, προτού +τις μεταβιβάσει στο runC, το οποίο είναι το εργαλείο που θα αλληλεπιδράσει με +τον πυρήνα του Linux προκειμένου να χρησιμοποιήσει χαρακτηριστικά όπως οι +ομάδες ελέγχου (control groups) για να δημιουργήσει δοχεία. -Παρ'' όλο που πολλές φορές τα δοχεία συγχέονται με τις εικονικές μηχανές, οι -δύο αυτές έννοιες έχουν αρκετές διαφορές στην αρχιτεκτονική τους. Στην -παραδοσιακή εικονικοποίηση είτε αυτή γίνεται στις υπάρχουσες υποδομές μια -επιχείρησης είτε σε ένα περιβάλλον νέφους, ένας \textlatin{hypervisor} πρέπει -να χρησιμοποιηθεί για να εικονικοποιήσει φυσικό υλικό. Κάθε εικονική μηχανή -έχει ένα λειτουργικό σύστημα και ένα εικονικό αντίγραφο του υλικού που απαιτεί -για να εκτελεστεί μαζί με μια εφαρμογή, τις βιβλιοθήκες και τις εξαρτήσεις της. -Από την άλλη, ένα δοχείο αντί να εικονικοποιήσει το υλικό, εικονικοποιεί το -λειτουργικό σύστημα ούτως ώστε κάθε δοχείο να περιέχει μόνο την εφαρμογή, τις -βιβλιοθήκες και τις εξαρτήσεις της \cite{ibmContainerVsVm}. +\clearpage -Η εικόνα \ref{fig:containerVsVm} παρουσιάζει τη διαφορά των δύο αρχιτεκτονικών - -\begin{center} - \includegraphics[width = .8\textwidth]{Figures/RedHat_Virtualization/virtualization-vs-containers_transparent.png} - \captionof{figure}{\textlatin{Virtualization Vs Containers}} - \label{fig:containerVsVm} -\end{center} - -Η απουσία του εικονικού λειτουργικού υλικού είναι που τα καθιστά γρήγορα, -φορητά και μικρότερα σε μέγεθος. Για να γίνει πιο εμφανής η διαφορά, σύμφωνα με -τη \textlatin{Red Hat} \cite{redhatContainerVsVm}, το μέγεθος των εικονικών -μηχανών μετράται της τάξεως των \textlatin{gigabyte} ενώ των δοχείων μένουν στα -\textlatin{megabyte}. Πολλές φορές όπως αναφέρεται και στο -\cite{ibmContainerVsVm}, τα δοχεία χρησιμοποιούνται για εφαρμογές -αρχιτεκτονικής \textlatin{microservices} όπου κάθε ξεχωριστό κομμάτι -αντιπροσωπεύει μια λειτουργία της εφαρμογής και είναι ευκολότερη η κλιμάκωση -μιας υπηρεσίας απ'' ότι θα ήταν με μια \textlatin{monolithic} αρχιτεκτονική. -Εκεί λόγω μεγέθους και πλήθους τους συνήθως απαιτείται η χρήση πλατφόρμας -ενορχήστρωσης δοχείων όπως το \textlatin{Kubernetes}, το \textlatin{Docker -Swarm} ή άλλα για αποδοτικότερη διαχείριση. - -Το μόνο μειονέκτημα τους, το οποίο δεν επηρεάζει κατά πολύ τη χρήση τους, είναι -το γεγονός ότι δοχεία που δημιουργήθηκαν για να εκτελούν προγράμματα που -απαιτούν την ύπαρξη του λειτουργικού συστήματος \textlatin{Windows} δε μπορούν -να εκτελεστούν σε ένα περιβάλλον με τον πυρήνα του \textlatin{Linux}. - -\subsection{Ασφάλεια στο \textlatin{Docker}} \label{dockerSecurityMore} +\subsection{Ασφάλεια στο Docker} \label{dockerSecurityMore} Οι εφαρμογές σε δοχεία έχουν ένα εγγενές επίπεδο ασφαλείας αφού μπορούν να εκτελούνται ως απομονωμένες διεργασίες και να λειτουργούν ανεξάρτητα από τα υπόλοιπα δοχεία. Με πλήρη απομόνωση θα μπορούσε να αποτραπεί στην περίπτωση μόλυνσης από κακόβουλο λογισμικό, ο κίνδυνος να επηρεαστούν άλλα δοχεία ή το ίδιο το σύστημα. Ωστόσο, η απομόνωση τους δεν είναι πλήρης. Ο διαμοιρασμός -κομματιών μιας εφαρμογής σε δοχείο βοηθάει στην αποδοτικότητα του συστήματος +κομματιών μιας εφαρμογής σε δοχεία βοηθάει στην αποδοτικότητα του συστήματος αλλά ανοίγει και ένα παράθυρο ευκαιρίας για επιθέσεις. Το γεγονός επίσης πως μοιράζονται τον ίδιο πυρήνα σημαίνει πως μια επίθεση με στόχο αυτόν, μπορεί δυνητικά να επηρεάσει όλα τα δοχεία. -Σχετικά με τις εικόνες δοχείων, τα κομμάτια δηλαδή από τα οποία μια εφαρμογή σε -μορφή δοχείου αποτελείται, η ασφάλεια δεν είναι πάντα εγγυημένη. Πρέπει να -ληφθούν μέτρα προστασίας όπως η χρήση εικόνων προερχόμενες μόνο από -εγκεκριμένες πηγές, κάτι που εισάγει ένα μοντέλο εμπιστοσύνης αυτή τη φορά -ανάμεσα στον προμηθευτή της και τον τελικό χρήστη. Οι πάροχοι τεχνολογίας -δοχείων έχουν αποκτήσει μια προσέγγιση ασφαλούς σχεδιασμού ώστε πολλά από τα -απαραίτητα μέτρα να είναι ενεργοποιημένα χωρίς την απαίτηση επιπρόσθετης -αλληλεπίδρασης από τον χρήστη. Πλέον η μηχανή δοχείων υποστηρίζει όλες τις -ιδιότητες απομόνωσης που υποστηρίζει και το λειτουργικό σύστημα στο οποίο -εκτελείται και άδειες ασφαλείας μπορούν να δοθούν με σκοπό τον επιπρόσθετο -περιορισμό χρήσης πόρων και το εύρος του συστήματος στο οποίο έχει πρόσβαση η -μηχανή δοχείων \cite{ibmContainerizationDefinition}. +Σχετικά με τις εικόνες δοχείων που αναφέρθηκαν στο \ref{containerTechnologies}, +τα κομμάτια δηλαδή από τα οποία μια εφαρμογή σε μορφή δοχείου αποτελείται και +αντιστοιχούν σε καλούπια μέσω των οποίων παράγονται τα δοχεία της εφαρμογής, η +ασφάλεια δεν είναι πάντα εγγυημένη. Αυτό είναι κάτι που συμβαίνει διότι ο +καθένας έχει την δυνατότητα να ανεβάσει μια εικόνα δοχείου προς χρήση από +τρίτους. Σε περίπτωση που δεν εξετασθεί το περιεχόμενο της μπορεί είτε να +περιέχει κακόβουλο λογισμικό, είτε να μην ακολουθούνται ορθές πρακτικές +ασφαλείας με αποτέλεσμα να μένει το σύστημα που την χρησιμοποιεί ευάλωτο σε +επιθέσεις. Συνεπώς, πρέπει να ληφθούν μέτρα προστασίας όπως η χρήση εικόνων +προερχόμενες μόνο από εγκεκριμένες πηγές, δηλαδή να υπάρχει εμπιστοσύνη ανάμεσα +στον προμηθευτή μιας εικόνας δοχείου και τον τελικό χρήστη. Επιπροσθέτως, πριν +την χρήση μιας εικόνας δοχείου πρέπει να εξετάζεται με εργαλεία ανίχνευσης +τρωτοτήτων, καθώς και να έχει πραγματοποιηθεί επαρκώς σκλήρυνση του Docker ώστε +να μειωθούν οι επιπτώσεις κατά την χρήση της. -\subsubsection{\textlatin{Docker Attack Vector Mitigation Using Namespaces}} \label{dockerAttackVectorMitigation} +Οι πάροχοι τεχνολογίας δοχείων έχουν αποκτήσει μια προσέγγιση ασφαλούς +σχεδιασμού ώστε πολλά από τα απαραίτητα μέτρα να είναι ενεργοποιημένα χωρίς την +απαίτηση επιπρόσθετης αλληλεπίδρασης από τον χρήστη. Πλέον η μηχανή δοχείων +υποστηρίζει όλες τις ιδιότητες απομόνωσης που υποστηρίζει και το λειτουργικό +σύστημα στο οποίο εκτελείται και άδειες ασφαλείας μπορούν να δοθούν στα δοχεία +και τον δαίμονα του Docker μέσω του πυρήνα του ΛΣ, με σκοπό τον επιπρόσθετο +περιορισμό χρήσης πόρων και του εύρους του συστήματος στο οποίο έχει πρόσβαση η +μηχανή δοχείων \footfullcite{ibmContainerizationDefinition}. -Με βάση το μοντέλο που περιγράφει το \cite{reshetova2014security} όπως -αναφέρεται στο \cite{bui2015analysis} όπου έχουμε ένα μηχάνημα στο οποίο +\clearpage + +\subsubsection{Μετριασμός επιθέσεων στο Docker με χρήση χώρων ονομάτων} \label{dockerAttackVectorMitigation} + +Με βάση το μοντέλο που περιγράφει το \cite{reshetova2014security}, όπως +αναφέρεται στο \cite{bui2015analysis}, έχουμε ένα μηχάνημα στο οποίο εκτελούνται διάφορα δοχεία, από τα οποία ένα υποσύνολο έχει τεθεί υπό τον -έλεγχο ενός κακόβουλου χρήστη. Για να προστατευτούμε από επιθέσεις, όπως άρνηση -υπηρεσίας και κλιμάκωση δικαιωμάτων πρέπει να πραγματοποιηθεί απομόνωση των -διεργασιών, αρχείων, της συσκευής, του \textlatin{IPC}, δικτύου και τέλος, των -πόρων. +έλεγχο ενός κακόβουλου χρήστη. Για να προστατευτούμε από επιθέσεις, όπως +άρνησης υπηρεσίας και κλιμάκωσης δικαιωμάτων πρέπει να πραγματοποιηθεί +απομόνωση των διεργασιών, των αρχείων της συσκευής, του IPC, του δικτύου και +των πόρων. -Αυτά επιτυγχάνονται κατά σειρά με τη χρήση +Αυτά επιτυγχάνονται κατά σειρά με τη χρήση: \begin{itemize} - \item \textbf{\textlatin{namespaces}} όπου οριοθετείται η ορατότητα των - διεργασιών ανάμεσα στα δοχεία και το σύστημα όπως επίσης, τα δικαιώματά - τους. + \item \textbf{Χώρων ονομάτων (namespaces)} όπου οριοθετείται η ορατότητα + των διεργασιών ανάμεσα στα δοχεία και το σύστημα, όπως επίσης και τα + δικαιώματά τους. - \item \textbf{\textlatin{mount namespaces}}, με τα οποία οι διεργασίες κάθε - δοχείου βλέπουν διαφορετικά τη διάταξη των αρχείων του συστήματος. Όλες - οι δράσεις \textlatin{mount}, που γίνονται στο εκάστοτε δοχείο, - περιορίζονται σε αυτό όπως επίσης, οριοθετούνται τα δικαιώματα των - αρχείων του πυρήνα σε μονάχα ανάγνωσης και αποτρέπονται περαιτέρω - \textlatin{remountings}. + \item \textbf{Mount namespaces}, με τα οποία οι διεργασίες κάθε δοχείου + βλέπουν με διαφορετικό τρόπο τη διάταξη των αρχείων του συστήματος. + Όλες οι δράσεις mount, που γίνονται στο εκάστοτε δοχείο, περιορίζονται + σε αυτό. Επίσης, οριοθετούνται τα δικαιώματα των αρχείων του πυρήνα σε + μονάχα ανάγνωσης και αποτρέπονται περαιτέρω remountings. - \item \textbf{\textlatin{Device Whitelist Controller}}, ενός - χαρακτηριστικού των \textlatin{cgroups} για περιορισμό συσκευών, που - αναφέρεται στο \cite{deviceWhitelistController} με τη βοήθεια του - οποίου περιορίζεται το σύνολο τον συσκευών στις οποίες έχει πρόσβαση - ένα δοχείο και το αποτρέπει από το να δημιουργήσει καινούριες - αναπαραστάσεις συσκευών. Επιπροσθέτως επειδή τα \textlatin{mount} - γίνονται με τη χρήση του \textlatin{nodev}, στην περίπτωση που μια - αναπαράσταση συσκευής είχε δημιουργηθεί σε προηγούμενο χρόνο του - στιγμιότυπου που χρησιμοποιήθηκε για να κατασκευαστεί το δοχείο, οι - διεργασίες του δε δύνανται να τη χρησιμοποιήσουν για να επικοινωνήσουν - με τον πυρήνα. Επιπλέον, επειδή η προεπιλεγμένη συνθήκη είναι να μη - δίνονται εκτεταμένα προνόμια σε ένα δοχείο, δεν υπάρχει πρόσβαση σε - καμία συσκευή παρά μόνο εάν γίνει εκτέλεση δοχείου ως χρήστης με - ανώτατα δικαιώματα όπου υπάρχει πρόσβαση σε όλες. + \item \textbf{Device Whitelist Controller}, ενός χαρακτηριστικού των + cgroups για περιορισμό συσκευών, που αναφέρεται στο + \cite{deviceWhitelistController} + \footfullcite{deviceWhitelistController}, με τη βοήθεια του οποίου + περιορίζεται το σύνολο τον συσκευών στις οποίες έχει πρόσβαση ένα + δοχείο και το αποτρέπει από το να δημιουργήσει καινούριες + αναπαραστάσεις συσκευών. Επιπροσθέτως, επειδή τα mount γίνονται με τη + χρήση της παραμέτρου nodev\footnote{\textgreek{Μια παράμετρος της + εντολής mount κατά την οποία απαγορεύεται η δημιουργία και η + πρόσβαση αναπαραστάσεων συσκευών που βρίσκονται σρον φάκελο /dev.}}, + στην περίπτωση που μια αναπαράσταση συσκευής είχε δημιουργηθεί σε + προηγούμενο χρόνο μέσα στην εικόνα δοχείου που χρησιμοποιήθηκε για να + κατασκευαστεί το δοχείο, οι διεργασίες του δοχείου αυτού δε δύνανται να + τη χρησιμοποιήσουν για να επικοινωνήσουν με τον πυρήνα. Επιπλέον, + επειδή η προεπιλεγμένη συνθήκη είναι να μη δίνονται εκτεταμένα προνόμια + σε ένα δοχείο, δεν υπάρχει πρόσβαση σε καμία συσκευή παρά μόνο εάν + γίνει εκτέλεση δοχείου ως χρήστης με ανώτατα δικαιώματα, όπου τότε + υπάρχει πρόσβαση σε όλες (τις συσκευές). - \item \textbf{\textlatin{IPC namespaces}} για περιορισμό \textlatin{IPC}, - δηλαδή της επικοινωνίας των διεργασιών μεταξύ τους. Τα \textlatin{IPC - namespaces} καθιστούν δυνατή τη δημιουργία ξεχωριστών συνόλων των - διεργασιών, που επικοινωνούν μεταξύ τους αλλά όχι με άλλες διεργασίες - πέραν του υποσυνόλου. + \item \textbf{IPC namespaces} για περιορισμό IPC, δηλαδή της επικοινωνίας + των διεργασιών μεταξύ τους. Τα IPC namespaces καθιστούν δυνατή τη + δημιουργία ξεχωριστών συνόλων των διεργασιών, που επικοινωνούν μεταξύ + τους αλλά όχι με άλλες διεργασίες πέραν του υποσυνόλου. - \item \textbf{\textlatin{network namespaces}}. Μία από τις σημαντικότερες - απομονώσεις είναι αυτή του δικτύου. Χωρίς δικτυακή απομόνωση υπάρχει - κίνδυνος επιθέσεων όπως \textlatin{Man in the middle}, \textlatin{ARP, - DNS spoofing} και άλλες. Για να απομονωθεί η κίνηση δικτύου που - λαμβάνει μέρος σε ένα δοχείο από αυτήν των υπολοίπων και του συστήματος - πρέπει να γίνει χρήση των \textlatin{network namespaces}. Κάθε δοχείο - θα έχει δικές του διευθύνσεις \textlatin{IP}, συσκευές και ό,τι - χρειάζεται, προκειμένου να γίνεται αλληλεπίδραση μεταξύ των δοχείων - μέσω της διεπαφής δικτύου του καθενός σαν να είναι εξωτερικές - οντότητες. + \item \textbf{Network namespaces}. Μία από τις σημαντικότερες απομονώσεις + είναι αυτή του δικτύου. Χωρίς δικτυακή απομόνωση υπάρχει κίνδυνος + επιθέσεων, όπως ενδιάμεσου (Man in the middle), ARP, DNS πλαστογράφηση + (spoofing) και άλλες. Για να απομονωθεί η κίνηση δικτύου που λαμβάνει + μέρος σε ένα δοχείο από αυτήν των υπολοίπων και του συστήματος πρέπει + να γίνει χρήση των network namespaces. Κάθε δοχείο θα έχει δικές του + διευθύνσεις IP, συσκευές και ό,τι χρειάζεται, προκειμένου να γίνεται + αλληλεπίδραση μεταξύ των δοχείων μέσω της διεπαφής δικτύου του καθενός + σαν να είναι εξωτερικές οντότητες. - \item \textbf{\textlatin{cgroup}}. Έπιβάλλεται η οριοθέτηση των + \item \textbf{Ομάδες ελέγχου (cgroups)}. Έπιβάλλεται η οριοθέτηση των υπολογιστικών πόρων προκειμένου να αποφευχθεί μια επίθεση τύπου άρνησης - υπηρεσίας όπου μια διεργασία ή ένα σύνολο αυτών προσπαθεί να - καταναλώσει όλους τους πόρους του συστήματος. Με τη βοήθεια των - \textlatin{cgroup}, επιτυγχάνεται ο έλεγχος του ποσοστού πόρων όπως - \textlatin{CPU}, μνήμη, και χωρητικότητα που μπορεί να έχει κάθε δοχείο - στη διάθεση του. + υπηρεσίας, όπου μια διεργασία ή ένα σύνολο αυτών προσπαθεί να + καταναλώσει όλους τους πόρους του συστήματος. Με τη βοήθεια των ομάδων + ελέγχου, επιτυγχάνεται ο έλεγχος του ποσοστού πόρων όπως CPU, μνήμης + και χωρητικότητας, που μπορεί να έχει κάθε δοχείο στη διάθεση του. \end{itemize} -Αυτές οι δυνατότητες υποστηρίζονται από το \textlatin{Docker} και μπορεί κανείς -να τις εκμεταλλευτεί για να προστατεύσει το περιβάλλον του από επιθέσεις. -Επιπλέον, υπάρχει και η δυνατότητα υποστήριξης \textlatin{Kernel Security -Modules} όπως \textlatin{SELinux} και \textlatin{Apparmor} αλλά και του -\textlatin{Seccomp} (στην περίπτωση χρήσης \textlatin{LXC}) όπως επίσης και -συμβατότητα με \textlatin{Linux capabilities} που θα μπορούσαν να εισάγουν ένα -ακόμα επίπεδο ασφαλείας αν χρησιμοποιηθούν σωστά, περιορίζοντας τα δικαιώματα -των διεργασιών των δοχείων σε μονάχα όσα χρειάζονται. Το \textlatin{Docker} -παρέχει αρκετά υπάρχοντα μέσα άμυνας προκειμένου να προστατευτεί από επιθέσεις -ακόμα και χωρίς επιπρόσθετες ρυθμίσεις. Παρ'' όλα αυτά οι αρχικές ρυθμίσεις -ασφαλείας είναι πιο ελαστικές απ'' όσο χρειάζεται προκειμένου να συνεχίζει να -λειτουργεί κανονικά για όλους τους χρήστες, αφήνοντας έτσι τους διαχειριστές -ασφαλείας υπεύθυνους να χρησιμοποιήσουν όσες δυνατότητες είναι απαραίτητες -προκειμένου να ανταπεξέλθουν σε κάθε επίθεση ανάλογα το περιβάλλον και τις -ανάγκες τους. +Αυτές οι δυνατότητες υποστηρίζονται από το Docker και μπορεί κανείς να τις +εκμεταλλευτεί για να προστατεύσει το περιβάλλον του από επιθέσεις. Επιπλέον, +υπάρχει και η δυνατότητα υποστήριξης Kernel Security Modules, όπως SELinux +\footfullcite{selinux} και AppArmor \footfullcite{apparmor} αλλά και του +Seccomp \footfullcite{seccomp} (στην περίπτωση χρήσης LXC), όπως επίσης και +συμβατότητα με Linux capabilities, που θα μπορούσαν να εισάγουν ένα ακόμα +επίπεδο ασφαλείας, αν χρησιμοποιηθούν σωστά, περιορίζοντας τα δικαιώματα των +διεργασιών των δοχείων σε μονάχα όσα χρειάζονται. Το Docker παρέχει αρκετά +υπάρχοντα μέσα άμυνας προκειμένου να προστατευτεί από επιθέσεις ακόμα και χωρίς +επιπρόσθετες ρυθμίσεις. Παρ' όλα αυτά, οι αρχικές ρυθμίσεις ασφαλείας είναι πιο +ελαστικές απ' όσο χρειάζεται προκειμένου να συνεχίζει να λειτουργεί κανονικά +για όλους τους χρήστες, αφήνοντας έτσι τους διαχειριστές ασφαλείας υπεύθυνους +να χρησιμοποιήσουν όσες δυνατότητες είναι απαραίτητες προκειμένου να +ανταπεξέλθουν σε κάθε επίθεση ανάλογα το περιβάλλον και τις ανάγκες τους. -\subsection{Συχνά είδη επιθέσεων σε δοχεία και μέθοδοι πρόληψης} \label{commonAttacksAndPrevention} +\clearpage -Μερικά είδη επιθέσεων και οι τρόποι αντιμετώπισης όπως αναφέρονται στο -\cite{yasrab2018mitigating} είναι τα εξής: +\subsubsection{Συχνά είδη επιθέσεων σε δοχεία και μέθοδοι πρόληψης} \label{commonAttacksAndPrevention} + +Μερικά είδη επιθέσεων σε δοχεία με τους τρόπους αντιμετώπισής τους, όπως +αναφέρονται στο \cite{yasrab2018mitigating}, είναι τα εξής: \begin{itemize} - \item \textbf{\textlatin{Kerner Exploits}}: + \item \textbf{Εκμεταλλεύσεις πυρήνα (Kernel Exploits)}: Ο πυρήνας είναι υπεύθυνος για τη διαχείριση των λειτουργιών και διεργασιών των δοχείων. Λόγω του διαμοιρασμού του πυρήνα του συστήματος με κάθε δοχείο το οποίο εκτελείται σε αυτό, εάν οποιοδήποτε από αυτά - τεθεί υπό τον έλεγχο ενός κακόβουλου χρήστη μπορεί δυνητικά να πάρει - τον έλεγχο του συστήματος και όλων των δοχείων αυτού. Ο τρόπος - αντιμετώπισης που προτείνεται είναι η χρήση \textlatin{SELinux} ή - \textlatin{Apparmor} κατά την εκτέλεση δοχείων σε συνδυασμό με - εκμετάλλευση των \textlatin{user namespaces}. Επιπλέον, συνίσταται να - μην εκτελούνται εφαρμογές με δικαιώματα διαχειριστικού λογαριασμού. - Μερικά ακόμα μέτρα προστασίας που μπορεί να παρθούν αλλά πιθανά να μην - είναι εφικτά γιατί ενδεχομένως να πηγαίνουν ενάντια στις λειτουργίες - του εκάστοτε δοχείου, είναι να τεθεί το σύστημα του σε επίπεδο - πρόσβασης που επιτρέπει μόνο την ανάγνωση των αρχείων, να - απενεργοποιηθεί η επικοινωνία μεταξύ δοχείων και να αποφευχθεί η - εγκατάσταση περιττών προγραμμάτων σε αυτά. - -\pagebreak + τεθεί υπό τον έλεγχο ενός κακόβουλου χρήστη, αυτός μπορεί δυνητικά να + πάρει τον έλεγχο του συστήματος και όλων των δοχείων αυτού. Ο τρόπος + αντιμετώπισης που προτείνεται είναι η χρήση SELinux ή AppArmor κατά την + εκτέλεση δοχείων σε συνδυασμό με εκμετάλλευση των user namespaces. + Επιπλέον, συνίσταται να μην εκτελούνται εφαρμογές με δικαιώματα + διαχειριστικού λογαριασμού. Μερικά ακόμα μέτρα προστασίας που μπορεί να + παρθούν αλλά πιθανώς να μην είναι εφικτά γιατί ενδεχομένως να πηγαίνουν + ενάντια στις λειτουργίες του εκάστοτε δοχείου, είναι να τεθεί το + σύστημα του σε επίπεδο πρόσβασης που επιτρέπει μόνο την ανάγνωση των + αρχείων, να απενεργοποιηθεί η επικοινωνία μεταξύ δοχείων και να + αποφευχθεί η εγκατάσταση περιττών προγραμμάτων σε αυτά. \item \textbf{Άρνηση υπηρεσίας}: @@ -1238,90 +1855,93 @@ Modules} όπως \textlatin{SELinux} και \textlatin{Apparmor} αλλά κα Αυτό μπορεί να συμβεί εάν ένα δοχείο βρεθεί υπό τον έλεγχο ενός επιτιθέμενου και επιχειρήσει να διεκδικήσει πόρους που κανονικά δε χρειάζεται. Για να ανταπεξέλθει ένα σύστημα σε μια επίθεση άρνησης - υπηρεσίας πρέπει να γίνει χρήση των δυνατοτήτων που αναφέραμε στο + υπηρεσίας, πρέπει να γίνει χρήση των δυνατοτήτων που αναφέραμε στο \ref{dockerAttackVectorMitigation} με σκοπό τον αυστηρότερο έλεγχο - διαμοιρασμού των πόρων του συστήματος. Με τον ορισμό διαθέσιμων πόρων - για κάθε δοχείο εξαρχής δεν υπάρχει κίνδυνος να προσπαθήσει κανένα να - διεκδικήσει περισσότερους. + διαμοιρασμού των πόρων του συστήματος. Με τον καθορισμό διαθέσιμων + πόρων για κάθε δοχείο εξαρχής, δεν υπάρχει κίνδυνος να προσπαθήσει + κάποιο δοχείο να διεκδικήσει περισσότερους. - \item \textbf{\textlatin{Container Breakouts}}: +\clearpage - Σε τέτοιου είδους επιθέσεις ένας επιτιθέμενος προσπαθεί αφού απέκτησε - πρόσβαση σε ένα δοχείο, να αποκτήσει και μέσω αυτού στα αρχεία του - κύριου συστήματος. Αυτό μπορούσε να συμβεί με τη χρήση μιας συνάρτησης - που απαιτούσε δικαιώματα διαχειριστικού λογαριασμού μέσα από το δοχείο - προκειμένου να κάνει κλήση ενός \textlatin{capability} στο οποίο είχε - πρόσβαση εξαρχής. Σύμφωνα με το \textlatin{Docker} η μόνη έκδοση που + \item \textbf{Αποδράσεις Δοχείων (Container Breakouts)}: + + Σε τέτοιου είδους επιθέσεις, ένας επιτιθέμενος προσπαθεί αφού απέκτησε + πρόσβαση σε ένα δοχείο, να καταφέρει μέσω αυτού να έχει πρόσβαση στα + αρχεία του κύριου συστήματος. Αυτό μπορεί να συμβεί με τη χρήση μιας + συνάρτησης που απαιτεί δικαιώματα διαχειριστικού λογαριασμού μέσα από + το δοχείο προκειμένου να κάνει κλήση μιας ικανότητας (capability) στην + οποία είχε πρόσβαση εξαρχής. Σύμφωνα με το Docker η μόνη έκδοση που είχε αυτή την ευπάθεια ήταν η 0.11 και στην επόμενη διορθώθηκε. Για την - πρόληψη μελλοντικών μεθόδων διεκπεραίωσης τέτοιου είδους επίθεσης + πρόληψη μελλοντικών μεθόδων διεκπεραίωσης τέτοιου είδους επίθεσης, συνίσταται να τίθενται τα δοχεία και οι αποθηκευτικοί τους χώροι σε - κατάσταση μονάχα ανάγνωσης όπως επίσης και να αποφεύγεται η χρήση της - παραμέτρου \textlatin{privileged}. + κατάσταση μονάχα ανάγνωσης, καθώς και να αποφεύγεται η χρήση της + παραμέτρου privileged. \item \textbf{Δηλητηριασμένες εικόνες δοχείων}: Οι εικόνες δοχείων μπορεί να περιέχουν κακόβουλο λογισμικό ή λογισμικό για το οποίο έχουν βρεθεί πλέον ευπάθειες. Ο τωρινός τρόπος ελέγχου εγκυρότητας τους βασίζεται μονάχα στην παρουσία ενός υπογεγραμμένου - \textlatin{manifest} αλλά δε γίνεται ποτέ αυθεντικοποίηση του - \textlatin{checksum} της κάθε εικόνας. Αυτό αφήνει ανοιχτό το - ενδεχόμενο ένας επιτιθέμενος να διαδώσει οποιαδήποτε εικόνα μαζί με το - υπογεγραμμένο \textlatin{manifest} της. Επιβάλλεται οι χρήστες να - κατεβάζουν εικόνες από εγκεκριμένους προμηθευτές ή ακόμα και να τις - ελέγχουν με κατάλληλα εργαλεία προτού τις χρησιμοποιήσουν. - -\pagebreak + manifest αλλά δε γίνεται ποτέ αυθεντικοποίηση του αθροίσματος ελέγχου + (checksum) της κάθε εικόνας. Αυτό αφήνει ανοιχτό το ενδεχόμενο ένας + επιτιθέμενος να διαδώσει οποιαδήποτε εικόνα μαζί με το υπογεγραμμένο + manifest της. Επιβάλλεται οι χρήστες να κατεβάζουν εικόνες από + εγκεκριμένους προμηθευτές και επιπρόσθετα να τις ελέγχουν με κατάλληλα + εργαλεία ανίχνευσης τρωτοτήτων προτού τις χρησιμοποιήσουν. \item \textbf{Απόκτηση μυστικών κωδικών/κλειδιών}: Η απόκτηση επιχειρησιακών ή προσωπικών μυστικών ελοχεύει πολλούς - κινδύνους για μια επιχείρηση. Σε περίπτωση που κάτι τέτοιο συμβεί ένας + κινδύνους για μια επιχείρηση. Σε περίπτωση που κάτι τέτοιο συμβεί, ένας επιτιθέμενος μπορεί να έχει πρόσβαση σε βάσεις δεδομένων ή άλλα κομμάτια του συστήματος απειλώντας έτσι την ακεραιότητα, την εμπιστευτικότητα και διαθεσιμότητα των δεδομένων. Προκειμένου να αποφευχθεί μια εισβολή σε κάποιο δοχείο που θα προκαλούσε την απόκτηση - τέτοιων μυστικών, καθίστατο επιτακτική η χρήση δοχείων σε κατάσταση + τέτοιων μυστικών, καθίσταται επιτακτική η χρήση δοχείων σε κατάσταση ανάγνωσης και όχι εγγραφής αλλά και η αποφυγή χρήσης μεταβλητών για την αποθήκευση κωδικών. Χρήσιμη επίσης θα ήταν και η εσκεμμένη παράλειψη - της παραμέτρου \textlatin{privileged}. + της παραμέτρου privileged. - \item \textbf{\textlatin{Man-in-the-Middle (MitM)}}: +\clearpage + + \item \textbf{Ενδιάμεσου (Man-in-the-Middle - MitM)}: Σε μια τέτοια επίθεση ένας κακόβουλος χρήστης προσπαθεί να μπει ανάμεσα στην επικοινωνία δύο οντοτήτων με σκοπό να αλλοιώσει, να υποκλέψει ή να παρακολουθεί πληροφορίες. Το καλύτερο αντίμετρο είναι η απομόνωση δικτύου. Πρέπει να γίνει ρύθμιση των δοχείων με τέτοιο τρόπο ώστε να μην έχουν πρόσβαση στη δικτυακή επικοινωνία του κύριου μηχανήματος ή - άλλων δοχείων. + άλλων δοχείων. Αυτά επιτυγχάνονται με χρήση network namespaces, καθώς + και με την ορθότερη ρύθμιση των API που χρησιμοποιεί το Docker για την + επικοινωνία μέσω δικτύου. - \item \textbf{\textlatin{ARP spoofing}}: + \item \textbf{Πλαστογράφηση ARP (ARP spoofing)}: - Σε μια \textlatin{Address Resource Protocol spoofing} επίθεση, ο - επιτιθέμενος επιχειρεί να \mbox{στείλει} ψεύτικα \textlatin{ARP} - μηνύματα σε ένα \textlatin{LAN}. Είναι πιθανό να προσποιηθεί πως η - συσκευή του είναι μια από τις συσκευές της επιχείρησης αλλάζοντας τη - \textlatin{MAC} διεύθυνση του στην \textlatin{IP} μιας συσκευής που το - σύστημα αναγνωρίζει. Επομένως, θα του συμπεριφέρεται όπως θα έκανε - κανονικά. Στέλνοντας σε αυτόν όλα τα πακέτα και τα δεδομένα που - προορίζονταν για την αληθινή συσκευή. Το \textlatin{Docker} - χρησιμοποιεί το \textlatin{ARP} για να κάνει την αντιστοίχιση - \textlatin{IPv4} σε \textlatin{MAC} διευθύνσεις οι οποίες - χρησιμοποιούνται από την εικονική γέφυρα δικτύου για να διανέμουν σωστά - τα \textlatin{Ethernet frames} αφού δεν υπάρχει φίλτρο για τα πακέτα - \textlatin{ARP} και επομένως κανένας μηχανισμός άμυνας. Γι'' αυτό τον - λόγο τα δοχεία μπορούν να προσποιηθούν ότι είναι άλλα δοχεία ή ακόμα - και το κύριο σύστημα. Στην περίπτωση παραβίασης ενός δοχείου υπάρχει - κίνδυνος ο επιτιθέμενος να υποκλέψει μυστικά της επιχείρησης ή των - τελικών χρηστών της υπηρεσίας που προσφέρει. Ένας από τους τρόπους για - την αποφυγή τέτοιας επίθεσης είναι η εκτέλεση δοχείων δίχως το - \textlatin{NET\_RAW capability} αφού έτσι τα προγράμματα μέσα στο - δοχείο δε θα μπορούν να δημιουργήσουν \textlatin{PF\_PACKET sockets} - και θα ήταν αδύνατη η διεκπεραίωση της επίθεσης. Βέβαια, αυτή η μέθοδος - έχει μειονεκτήματα αφού μπορεί αυτό το \textlatin{capability} να ήταν - άκρως απαραίτητο για την ορθή λειτουργία της υπηρεσίας. Επομένως, μια - ακόμα μέθοδος είναι η χρήση ````\textlatin{ebtables}'''' για - φιλτράρισμα \textlatin{Ethernet frames} ούτως ώστε \textlatin{ARP} - πακέτα με λάθος πρωτόκολλο αποστολέα ή διεύθυνση \textlatin{MAC} να - ανιχνεύονται εγκαίρως και να απορρίπτονται. + Σε μια Address Resource Protocol (ARP) spoofing επίθεση, ο επιτιθέμενος + επιχειρεί να στείλει ψεύτικα ARP μηνύματα σε ένα δίκτυο τοπικής + περιοχής (Local Area Network - LAN). Είναι πιθανό να προσποιηθεί πως η + συσκευή του είναι μια από τις συσκευές της επιχείρησης, αλλάζοντας τη + MAC διεύθυνση του στην IP μιας συσκευής που το σύστημα αναγνωρίζει. + Επομένως, το σύστημα της επιχείρησης, θα συμπεριφέρεται στην συσκευή + του επιτιθέμενου με τον ίδιο τρόπο που θα συμπεριφερόταν στην αυθεντική + συσκευή. Δηλαδή, στέλνοντας σε αυτόν όλα τα πακέτα και τα δεδομένα που + προορίζονταν για εκείνη. Το Docker χρησιμοποιεί το ARP για να κάνει την + αντιστοίχιση IPv4 σε MAC διευθύνσεις, οι οποίες χρησιμοποιούνται από + την εικονική γέφυρα δικτύου για να διανέμουν σωστά τα πλαίσια (frames) + Ethernet αφού δεν υπάρχει φίλτρο για τα πακέτα ARP και επομένως κανένας + μηχανισμός άμυνας. Γι' αυτό τον λόγο τα δοχεία μπορούν να προσποιηθούν + ότι είναι άλλα δοχεία ή ακόμα και το κύριο μηχάνημα. Στην περίπτωση + παραβίασης ενός δοχείου, υπάρχει κίνδυνος ο επιτιθέμενος να υποκλέψει + μυστικά της επιχείρησης ή των τελικών χρηστών της υπηρεσίας που η + επιχείρηση προσφέρει. Ένας από τους τρόπους για την αποφυγή τέτοιας + επίθεσης είναι η εκτέλεση δοχείων δίχως το NET\_RAW capability αφού + έτσι τα προγράμματα μέσα στο δοχείο δε θα μπορούν να δημιουργήσουν + PF\_PACKET sockets και θα ήταν αδύνατη η διεκπεραίωση της επίθεσης. + Βέβαια, αυτή η μέθοδος έχει μειονεκτήματα αφού μπορεί αυτή η ικανότητα + να ήταν άκρως απαραίτητη για την ορθή λειτουργία της υπηρεσίας. + Επομένως, μια εναλλακτική μέθοδος προστασίας είναι η χρήση + \textquote{ebtables} για φιλτράρισμα Ethernet frames ούτως ώστε ARP + πακέτα με λάθος πρωτόκολλο αποστολέα ή διεύθυνση MAC να ανιχνεύονται + εγκαίρως και να απορρίπτονται. \end{itemize} diff --git a/Chapters/3.RelevantWork.tex b/Chapters/3.RelevantWork.tex index 4f3eca6..762ed78 100644 --- a/Chapters/3.RelevantWork.tex +++ b/Chapters/3.RelevantWork.tex @@ -1,8 +1,24 @@ \chapter{Σχετικές Εργασίες} \label{relevantWork} Με την πάροδο των χρόνων και τη ραγδαία αύξηση ενδιαφέροντος προς τον κλάδο της -υπολογιστικής νέφους, άρχισε να γίνεται όλο και σημαντικότερη η ανάγκη -προστασίας των υποδομών των επιχειρήσεων. Πλέον, οι περισσότερες υπηρεσίες που -διατίθενται στους χρήστες κάνουν χρήση τεχνολογιών εικονικοποίησης ή/και -δοχείων. Όμως όλες είναι εν δυνάμει ευάλωτες σε επιθέσεις εάν δε ληφθούν τα -απαραίτητα μέτρα προστασίας και αφήσουν ανοιχτά σημεία εισόδου στο δίκτυο τους. +υπολογιστικής νέφους, άρχισε να γίνεται όλο και πιο επιτακτική η ανάγκη για +αυτοματοποιημένο στήσιμο και προστασία των υποδομών των επιχειρήσεων. Η χρήση +τεχνολογιών εικονικοποίησης και η άνοδος υπηρεσιών IaaS, έχει ελαφρύνει τον +φόρτο εργασίας όσον αφορά το στήσιμο των υποδομών αφού πλέον υπάρχουν πολλά +εργαλεία στα οποία γίνεται καθορισμός τους. Η αυτοματοποίηση της ασφάλισης τους +όμως είναι ακόμα σε πρώιμο στάδιο. Οι περισσότερες υπηρεσίες που διατίθενται +στους χρήστες κάνουν χρήση τεχνολογιών εικονικοποίησης έμμεσα από τον πάροχο +νέφους που χρησιμοποιούν και τεχνολογίες δοχείων άμεσα από επιλογή τους λόγω +της υπεροχής που παρέχουν στη διαχείριση. Όλες οι υπηρεσίες όμως είναι εν +δυνάμει ευάλωτες σε επιθέσεις εάν δε ληφθούν τα απαραίτητα μέτρα προστασίας και +αφήσουν ανοιχτά σημεία εισόδου στο δίκτυο τους. + +Η παρούσα εργασία έχει ως στόχο την ανάπτυξη ενός εργαλείου που επιτυγχάνει την +αυτοματοποίηση τριών τομέων. Την επικοινωνία με τον πάροχο νέφους για την +αίτηση διάθεσης υπολογιστικών πόρων, την ασφάλιση των πόρων αυτών και τέλος την +εγκατάσταση, ασφάλιση και χρήση του Docker για τη διάθεση εφαρμογών που +βρίσκονται στο Dockerhub. Το επίσημο αποθετήριο του Docker. + +Στην παρούσα ενότητα θα γίνει αναφορά σε εργαλεία που έχουν αναπτυχθεί για έναν +ή παραπάνω από αυτούς τους τρεις τομείς και θα πραγματοποιηθεί σύγκριση τους +ανάλογα με τον τρόπο λειτουργίας τους και τις δυνατότητες που παρέχουν. diff --git a/Chapters/4.ProjectDevelopment.tex b/Chapters/4.ProjectDevelopment.tex index fa69b8d..6826595 100644 --- a/Chapters/4.ProjectDevelopment.tex +++ b/Chapters/4.ProjectDevelopment.tex @@ -1,3 +1,3 @@ \chapter{Ανάπτυξη Συστήματος} \label{projectDevelopment} -\section{Αρχές και Πλαίσιο Σχεδίασης για ασφαλές στήσιμο υπηρεσιών σε μια ιδεατή μηχανή με χρήση της τεχνολογίας \textlatin{Docker}} \label{framework} +\section{Αρχές και Πλαίσιο Σχεδίασης για ασφαλές στήσιμο υπηρεσιών σε μια ιδεατή μηχανή με χρήση της τεχνολογίας Docker} \label{framework} diff --git a/Chapters/5.ProjectShowcase.tex b/Chapters/5.ProjectShowcase.tex index 31245b7..2e2a965 100644 --- a/Chapters/5.ProjectShowcase.tex +++ b/Chapters/5.ProjectShowcase.tex @@ -1,3 +1,3 @@ -\chapter{Εγκατάσταση \& Επίδειξη του εργαλείου \textlatin{SecDep}} \label{installationANDShowcase} +\chapter{Εγκατάσταση \& Επίδειξη του εργαλείου SecDep} \label{installationANDShowcase} \section{Υλοποίηση και Συστατικά Μέρη} \label{platform} diff --git a/Declaration/declaration.tex b/Declaration/declaration.tex new file mode 100644 index 0000000..1689348 --- /dev/null +++ b/Declaration/declaration.tex @@ -0,0 +1,33 @@ +\Declaration{ +\thispagestyle{empty} % also skip displaying numbering on this page +\addtocontents{toc}{\vspace{1em}} % Add a gap in the Contents, for aesthetics + +\noindent Εγώ, ο Χωλίδης Κωνσταντίνος, δηλώνω ότι αυτή η διπλωματική εργασία με +τίτλο, Σκλήρυνση Μηχανής Δοχείων και Λειτουργικού Συστήματος σε Περιβάλλοντα +Linux, και η δουλειά που παρουσιάζεται σε αυτή είναι δικά μου. Επιβεβαιώνω ότι: + +\begin{itemize} +\item[\tiny{$\blacksquare$}] Αυτή η δουλειά πραγματοποιήθηκε ολοκληρωτικά ή κυρίως κατά την υποψηφιότητά μου για τίτλο προπτυχιακών σπουδών σε αυτό το πανεπιστήμιο. + +\item[\tiny{$\blacksquare$}] Όπου οποιοδήποτε μέρος αυτής της πτυχιακής εργασίας έχει προηγουμένως κατατεθεί για την απόκτηση πτυχίου ή άλλου τίτλου σε αυτό ή άλλο πανεπιστήμιο, αυτό διατυπώνεται ξεκάθαρα. + +\item[\tiny{$\blacksquare$}] Όπου έχω συμβουλευτεί την δημοσιευμένη δουλειά τρίτων, αυτό αποδίδεται ορθώς. + +\item[\tiny{$\blacksquare$}] Όπου έχω παραθέσει από δουλειά τρίτων, η πηγή δίνεται πάντα. Με εξαίρεση αυτές τις παραθέσεις, αυτή η πτυχιακή εργασία είναι εξ ολοκλήρου προσωπική μου δουλειά. + +\item[\tiny{$\blacksquare$}] Έχω παραθέσει όλες τις κύριες πηγές βοήθειας. + +\item[\tiny{$\blacksquare$}] Όπου αυτή η πτυχιακή εργασία είναι βασισμένη σε συνεργατική δουλειά δική μου και τρίτων, έχω καταστήσει ξεκάθαρο ποια κομμάτια έχουν πραγματοποιηθεί από άλλους και πώς συνέβαλα εγώ. +% Alternative to "\\" without the "Underfull \hbox (badness 10000) in paragraph" error +\vspace{\baselineskip} +\end{itemize} + +\vfill\vfill + +Υπογραφή:\\ +\rule[1em]{25em}{0.5pt} % This prints a line for the signature + +Ημερομηνία:\\ +\rule[1em]{25em}{0.5pt} % This prints a line to write the date +} +\clearpage % Declaration ended, now start a new page diff --git a/Figures/Enisa/enisaThreats.jpg b/Figures/Enisa/enisaThreats.jpg new file mode 100644 index 0000000..06a19aa Binary files /dev/null and b/Figures/Enisa/enisaThreats.jpg differ diff --git a/Figures/Enisa/enisaThreatsOLD.jpg b/Figures/Enisa/enisaThreatsOLD.jpg new file mode 100644 index 0000000..4f9a09e Binary files /dev/null and b/Figures/Enisa/enisaThreatsOLD.jpg differ diff --git a/Figures/TutorialsPoint_Virtualization/tutorialspoint_application_virtualization.jpg b/Figures/TutorialsPoint_Virtualization/tutorialspoint_application_virtualization.jpg new file mode 100644 index 0000000..7f96d8c Binary files /dev/null and b/Figures/TutorialsPoint_Virtualization/tutorialspoint_application_virtualization.jpg differ diff --git a/Figures/UnixArena_Virtualization/unixarena_storage_virtualization.png b/Figures/UnixArena_Virtualization/unixarena_storage_virtualization.png new file mode 100644 index 0000000..28284e2 Binary files /dev/null and b/Figures/UnixArena_Virtualization/unixarena_storage_virtualization.png differ diff --git a/Figures/VMWARE_Virtualization/vmware_memory_virtualization.png b/Figures/VMWARE_Virtualization/vmware_memory_virtualization.png new file mode 100644 index 0000000..7e14245 Binary files /dev/null and b/Figures/VMWARE_Virtualization/vmware_memory_virtualization.png differ diff --git a/SettingsAndPackages/formatsAndDefs.tex b/SettingsAndPackages/formatsAndDefs.tex new file mode 100644 index 0000000..370ae38 --- /dev/null +++ b/SettingsAndPackages/formatsAndDefs.tex @@ -0,0 +1,166 @@ +\graphicspath{Figures/} % Location of the graphics files (set up for graphics to be in PDF format) + +\usepackage[final]{microtype} % Improves character and word spacing + +% Redifine how ' appears with current font + +% In order to quote, better use \textquote{quote} instead of 'quote' since it +% already did not work correctly with current font + +%Math mode is not supported and will still print ’ instead of ' unless you +%invoke \prime for an almost correct result + +\catcode`\'=\active +\def'{’} + +% Table configuration packages +% Extending the array and tabular environments, Enhanced support for graphics +\usepackage{array,graphicx} +% Publication quality tables in LaTeX +\usepackage{booktabs} +% Access to PostScript standard Symbol and Dingbats fonts +\usepackage{pifont} +% Flexible LaTeX tabulars +\usepackage{tabu} +% Allow tables to flow over page boundaries +\usepackage{longtable} +% Driver-independent color extensions for LaTeX and pdfLaTeX +\usepackage{xcolor} +% Coloured boxes, for LaTeX examples and theorems, etc +\usepackage{tcolorbox} +% LaTeX support for the Text Companion fonts +\usepackage{textcomp} + +% Select alternative section titles (Better chapter, section and subsection titles) +\usepackage{titlesec} +% Somehow messes up indentfirst for chapters only where it didn't before +\titleformat{\chapter}[block]{\huge\bfseries\centering}{\chaptertitlename\ \thechapter.}{0.5em}{} % frame is also good as opposed to block +\titleformat{\section}[hang]{\large\bfseries}{\thesection}{0.5em}{} +\titleformat{\subsection}[hang]{\normalsize\bfseries}{\thesubsection}{0.5em}{} +\titleformat{\subsubsection}[hang]{\normalsize\bfseries}{\thesubsubsection}{0.5em}{} +\titlespacing{\chapter}{-5pt}{-1cm}{1cm} % How low the chapter title is +% Better formatting of the chapter names in the table of contents +\usepackage{titletoc} +% \newcommand{\chaptitlefont}[1]{{\bfseries\Large #1}} + +% Bellow is the same as the default settings but with : between the number and the title +\titlecontents{chapter}% level to be modified + [0pt]{\addvspace{0.3cm}}% + {\textsc{\hspace{0cm}\normalsize\bfseries \thecontentslabel: }\normalsize\bfseries\chaptitlefont} + {\normalsize\bfseries}% for star chapters + {\hfill\bfseries\contentspage} + [\addvspace{.2pc}]% + +\PolyglossiaSetup{greek}{indentfirst=false} % Do not indent first paragraph + +% Intermix single and multiple columns +\usepackage{multicol} +% Context sensitive quotation facilities +\usepackage{csquotes} % Recommended with babel by biblatex +% make \textquote add quotation marks as “…” +\DeclareQuoteStyle{greek}{\textquotedblleft}{\textquotedblright}{\textquoteleft}{\textquoteright} +% Improve on LaTeX's footnote handling +\usepackage{footnote} % For footcite in tables +% A range of footnote options +\usepackage[bottom]{footmisc} % For footcite to be at the bottom of the page +% \fancyhfinit{\mdseries\rmfamily} % Header font + +% Fix caption font +\usepackage{caption} +\DeclareCaptionFont{myfont}{\selectlanguage{greek}\selectfont} +\captionsetup{textfont=myfont} + +\makeatother + +% Include any extra LaTeX packages required +% biblatex because it has foocite built-in +% Sophisticated Bibliographies in LaTeX +\usepackage[backend=biber,style=trad-abbrv,backref=true,autocite=plain,sorting=none,natbib=true]{biblatex} % Use the "Natbib" style for the references in the Bibliography + +\DefineBibliographyStrings{greek}{ + backrefpage={Αναφορά στη σελίδα}, + backrefpages={Αναφορά στις σελίδες}, +} + +%%% Print url and doi in a new line when on the bibliography page +\newbibmacro*{bbx:parunit}{% + \ifbibliography + {\setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \clearlist{pageref}% + \setunit{\adddot\par\nobreak}} + {}} + +\renewbibmacro*{doi+eprint+url}{% + \usebibmacro{bbx:parunit}% Added + \iftoggle{bbx:doi} + {\printfield{doi}} + {}% + \iftoggle{bbx:eprint} + {\usebibmacro{eprint}} + {}% + \iftoggle{bbx:url} + {\usebibmacro{url+urldate}} + {}} + +\renewbibmacro*{eprint}{% + \usebibmacro{bbx:parunit}% Added + \iffieldundef{eprinttype} + {\printfield{eprint}} + {\printfield[eprint:\strfield{eprinttype}]{eprint}}} + +\renewbibmacro*{url+urldate}{% + \usebibmacro{bbx:parunit}% Added + \printfield{url}% + \iffieldundef{urlyear} + {} + {\setunit*{\addspace}% + \printtext[urldate]{\printurldate}}} +%%% + +%%%% + +% \newbibmacro*{cite:ibid}{% +% \printtext{% +% \bibhyperlink{cite\csuse{cbx@lastcite@\thefield{entrykey}}}{% +% \bibstring[\mkibid]{ibidem}}}% +% \ifloccit +% {\global\toggletrue{cbx:loccit}} +% {}} +% +% \renewbibmacro*{cite:ibid}{% +% \printtext{% +% \bibhyperlink{cite\csuse{cbx@lastcite@\thefield{entrykey}}}{% +% \ifloccit +% {\bibstring[\mkibid]{ibidem}% +% \global\toggletrue{cbx:loccit}} +% {\bibstring[\mkibid]{idem\thefield{gender}}}}}} + +%%%% + +\addbibresource{Bibliography.bib} % The references (bibliography) information are stored in the file named "Bibliography.bib" + +% Reimplementation of and extensions to LaTeX verbatim +\usepackage{verbatim} % Needed for the "comment" environment to make LaTeX comments +% Improved interface for floating objects +\usepackage{float} % To keep figures in place +% Make sure to load hyperref last of your loaded packages, and that hypertexnames is true so +% that bibliography backreferences work properly. +\AtEndPreamble{\RequirePackage{hyperref}} +\hypersetup{hypertexnames=true, urlcolor=black, colorlinks=false, pdfborder = {0 0 0}} % Colours hyperlinks in blue +% Define enumerated description lists +% Control layout of itemize, enumerate, description +\usepackage{enumitem} +\newcounter{descriptcount} +\newcounter{descriptcount2} +\newlist{enumdescript}{description}{2} +\setlist[enumdescript,1]{% + before={\setcounter{descriptcount}{0}% + \renewcommand*\thedescriptcount{\arabic{descriptcount}.}} + ,font=\bfseries\stepcounter{descriptcount}\thedescriptcount~ +} +\setlist[enumdescript,2]{% + before={\setcounter{descriptcount2}{0}% + \renewcommand*\thedescriptcount{\roman{descriptcount2}.}} + ,font=\bfseries\stepcounter{descriptcount2}\thedescriptcount~ +} diff --git a/Thesis.cls b/Thesis.cls index fc581da..5922760 100644 --- a/Thesis.cls +++ b/Thesis.cls @@ -3,10 +3,6 @@ %% generated with the docstrip utility. %% %% Created by Steve R. Gunn, modified by Sunil Patel: www.sunilpatel.co.uk -\usepackage[utf8]{inputenc} -\usepackage[greek]{babel} -\usepackage{alphabeta} -\usepackage[LGR, T1]{fontenc} \NeedsTeXFormat{LaTeX2e}[1996/12/01] \ProvidesClass{Thesis} @@ -27,19 +23,32 @@ \PassOptionsToClass{a4paper}{\baseclass} \ProcessOptions\relax \LoadClass{\baseclass} + +\usepackage{polyglossia} +\usepackage{fontspec} +\defaultfontfeatures{Ligatures=TeX} +\setmainfont{CMU Serif} +\setsansfont{CMU Sans Serif} +\setmonofont{CMU Typewriter Text} +\setdefaultlanguage{greek} +\newfontfamily\greekfont[Script=Greek]{CMU Serif} +\setotherlanguage{english} +% Fixes the wrong λ in some places like bibliography where we need textenglish for hyphenation rules +\newfontfamily\englishfont[Script=Greek]{CMU Serif} + \newcommand\bhrule{\typeout{------------------------------------------------------------------------------}} \newcommand\Declaration[1]{ \btypeout{Declaration of Authorship} \addtotoc{Δήλωση Συγγραφικής Ιδιότητας} \thispagestyle{plain} -\null\vfil -%\vskip 60\p@ -\begin{center}{\huge\bf Δήλωση Συγγραφικής Ιδιότητας \par}\end{center} -%\vskip 60\p@ +% \null\vfil +% \vskip 60\p@ +\begin{center}{\huge\textbf Δήλωση Συγγραφικής Ιδιότητας \par}\end{center} +\vskip 50\p@ {\normalsize #1} \vfil\vfil\null -%\cleardoublepage +% \cleardoublepage } \newcommand\btypeout[1]{\bhrule\typeout{\space #1}\bhrule} @@ -49,12 +58,12 @@ \space \number\year} \usepackage{setspace} \onehalfspacing -\setlength{\parindent}{0pt} +\setlength{\parindent}{20pt} % Changed from 0pt \setlength{\parskip}{2.0ex plus0.5ex minus0.2ex} \usepackage{vmargin} -\setmarginsrb { 1.5in} % left margin +\setmarginsrb { 0.9in} % left margin % changed from 1.5in { 0.6in} % top margin - { 1.0in} % right margin + { 0.8in} % right margin % changed from 1.0in { 0.8in} % bottom margin { 20pt} % head height {0.25in} % head sep @@ -94,12 +103,12 @@ \newtheorem{remark}[theorem]{Remark} \usepackage[centerlast,small,sc]{caption} \setlength{\captionmargin}{20pt} -\newcommand{\fref}[1]{Figure~\ref{#1}} -\newcommand{\tref}[1]{Table~\ref{#1}} -\newcommand{\eref}[1]{Equation~\ref{#1}} -\newcommand{\cref}[1]{Chapter~\ref{#1}} -\newcommand{\sref}[1]{Section~\ref{#1}} -\newcommand{\aref}[1]{Appendix~\ref{#1}} +% \newcommand{\fref}[1]{Figure~\ref{#1}} +% \newcommand{\tref}[1]{Table~\ref{#1}} +% \newcommand{\eref}[1]{Equation~\ref{#1}} +% \newcommand{\cref}[1]{Chapter~\ref{#1}} +% \newcommand{\sref}[1]{Section~\ref{#1}} +% \newcommand{\aref}[1]{Appendix~\ref{#1}} \renewcommand{\topfraction}{0.85} \renewcommand{\bottomfraction}{.85} \renewcommand{\textfraction}{0.1} @@ -111,7 +120,6 @@ \setcounter{totalnumber}{20} \setcounter{dbltopnumber}{9} \usepackage{graphicx} -\usepackage{epstopdf} \usepackage[scriptsize]{subfigure} \usepackage{booktabs} \usepackage{rotating} @@ -187,16 +195,16 @@ \let \footnote \thanks \setcounter{footnote}{0} \null\vfil - \vskip 60\p@ + \vskip 0\p@ \begin{center} \begin{figure} \centering - \includegraphics[scale=0.2]{Figures/aegean_logo} + \includegraphics[scale=0.15]{Figures/aegean_logo} \end{figure} \setlength{\parskip}{0pt} {\large\textbf{\UNIVNAME}\par} \vfill - {\huge \bf \@title \par} + {\huge \textbf \@title \par} \vfill {\LARGE του \par} \smallskip @@ -251,7 +259,7 @@ \bigskip {\normalsize Προπτυχιακός Τίτλος Σπουδών\par} \bigskip - {\normalsize\bf \@title \par} + {\normalsize\bfseries \@title \par} \medskip {\normalsize του \authornames \par} \bigskip diff --git a/Thesis.tex b/Thesis.tex index 47e81e1..5c7ca63 100644 --- a/Thesis.tex +++ b/Thesis.tex @@ -3,48 +3,9 @@ %% ---------------------------------------------------------------- % Set up the document -\documentclass[a4paper, 11pt, oneside]{Thesis} % Use the "Thesis" style, based on the ECS Thesis style by Steve Gunn -\graphicspath{Figures/} % Location of the graphics files (set up for graphics to be in PDF format) -% Table configuration packages -\usepackage{array,graphicx} -\usepackage{booktabs} -\usepackage{pifont} -\usepackage{tabu} -\usepackage{longtable} -\usepackage{xcolor} -\usepackage{tcolorbox} -\usepackage{textcomp} -% Υποστήριξη για ελληνικά -\usepackage[utf8]{inputenc} -\usepackage[greek]{babel} -\usepackage{alphabeta} -\usepackage[LGR, T1]{fontenc} -\usepackage{multicol} - -\makeatother - -% Include any extra LaTeX packages required -\usepackage[square, numbers, comma, sort, compress]{natbib} % Use the "Natbib" style for the references in the Bibliography -\usepackage{verbatim} % Needed for the "comment" environment to make LaTeX comments -\usepackage{float} % To keep figures in place -\hypersetup{urlcolor=black, colorlinks=false, pdfborder = {0 0 0}} % Colours hyperlinks in blue -% Define enumerated description lists -\usepackage{enumitem} -\newcounter{descriptcount} -\newcounter{descriptcount2} -\newlist{enumdescript}{description}{2} -\setlist[enumdescript,1]{% - before={\setcounter{descriptcount}{0}% - \renewcommand*\thedescriptcount{\arabic{descriptcount}.}} - ,font=\bfseries\stepcounter{descriptcount}\thedescriptcount~ -} -\setlist[enumdescript,2]{% - before={\setcounter{descriptcount2}{0}% - \renewcommand*\thedescriptcount{\roman{descriptcount2}.}} - ,font=\bfseries\stepcounter{descriptcount2}\thedescriptcount~ -} - +\documentclass[a4paper, 12pt, oneside]{Thesis} % Use the "Thesis" style, based on the ECS Thesis style by Steve Gunn +\input{SettingsAndPackages/formatsAndDefs} % Include settings and custom commands %% ---------------------------------------------------------------- \begin{document} @@ -54,7 +15,7 @@ %\pagenumbering{arabic} % Set up the Title Page -\title {Σκλήρυνση Μηχανής Δοχείων και Λειτουργικού Συστήματος σε Περιβάλλοντα \textlatin{Linux}} +\title{Σκλήρυνση Μηχανής Δοχείων και Λειτουργικού Συστήματος σε Περιβάλλοντα Linux} \authors {\texorpdfstring {\href{mailto:icsd16221@aegean.gr}{Χωλίδης Κωνσταντίνος - 321/2016221}} @@ -63,7 +24,7 @@ \addresses {\groupname\\\deptname\\\univname} % Do not change this here, instead these must be set in the "Thesis.cls" file, please look through it instead \date {Σάμος, Ιούλιος 2022} \subject {} -\keywords {} +\keywords {docker, linux, security, virtualization, cloud, hardening, containers, virtual machines} \maketitle @@ -80,36 +41,8 @@ %% ---------------------------------------------------------------- % Declaration Page required for the Thesis, your institution may give you a different text to place here -\Declaration{ -\addtocontents{toc}{\vspace{1em}} % Add a gap in the Contents, for aesthetics - -Εγώ, ο Χωλίδης Κωνσταντίνος, δηλώνω ότι αυτή η διπλωματική εργασία με τίτλο, Σκλήρυνση Μηχανής Δοχείων και Λειτουργικού Συστήματος σε Περιβάλλοντα \textlatin{Linux}, και η δουλειά που παρουσιάζεται σε αυτή είναι δικά μου. Επιβεβαιώνω ότι: - -\begin{itemize} -\item[\tiny{$\blacksquare$}] Αυτή η δουλειά πραγματοποιήθηκε ολοκληρωτικά ή κυρίως κατά την υποψηφιότητά μου για τίτλο προπτυχιακών σπουδών σε αυτό το πανεπιστήμιο. - -\item[\tiny{$\blacksquare$}] Όπου οποιοδήποτε μέρος αυτής της πτυχιακής εργασίας έχει προηγουμένως κατατεθεί για την απόκτηση πτυχίου ή άλλου τίτλου σε αυτό ή άλλο πανεπιστήμιο, αυτό διατυπώνεται ξεκάθαρα. - -\item[\tiny{$\blacksquare$}] Όπου έχω συμβουλευτεί την δημοσιευμένη δουλειά τρίτων, αυτό αποδίδεται ορθώς. - -\item[\tiny{$\blacksquare$}] Όπου έχω παραθέσει από δουλειά τρίτων, η πηγή δίνεται πάντα. Με εξαίρεση αυτές τις παραθέσεις, αυτή η πτυχιακή εργασία είναι εξ ολοκλήρου προσωπική μου δουλειά. - -\item[\tiny{$\blacksquare$}] Έχω παραθέσει όλες τις κύριες πηγές βοήθειας. - -\item[\tiny{$\blacksquare$}] Όπου αυτή η πτυχιακή εργασία είναι βασισμένη σε συνεργατική δουλειά δική μου και τρίτων, έχω καταστήσει ξεκάθαρο ποια κομμάτια έχουν πραγματοποιηθεί από άλλους και πώς συνέβαλα εγώ. -% Alternative to "\\" without the "Underfull \hbox (badness 10000) in paragraph" error -\vspace{\baselineskip} -\end{itemize} - - -Υπογραφή:\\ -\rule[1em]{25em}{0.5pt} % This prints a line for the signature - -Ημερομηνία:\\ -\rule[1em]{25em}{0.5pt} % This prints a line to write the date -} -\clearpage % Declaration ended, now start a new page +\input{Declaration/declaration} % Include the declaration page %% ---------------------------------------------------------------- % The "Funny Quote Page" @@ -117,10 +50,10 @@ \null\vfill % Now comes the "Funny Quote", written in italics -\textit{\textlatin{Απόφθεγμα (προαιρετικό)}} +\textquote{\textit{UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity.}} \begin{flushright} -\textlatin{Συγγραφέας Αποφθέγματος} +Dennis Ritchie (1941 - 2011) \end{flushright} \vfill\vfill\vfill\vfill\vfill\vfill\null @@ -128,37 +61,9 @@ %% ---------------------------------------------------------------- % The Abstract Page -\addtotoc{Σύνοψη} % Add the "Abstract" page entry to the Contents -\abstract{ -\addtocontents{toc}{\vspace{1em}} % Add a gap in the Contents, for aesthetics -Τη σήμερον ημέρα όλο και περισσότερος κόσμος βασίζεται πλέον σε υπηρεσίες τύπου -\textlatin{IaaS} έναντι των παραδοσιακών \textlatin{Server Room} για τις -υποδομές υπηρεσιών. Αυτό συμβαίνει διότι κατ'' αυτό τον τρόπο μειώνονται τα -λειτουργικά έξοδα μιας και δεν υπάρχει ανάγκη δαπάνης για την αγορά εξοπλισμού -για την έναρξη διάθεσης της εκάστοτε υπηρεσίας αλλά είναι πλέον δυνατό να -κλιμακωθεί ανάλογα με τις ανάγκες των χρηστών της υπηρεσίας που προσφέρεται με -μια απλή και γρήγορη επανεκκίνηση της εικονικής μηχανής χρησιμοποιώντας νέες -παραμέτρους. Με αυτόν τον τρόπο μεταβιβάζεται η ευθύνη της συντήρησης -εξοπλισμού σε τρίτους αλλά ταυτόχρονα εισάγεται ένα καινούριο μοντέλο -εμπιστοσύνης ανάμεσα όχι μόνο στον χρήστη και τον πάροχο νέφους αλλά και αυτόν -που παρέχει τις πολλές φορές προ ρυθμισμένες διανομές \textlatin{Linux} σε -αυτόν. +\input{Abstract/abstract} % Include the abstract page -Στην παρούσα εργασία θα αναλύσουμε τις τρωτότητες μιας ιδεατής μηχανής και -τρόπους για την αντιμετώπισή τους. Έπειτα θα μιλήσουμε για την τεχνολογία -\textlatin{Docker} και το πως μπορεί να γίνει χρήση της με μεγαλύτερη ασφάλεια. -Ο σκοπός της εργασίας είναι η δημιουργία ενός εργαλείου που θα μπορεί όχι μόνο -να δημιουργεί ιδεατές μηχανές κατά μήκος πολλών παρόχων νέφους αλλά και να τις -σκληραίνει με έναν αυτοματοποιημένο τρόπο. Επιπροσθέτως θα εγκαθιστά σε αυτές -τη μηχανή δοχείων \textlatin{Docker} την οποία επίσης θα σκληραίνει με σκοπό το -εύκολο στήσιμο υπηρεσιών με ασφαλή τρόπο για οποιονδήποτε χρήστη ανεξαρτήτως -επιπέδου γνώσεων στον τομέα της ασφάλειας και των λειτουργικών συστημάτων τύπου -\textlatin{Unix}. - -} - -\clearpage % Abstract ended, start a new page %% ---------------------------------------------------------------- \setstretch{1.3} % Reset the line-spacing to 1.3 for body text (if it has changed) @@ -169,37 +74,30 @@ Εδώ γράφονται οι ευχαριστίες. - } \clearpage % End of the Acknowledgements %% ---------------------------------------------------------------- \pagestyle{fancy} %The page style headers have been "empty" all this time, now use the "fancy" headers as defined before to bring them back - %% ---------------------------------------------------------------- -\lhead{\emph{Περιεχόμενα}} % Set the left side page header to "Contents" +% Changed all \emph to \textgreek to get the corrext font +\lhead{\textgreek{Περιεχόμενα}} % Set the left side page header to "Contents" \tableofcontents % Write out the Table of Contents %% ---------------------------------------------------------------- -\lhead{\emph{Κατάλογος Σχημάτων}} % Set the left side page header to "List if Figures" + +\lhead{\textgreek{Κατάλογος Σχημάτων}} % Set the left side page header to "List if Figures" \listoffigures % Write out the List of Figures %% ---------------------------------------------------------------- -\lhead{\emph{Κατάλογος Πινάκων}} % Set the left side page header to "List of Tables" +\lhead{\textgreek{Κατάλογος Πινάκων}} % Set the left side page header to "List of Tables" \listoftables % Write out the List of Tables %% ---------------------------------------------------------------- -\setstretch{1.5} % Set the line spacing to 1.5, this makes the following tables easier to read -\clearpage % Start a new page -\lhead{\emph{Συντομογραφίες}} % Set the left side page header to "Abbreviations" -\listofsymbols{ll} % Include a list of Abbreviations (a table of two columns) -{ -% \textbf{Acronym} & \textbf{W}hat (it) \textbf{S}tands \textbf{F}or \\ -% Εδώ μπαίνουν οι συντομογραφίες -} -\lhead{} +\input{Abbreviations/abbreviations} % Include a list of abbreviations (a table of two columns) + %% ---------------------------------------------------------------- % End of the pre-able, contents and lists of things % Begin the Dedication page @@ -211,7 +109,6 @@ \addtocontents{toc}{\vspace{2em}} % Add a gap in the Contents, for aesthetics - %% ---------------------------------------------------------------- \mainmatter % Begin normal, numeric (1,2,3...) page numbering \pagestyle{fancy} % Return the page headers back to the "fancy" style @@ -225,16 +122,14 @@ \input{Chapters/3.RelevantWork} % Relevant Work -\input{Chapters/4.ProjectDevelopment} % Framework +\input{Chapters/4.ProjectDevelopment} % Project Development -\input{Chapters/5.ProjectShowcase} % Project +\input{Chapters/5.ProjectShowcase} % Project Showcase -\input{Chapters/6.Experimentation} % Experiment 2 +\input{Chapters/6.Experimentation} % Metrics \input{Chapters/7.Conclusions} % Results and Discussion -%\input{Chapters/Chapter7} % Conclusion - %% ---------------------------------------------------------------- % Now begin the Appendices, including them as separate files @@ -248,14 +143,22 @@ \addtocontents{toc}{\vspace{2em}} % Add a gap in the Contents, for aesthetics - %% ---------------------------------------------------------------- \label{Bibliography} -\lhead{\emph{Βιβλιογραφία}} % Change the left side page header to "Bibliography" -\bibliographystyle{ACM-Reference-Format} -% \bibliographystyle{unsrtnat} % Use the "unsrtnat" BibTeX style for formatting the Bibliography -\textlatin{ -\bibliography{Bibliography} % The references (bibliography) information are stored in the file named "Bibliography.bib" +\lhead{\textgreek{Βιβλιογραφία}} % Change the left side page header to "Bibliography" +\renewcommand*{\bibfont}{\textbf\small} % Have the correct font + +% So far the settings bellow in conjunction with the microtype package fix the overflow and underflow of the bibliography + +% If you want to break on URL numbers +\setcounter{biburlnumpenalty}{9000} +% If you want to break on URL lower case letters +\setcounter{biburllcpenalty}{9000} +% If you want to break on URL UPPER CASE letters +\setcounter{biburlucpenalty}{9000} + +\textenglish{ % Majority of the bibliography is in english so we need the english hyphenation +\printbibliography[title={Βιβλιογραφία}] } \end{document} % The End %% ----------------------------------------------------------------