This commit is contained in:
2024-01-22 00:58:29 +02:00
parent 3834027f08
commit 957ab81b66
7 changed files with 388 additions and 400 deletions

View File

@@ -1,7 +1,7 @@
\chapter{Ανάπτυξη Συστήματος} \label{projectDevelopment}
\noindent Στην παρούσα ενότητα θα αναλυθούν οι τεχνολογίες που χρησιμοποιήθηκαν
για την υλοποίηση του συστήματος, οι αποφάσεις που πάρθηκαν κατά την ανάπτυξη
για την υλοποίηση του συστήματος, οι αποφάσεις που πάρθηκαν κατά την ανάπτυξή
του και οι σχεδιαστικές επιλογές που έγιναν. Επίσης, θα πραγματοποιηθεί
απεικόνιση των συσχετίσεων μεταξύ των συστατικών του συστήματος και θα αναλυθεί
περαιτέρω η λειτουργία τους.
@@ -23,18 +23,18 @@
εργαλείου και των παρόχων νέφους, οφείλεται στο γεγονός ότι οι πάροχοι νέφους
δεν διαθέτουν ένα κοινό API για την διαχείριση των υποδομών τους. Απεναντίας, ο
καθένας από αυτούς διαθέτει το δικό του API, το οποίο χρησιμοποιείται έμμεσα
μέσω του πίνακα ελέγχου του παρόχου που βρίσκεται στην ιστοσελίδα του, ενός
δικού του εργαλείου γραμμής εντολών, ή άμεσα μέσω της βιβλιοθήκης που παρέχει ο
ίδιος. Η libcloud αποτελεί μια προσπάθεια δημιουργίας ενός ενιαίου API, το
οποίο χρησιμοποιώντας τις ίδιες συναρτήσεις, επιχειρεί να προσκομίσει ίδια
μέσω του πίνακα ελέγχου του, που βρίσκεται στην ιστοσελίδα του, ενός δικού του
εργαλείου γραμμής εντολών, ή άμεσα μέσω της βιβλιοθήκης που παρέχει ο ίδιος. Η
libcloud αποτελεί μια προσπάθεια δημιουργίας ενός ενιαίου API, το οποίο
χρησιμοποιώντας τις ίδιες συναρτήσεις, επιχειρεί να προσκομίσει ίδια
αποτελέσματα ανεξαρτήτως του παρόχου νέφους που στοχεύει.
\clearpage
Παρ όλη την προσπάθεια που καταβλήθηκε από την libcloud όμως, για την ενοποίηση
αυτή, οι διαφορές στους τρόπους λειτουργίας του κάθε παρόχου αρχίζουν να
εμφανίζονται σύντομα κατά την ανάπτυξη. Για το εργαλείο που προτείνει η παρούσα
διπλωματική εργασία, χρειάζεται να γίνει χρήση των λειτουργιών
Παρ' όλη την προσπάθεια που καταβλήθηκε από την libcloud όμως, για την
ενοποίηση αυτή, οι διαφορές στους τρόπους λειτουργίας του κάθε παρόχου αρχίζουν
να εμφανίζονται σύντομα κατά την ανάπτυξη. Για το εργαλείο που προτείνει η
παρούσα διπλωματική εργασία, χρειάζεται να γίνει χρήση των λειτουργιών
\textquote{Compute} της βιβλιοθήκης. Στην αρχική σελίδα της, αναφέρεται
υποστήριξη για πάνω από 50 παρόχους. Κατά την σελίδα τεκμηρίωσης
\footfullcite{libcloudProviders} για τις λειτουργίες \textquote{Compute},
@@ -44,7 +44,7 @@
τους και εν γένει όσες λειτουργίες είναι απαραίτητες για την ολοκληρωμένη
λειτουργία του εργαλείου. Από αυτούς τους 48 παρόχους, οι 25 υποστηρίζουν και
τις 9 συναρτήσεις. Ωστόσο, από αυτούς τους 25 έπρεπε να αφαιρεθούν οι 20 για
λόγους όπως η μη ύπαρξη τεκμηρίωσης χρήσης από την libcloud, η μη συνέχιση
λόγους όπως η μη ύπαρξη τεκμηρίωσης χρήσης από την libcloud, η μη συνέχιση της
λειτουργίας τους, η έλλειψη πληροφοριών τιμής ή δοκιμαστικής περιόδου για τις
υπηρεσίες τους και η αδυναμία δημιουργίας λογαριασμού στην επίσημη σελίδα τους.
Επομένως, υπάρχουν εν τέλει 5 πάροχοι νέφους που δύναται να χρησιμοποιηθούν
@@ -58,7 +58,7 @@
Παρακάτω θα διαπιστώσουμε πως ακόμα και με την χρήση της βιβλιοθήκης libcloud
και την επίσημη υποστήριξη όλων των λειτουργιών για κάθε πάροχο, υπήρχε η
ανάγκη χρήσης της επίσημης βιβλιοθήκης της Azure για την δημιουργία Resource
Group \footfullcite{azure-mgmt-resource}, Virtual Network
Group \footfullcite{azure-mgmt-resource} και Virtual Network
\footfullcite{azure-mgmt-network} διότι αυτές οι λειτουργίες δεν υποστηρίζονται
μέσω της libcloud. Επιπροσθέτως, δίχως την υποστήριξη των λειτουργιών αυτών, ο
χρήστης θα ήταν υποχρεωμένος να δημιουργεί αυτούς τους πόρους χειροκίνητα ή να
@@ -98,7 +98,7 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
\end{savenotes}
Ο λόγος που οι εκδόσεις είναι συγκεκριμένες για τους παρόχους AWS και Azure,
είναι διότι ο αριθμός των διαθέσιμων διανομών και εκδόσεων τους είναι
είναι διότι ο αριθμός των διαθέσιμων διανομών και εκδόσεών τους είναι
υπερβολικά μεγάλος και κατά την εκτέλεση της λειτουργίας δημιουργίας λίστας
τους ή κατά τον έλεγχο της ορθότητας δεδομένων που εισάγει ο χρήστης, το
πρόγραμμα θα καθυστερούσε σε τεράστιο βαθμό να ολοκληρωθεί.
@@ -167,7 +167,7 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
\item \textbf{Το εργαλείο πρέπει να εμφανίζει μηνύματα λάθους σε περίπτωση
που κάτι πάει στραβά κατά την εκτέλεση}
\item \textbf{το εργαλείο πρέπει να υποστηρίζει την διαδραστική διαμόρφωση
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την διαδραστική διαμόρφωση
του αρχείου ρυθμίσεων του}
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την εκτέλεση εξωτερικού
@@ -176,7 +176,7 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την εγκατάσταση δοχείων
στις εικονικές μηχανές που δημιουργεί, κατά την διάρκεια της
σκλήρυνσής τους, μέσω ενός αρχείου docker-compose.yml που θα
βρίσκεται στον ίδιο φάκελο με το εκτελέσιμο αρχείο}
βρίσκεται στον ίδιο φάκελο με το εκτελέσιμο αρχείο του}
\item \textbf{Το εργαλείο πρέπει να διαθέτει λειτουργία εμφάνισης όλων των
διαθέσιμων εντολών του}
@@ -210,7 +210,7 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
που έχει χρησιμοποιήσει προγράμματα γραμμής εντολών στο παρελθόν}
\item \textbf{Το εργαλείο πρέπει να δημιουργεί ξεχωριστό αρχείο για τις
ρυθμίσεις του στον ίδιο φάκελο που βρίσκεται και το εκτελέσιμο αρχείο}
ρυθμίσεις του στον ίδιο φάκελο που βρίσκεται και το εκτελέσιμο αρχείο του}
\item \textbf{Το εργαλείο πρέπει να κρατάει αρχείο των διευθύνσεων
IP των εικονικών μηχανών που δημιουργεί ώστε να μπορούν να
@@ -288,10 +288,11 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
Ουσιαστικά, κατά την πραγματική χρήση του SecDep υπάρχουν πάντοτε δύο οντότητες
που αλληλεπιδρούν μεταξύ τους. Ο χρήστης και ο πάροχος νέφους. Ο χρήστης μπορεί
να ζητήσει πληροφορίες για διαθέσιμους πόρους όπως οι εικονικές του μηχανές ή
τα συστατικά που έχει στην διάθεση του για την δημιουργία τους όπως οι
τα συστατικά που έχει στην διάθεσή του για την δημιουργία τους όπως οι
διανομές, τα μεγέθη και οι τοποθεσίες τους. Αυτή η αλληλεπίδραση μεταξύ του
χρήστη και του παρόχου νέφους, απεικονίζεται στο σχήμα
\ref{fig:sequenceDiagram}, το οποίο δημιουργήθηκε με το εργαλείο mermaid.
\ref{fig:sequenceDiagram}, το οποίο δημιουργήθηκε με το εργαλείο
\textquote{mermaid}.
\begin{center}
\begin{figure}[!ht]
@@ -368,7 +369,7 @@ pydeps -T png --cluster --include-missing --max-bacon=1 --noshow --reverse --ran
\clearpage
\section{Αρχιτεκτονική} \label{architecture}
\section{Αρχιτεκτονική Εργαλείου} \label{architecture}
Οι διαθέσιμες συναρτήσεις και μεταβλητές του secdep.py, απεικονίζονται στα
σχήματα \ref{fig:secdepFunctions} και \ref{fig:secdepVariables} αντίστοιχα. Η
@@ -424,7 +425,7 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
\item \textbf{image}
\item \textbf{confirm}: Για επιβεβαίωση της δημιουργίας της
εικονικής μηχανής χωρίς να χρειαστεί επιπλέον επιβεβαίωση από
εικονικής μηχανής χωρίς να χρειαστεί χειροκίνητη επιβεβαίωση από
τον χρήστη.
\item \textbf{deploy}: Για την εκτέλεση του harden.