Τεχνολογικό Υπόβαθρο

Ανοιχτός Κώδικας και Αδειοδότηση

Η δημιουργία μία λύσης ανοιχτού λογισμικού ήταν ένας από τους κύριους στόχους της δράσης. Θέλοντας να ξεφύγουμε από τους περιορισμούς που επέβαλαν οι παλαιότερες εμπορικές λύσεις σε αριθμό θέσεων εργασίας, φοιτητών, τμημάτων, ή προγραμμάτων σπουδών, διαθέτουμε τη λύση δωρεάν, για ελεύθερη χρήση.

Επιθυμούμε να δημιουργήσουμε ένα οικοσύστημα λύσεων, όπου το κεντρικό σύστημα προσφέρεται ελεύθερα για εγκατάσταση από το αποθετήριο κώδικα του έργου, και γίνεται η πλατφόρμα συνεργασίας μεταξύ ακαδημαϊκών ιδρυμάτων και εμπορικών εταίρων.

Η αδειοδότηση που έχουμε επιλέξει είναι η GNU Lesser General Public License (LGPL) που καλύπτει την κεντρική λύση ηλεκτρονικής γραμματείας ως λογισμικό ανοιχτού κώδικα και ταυτόχρονα επιτρέπει σε εμπορικούς παρόχους να προσφέρουν επεκτάσεις λογισμικού κλειστού κώδικα, αν επιθυμούν να προστατέψουν πνευματική ιδιοκτησία τους και να χρεώσουν για αυτές.

Γύρω από αυτό το οικοσύστημα λύσεων επιθυμούμε να αναπτυχθεί και μία κοινότητα τεχνικών με τεχνογνωσία ικανή να το συντηρήσει, να το εξελίξει και να παρέχει υπηρεσίες που απαιτούν υψηλό βαθμό εξειδίκευσης και βέλτιστες πρακτικές διαχείρισης σε θέματα

  • Μετάβασης και μετατροπής δεδομένων
  • Εγκατάστασης και αυτοματισμού
  • Φιλοξενίας σε cloud υποδομές
  • Kλιμάκωσης πόρων για διαχείριση φόρτου και
  • Παρακολούθησης καλής λειτουργίας

Αρχιτεκτονική Συστήματος

Η πλατφόρμα UniverSIS είναι βασισμένη πάνω σε σύγχρονη αρχιτεκτονική που εγγυάται ταχύτητα και ασφάλεια σε συνθήκες μεγάλου φόρτου, ενώ παρέχει υψηλή ευελιξία για μελλοντική επεκτασιμότητα.

Βασικός άξονας της αρχιτεκτονικής του συστήματος είναι ο διαχωρισμός των λειτουργιών σε επίπεδα (n-tier architecture). Διακρίνουμε τα επίπεδα (layers)

  • Παρουσίασης (presentation)
  • Εφαρμογής (application)
  • Δεδομένων (data)

που λειτουργούν ως ανεξάρτητες οντότητες στην αρχιτεκτονική, επιτρέποντας τον διαχωρισμό και απομόνωσή τους για λόγους ασφαλείας, την μεγαλύτερη ευκολία διαχείρισης, την δυνατότητα κλιμάκωσης και την ευελιξία διαμόρφωσης.

Το επίπεδο παρουσίασης υλοποιείται από τις εφαρμογές του φοιτητή, διδάσκοντα και γραμματείας, που είναι ανεπτυγμένες σε κώδικα javascript, δημοσιεύονται μέσω του web application server στους browsers που εκτελούν τον κώδικα και παρουσιάζουν το UI της εφαρμογής στον τελικό χρήστη.

Το επίπεδο εφαρμογής υλοποιείται από τον API server που είναι επίσης ανεπτυγμένος σε κώδικα javascript, προσφέρει μεθόδους άντληση και ενημέρωσης των πληροφοριών της εφαρμογής βάση των μοντέλων δεδομένων που ορίζονται στο object-relational mapping (ORM).

Το επίπεδο δεδομένων υλοποιείται από τον database server που αποθηκεύει μόνιμα τα δεδομένα σε σχεσιακή βάση δεδομένων (relational database) και είναι ανεξάρτητος του API server.

Αναλυτικότερα, οι διαφορετικοί εξυπηρετητές που απαρτίζουν μια πλήρη εγκατάσταση της πλατφόρμας UniverSIS είναι οι εξής:

  • Εξυπηρετητής εφαρμογών (web application server) - σερβίρει στατικό περιεχόμενο, τον κώδικα της εφαρμογής και τα στατικά resources της, που αξιοποιεί ο browser του τελικού χρήστη για να τρέξει την εφαρμογή
  • Διακομιστής δεδομένων (API server) - εξυπηρετεί τις κλήσεις που κάνουν οι browsers των τελικών χρηστών για άντληση και αποθήκευση δεδομένων. Επιτρέπει διαφορετικά επίπεδα αποθήκευσης (persistence layers) και μπορεί να αναμιγνύει τη χρήση sql, no-sql databases και key-value stores για να βελτιώσει το ρυθμό απόκρισης. Εφαρμόζει data models με χρήση object-relational mapping (ORM) για να απομονώσει (abstraction) το λογικό επίπεδο των δεδομένων από την συγκεκριμένη τεχνολογία βάσης δεδομένων που υλοποιεί ο database server
  • Εξυπηρετητής βάσης δεδομένων (database server) - εξυπηρετεί τα ερωτήματα του API server με εγκατάσταση οποιασδήποτε από τις γνωστές σχεσιακές βάσεις δεδομένων (relational database), MSSQL, MySQL, Oracle και ανεξάρτητα λειτουργικού συστήματος.
  • Εξυπηρετητής εξουσιοδότησης ελέγχου ταυτότητας (OAuth server) - ταυτοποιεί τους τελικούς χρήστες κατά την αρχική είσοδό τους στο σύστημα και διαμοιράζει OAuth tokens που στη συνέχεια χρησιμοποιούνται σε κάθε κλήση του browser προς τον API server, ώστε να εκτελείται έλεγχος πρόσβασης στις μεθόδους (endpoints) του API, ανάλογα με το ρόλο (scope) του κάθε χρήστη
  • Εξυπηρετητής αναφορών (reports server) - παράγει πιστοποιητικά και αναφορές βάσει προκατασκευασμένων προτύπων (templates) συμπληρώνοντας σε προκαθορισμένες θέσεις τα δεδομένα που του δίνει ο API server

Ακολουθεί γενικό διάγραμμα της αρχιτεκτονικής του συστήματος.

UniverSIS architecture

Πρόσβαση στις web εφαρμογές έχουν οι διαφορετικοί clients (desktop, laptop, tablet, mobile) μετά από authentication/authorization με τον OAuth2 server.

Ο κώδικας των εφαρμογών διατίθεται από τον web server μέσω του proxy σε μορφή javascript που εκτελείται στον browser και η άντληση των δεδομένων γίνεται με επικοινωνία του browser απευθείας με τον API server.

Η πρόσβαση των clients στον web server και τον API server προστατεύεται από τον OAuth server με τον οποίο πρέπει να επικοινωνεί ο browser για να αποκτά πρώτα OAuth token περιορισμένης διάρκειας ισχύος.

Η πρόσβαση στον database server και τον reports server γίνεται αποκλειστικά και μόνο από τον API server.

Οι παραπάνω εξυπηρετητές έχουν ξεχωριστή λογική υπόσταση (logical servers), αλλά δεν είναι απαραίτητο να φιλοξενούνται ο καθένας σε ξεχωριστό φυσικό / εικονικό μηχάνημα (virtual machine VM). Μπορούν κάλλιστα κάποιοι logical servers να εξυπηρετούνται από ένα κοινό VM, ανάλογα με τις απαιτήσεις του φόρτου που καλείται να εξυπηρετήσει η υποδομή και το βαθμό διαχειριστικής απομόνωσης που θέλουμε να εφαρμόσουμε. Υπάρχει άλλωστε η δυνατότητα οι παραπάνω logical servers να εγκαθίστανται με τη μορφή containers σε όποιο configuration επιλεγεί, σε ένα ή περισσότερα VM.

Κλιμάκωση

Δυνατότητες κλιμάκωσης (scale out) για λόγους διαμοιρασμού φόρτου και διαθεσιμότητας (load balancing & failover) από το απλούστερο στο πιο σύνθετο σενάριο

  • Multi-threading στο απλό instance του ενός API server, δυνατότητα αύξησης των processes που τρέχουν παράλληλα και εξυπηρετούν κλήσεις των front end applications από τους browsers των τελικών χρηστών. Δυνατότητα για ανάπτυξη τόσων processes όσο τα διαθέσιμα cpu στο VM
  • Πολλαπλά instances του API server, κάθε ένα σε διαφορετικό VM, με κλήση όμως κοινού database server, σενάριο που επιδιώκει μεγαλύτερη απομόνωση του κάθε instance από το φόρτο των άλλων. Απαιτείται κάποιος front end proxy και load balancer που μπορεί να τερματίζει την SSL κίνηση για offloading των API server και διαμοιρασμό των κλήσεων στα backend instances

Απόκριση

Σχετικά με την απόκριση του συστήματος έχουμε δεδομένα τόσο από εργαστηριακή ανάλυση με stress testing συστημάτων, όσο και από το περιβάλλον παραγωγής σε ακαδημαϊκά ιδρύματα που είναι εγκατεστημένο. Ενδεικτικά παραθέτουμε διαγράμματα για λειτουργία σε μία τυπική περίοδο χρήσης:

  • Χρονική διάρκεια: 1 εβδομάδα
  • Μοναδικοί χρήστες: ~12Κ
  • Αριθμός κλήσεων προς API server: ~500K
  • Χρόνος απόκρισης κλήσεων προς API server < 200ms: 94.45%
  • Αριθμός εξυπηρετούμενων χρηστών ανά 3ωρο: 500-1000
  • Max ρυθμός εξυπηρετούμενων κλήσεων του API server ανά 3ωρο: 25K calls

UniverSIS API response time during typical load

UniverSIS API response time during typical load

UniverSIS API response time during typical load

Αντίστοιχα διαγράμματα για λειτουργία σε μία μη-τυπική περίοδο με συνθήκες εξαιρετικού φόρτου, όπως η περίοδος δηλώσεων μαθημάτων:

  • Χρονική διάρκεια: 1 εβδομάδα
  • Μοναδικοί χρήστες: ~43Κ
  • Αριθμός κλήσεων προς API server: ~8Μ
  • Χρόνος απόκρισης κλήσεων προς API server < 200ms: 92.11%
  • Αριθμός εξυπηρετούμενων χρηστών ανά 3ωρο: 5000-10000
  • Max ρυθμός εξυπηρετούμενων κλήσεων του API server ανά 3ωρο: 400K calls

UniverSIS API response time during heavy load

UniverSIS API response time during heavy load

UniverSIS API response time during heavy load

Επιπλέον, υπάρχουν δυνατότητες διαχωρισμού online και offline βάσης δεδομένων για ακόμα υψηλότερο επίπεδο ασφάλειας, σε περιπτώσεις που επιλέγεται πλήρης διαχωρισμός των internet facing servers από τους back office servers Γραμματειών, οι οποίοι θα περιέχουν και τα πρωτογενή και ασφαλή δεδομένα. Αυτό το σενάριο προσθέτει σημαντική πολυπλοκότητα και θα πρέπει να υιοθετείται μόνο σε περιπτώσεις που η στελέχωση του ιδρύματος σε τεχνικό προσωπικό υποστήριξης το επιτρέπει.

Τεχνολογίες

Διατηρώντας τη φιλοσοφία μιας λύσης open source επιλέγουμε να ενσωματώσουμε βιβλιοθήκες και εργαλεία επίσης ανοικτού κώδικα, για μία καθαρή λύση από πλευράς δικαιωμάτων και αδειών.

Παρακάτω αναφέρονται οι τεχνολογίες open source που χρησιμοποιεί το UniverSIS, αλλά και οι υπηρεσίες cloud που χρησιμοποιούμε ως project.

Για τα Front End Web Applications που εκτελούνται

Για το Back End API Server

Για τις ψηφιακές υπογραφές βαθμολογίων και πιστοποιητικών

Για το επίπεδο της βάσης δεδομένων, το UniverSIS δεν έχει κάποιο περιορισμό, καθώς είναι database agnostic. Σήμερα λειτουργούν εγκαταστάσεις σε

Για τον OAUTH server

Για την φιλοξενία και το deployment

  • Docker
  • Heroku
  • GRNET Okeanos cloud
  • Gitlab CI
  • Ansible

Για την ανάπτυξη χρησιμοποιούνται

Για την παρακολούθηση καλής λειτουργίας και μετρικών απόδοσης/απόκρισης και σφυγμομέτρησης αποδοχής από μεριάς τελικών χρηστών

API και Web services

Το σύστημα UniverSIS βασίζεται στην υποδομή ενός εξελιγμένου API server που εξυπηρετεί όλες τις παραπάνω εφαρμογές και υποσυστήματα. Αποτελείται από ένα σύνολο βασικών υπηρεσιών που καλύπτουν τις ανάγκες παρουσίασης και επεξεργασίας των δεδομένων της Ηλεκτρονικής Γραμματείας χρησιμοποιώντας σύγχρονες τεχνολογίες ανάλυσης και ανάπτυξης. Παράλληλα επενδύει στην επεκτασιμότητα και τις τεχνικές που την διέπουν έτσι ώστε να επιτύχει την μέγιστη δυνατή και ποιοτική διαχείριση των δεδομένων ενός πολυμορφικού συστήματος όπως είναι αυτό της Ηλεκτρονικής Γραμματείας.

REST

Ακολουθώντας τις τεχνολογίες ανάπτυξης RESTFul web services καλύπτει όλες τις ανάγκες μετάδοσης δεδομένων ενσωματώνοντας ένα πλήθος εργαλείων για τους πελάτες του είτε αυτοί είναι εφαρμογές τελικών χρηστών είτε τρίτες υπηρεσίες που επιθυμούν να παραλάβουν δεδομένα από αυτόν χωρίς κανέναν περιορισμό τόσο στο περιβάλλον όσο και στα εργαλεία ανάπτυξης. Αναπτύσσεται σε περιβάλλον node.js και χρησιμοποιεί τεχνολογίες όπως το express js, passport, swagger και πολλές άλλες.

NodeJS Server ExpressJS Server
Passport Swagger

Λειτουργεί χωρίς κανένα περιορισμό σε όλα τα λειτουργικά συστήματα τεχνολογιών Windows, Linux, MacOS και σε απόλυτη συνεργασία μέ όλους τους ευρέως γνωστούς web servers όπως apache, nginx κτλ. με σκοπό τη χρήση τεχνολογιών και εργαλείων proxying, load balancing, clustering κ.α.

Apache Web Server NGINX Web Server
ODATA Protocol

Ο UniverSIS API server υλοποιεί το OData v4 (Open Data Protocol), ένα ISO/IEC εγκεκριμένο OASIS standard που ορίζει ένα σετ από καλές πρακτικές για δημιουργία και κατανάλωση RESTful APIs. Χρησιμοποιώντας το πρωτόκολλο επικοινωνίας OData v4 ο API server επενδύει στην πολυμορφικότητα για την κάλυψη των αυξημένων αναγκών μετάδοσης δεδομένων, ενώ παράλληλα προσφέρει δυνατότητες παραλαβής αναλυτικών δεδομένων για την κάλυψη των αυξημένων αναγκών του συστήματος Ηλεκτρονικής Γραμματείας.

Στα πλαίσια των παραπάνω και με απόλυτο στόχο την επεκτασιμότητα και διαλειτουργικότητα με τρίτα συστήματα και υπηρεσίες προσφέρονται βιβλιοθήκες πελατών (client side libraries) σε διάφορες γλώσσες προγραμματισμού όπως PHP, Java, .NET, Javascript, Typescript κ.α. καθώς επίσης και σε διάφορες τεχνολογίες ανάπτυξης (frameworks) όπως Angular, React κ.α.

alt_text alt_text
alt_text alt_text
alt_text alt_text
alt_text

Το UniverSIS project προσφέρει σύνολο από βιβλιοθήκες για την ανάπτυξη εφαρμογών μέσω του δημοφιλούς package manager του npm.js στη διεύθυνση https://www.npmjs.com/search?q=%40universis

universis-npm-packages

Ο UniverSIS API Server ακολουθώντας την τυποποίηση database-agnostic συστημάτων προσφέρει δυνατότητες χρήσης με διάφορα database engines όπως Oracle, PostgreSQL, MySQL, Maria DB, MSSQL κ.α. χωρίς κανέναν περιορισμό στις υπηρεσίες που προσφέρονται στο εξωτερικό περιβάλλον μέσω του API server.

MySQL DB Server MS SQL DB Server
MariaDB Server PostgreSQL Server
Oracle DB Server

Χρησιμοποιώντας σύγχρονες τεχνολογίες ORM στην αποτύπωση των αντικειμένων επιτυγχάνει την ανάπτυξη χαρακτηριστικών που στηρίζονται στην κληρονομικότητα και την πολυμορφικότητα στο επίπεδο των δεδομένων.

ORM Model Relations

Στα πλαίσια των παραπάνω προσφέρει ανεξάντλητες δυνατότητες επεκτασιμότητας και ενσωμάτωσης νέων χαρακτηριστικών και οντοτήτων αλλά ακόμη και παραμετροποίηση των υπαρχόντων με σκοπό την υλοποίηση όλων αυτών των ειδικών χαρακτηριστικών και υπηρεσιών που μπορεί να αποκτήσει ένα σύστημα όπως αυτό της Ηλεκτρονικής Γραμματείας.

Με κύριο στόχο την τήρηση σύγχρονων κανόνων ασφαλείας και πρόσβασης των δεδομένων του συστήματος χρησιμοποιεί και ενσωματώνει τεχνολογίες OAuth2 authorization. Για τον σκοπό αυτό o UniverSIS API Server συνεργάζεται με OAuth2 servers όπως το Keycloak, Laravel Passport και άλλους. Ειδικά η χρήση του Keycloak ως Identity Manager εργαλείου παρέχει και δυνατότητες διασύνδεσης με μητρώα προσώπων (υπηρεσίες καταλόγου AD/LDAP), τεχνικές authentication (SSO, 2FA, certificate authentication κ.α.) και με διαφορετικά authentication/authorization πρωτόκολλα (SAML/CAS κ.α.).

Keycloak Laravel

O UniverSIS API Server -μεταξύ των άλλων- προσφέρει online documentation για όλες τις υπηρεσίες που ενσωματώνει αξιοποιώντας το Swagger και το πρότυπο Openapi v3.

Swagger

UniverSIS API swagger methods

Κάθε εγκατάσταση του UniverSIS προσφέρει ένα δυναμικό κατάλογο με την τεκμηρίωση για όλα τα υποστηριζόμενα μοντέλα και μεθόδους, όπως εδώ η demo εγκατάσταση:

Ασφάλεια και Ιδιωτικότητα

Όπως έχει ήδη αναπτυχθεί στην αρχιτεκτονική του προτεινόμενου πληροφοριακού συστήματος, το UniverSIS μέσα από ένα εξελιγμένο σύστημα διαχείρισης δικαιωμάτων ελέγχει την προσβασιμότητα που προκύπτει από την πιστοποίηση και εξουσιοδότηση των χρηστών τόσο στο επίπεδο της εφαρμογής, όσο και στην πρόσβαση που προκύπτει από την πολιτική του υφιστάμενου δικτύου επικοινωνιών. Καλύπτει τις θεμελιώδεις ανάγκες ασφάλειας έτσι όπως αυτές ορίζονται παρακάτω:

  1. Εμπιστευτικότητα: Ένα μεγάλο μέρος των δεδομένων του πληροφοριακού συστήματος μπορούν να χαρακτηριστούν ως προσωπικά ή ευαίσθητα δεδομένα και επομένως είναι διαθέσιμα μόνο σε εκείνους τους χρήστες που είναι εξουσιοδοτημένοι για την προσπέλασή τους. Η πιστοποίηση της δικαιοδοσίας των χρηστών βασίζεται πάνω σε ένα καθορισμένο σύστημα ρόλων. Κάθε ρόλος αποκτά δικαιώματα τα οποία του αποδίδονται είτε από τους διαχειριστές του συστήματος, είτε από την ιδιότητα του, έτσι όπως αυτή είναι αποτυπωμένη στα δεδομένα του συστήματος. Επίσης λαμβάνονται –σε συνεργασία με την υφιστάμενη πολιτική του δικτύου επικοινωνιών-όλα τα κατάλληλα μέτρα ώστε να αποτρέπονται επιθέσεις μη εξουσιοδοτημένης παραλαβής δεδομένων.

  2. Ακεραιότητα: Η ακεραιότητα των δεδομένων του συστήματος εξασφαλίζεται σε συνεργασία με το διακομιστή δεδομένων και κακόβουλες προσπάθειες αλλοίωσης απορρίπτονται αφού προηγουμένως προσπελαστούν με τις πιο σύγχρονες μεθόδους προστασίας εκτέλεσης ανεπιθύμητων δεσμών ενεργειών (SQL Injection Protection κ.α.).

  3. Διαθεσιμότητα δεδομένων: Ο διακομιστής εφαρμογών σε συνεργασία με το διακομιστή δεδομένων ορίζει την αδιάλειπτη δυνατότητα μετάδοσης των δεδομένων του πληροφοριακού συστήματος.

  4. Εξουσιοδότηση: Κάθε χρήστης σύμφωνα με τους ρόλους στους οποίους ανήκει –ή την ιδιότητα του έτσι όπως αυτή έχει ορισθεί- έχει εξουσιοδότηση για πρόσβαση στο σύστημα και επεξεργασία ή παραλαβή δεδομένων.

Η σχεδίαση του συστήματος έγινε με γνώμονα την ασφάλεια τόσο στην καθημερινή χρήση, όσο και στη μακροχρόνια διατήρηση των δεδομένων με δυνατότητες ιχνηλάτησης και επικύρωσης των δεδομένων. Σε αυτές τις κατευθύνσεις διακρίνουμε λοιπόν, τα χαρακτηριστικά ασφάλειας που παρέχει η αρχιτεκτονική συστήματος, και τα χαρακτηριστικά ασφάλειας που ενσωματώνει η επιχειρησιακή λειτουργία του συστήματος.

Στην ασφάλεια της αρχιτεκτονικής έχουμε τα εξής χαρακτηριστικά που τονίζουν την προσέγγιση της ανάπτυξης με την αρχή security by design:

  • Αρχιτεκτονική διακριτών επιπέδων (tiered architecture)
  • OAUTH2 token based authentication-authorization που εφαρμόζεται σε κάθε κλήση των clients προς τον API server
  • Σύνδεση με ιδρυματικό SSO σύστημα για πιστοποίηση μέσω της κεντρικής υποδομής υπηρεσιών καταλόγου του ιδρύματος (LDAP)
  • Επιπλέον μέτρα προστασίας για είσοδο σε κρίσιμες εφαρμογές, όπως 2-factor authentication στην εφαρμογή Γραμματείας
  • Χρήση τεχνικών ασφάλειας σε επίπεδο web server (SSL ciphers, proxy, κ.λ.π)
  • Χρήση reverse proxy μπροστά από τα API services
  • Εφαρμογή front end security (αποτροπή SQL injection, CSRF, XSS)
  • Database abstraction με χρήση ORM
  • Αποκλειστική πρόσβαση του API server στην database

Στην ασφάλεια επιχειρησιακής λειτουργίας έχουμε τα εξής χαρακτηριστικά:

  • Πρόσβαση σε δεδομένα σύμφωνα με το εύρος πιστοποίησης (scope-based authorization), ανάλογα δικαιώματα για φοιτητή, διδάσκοντα, γραμματεία
  • Υποστήριξη ψηφιακών υπογραφών με χρήση υπηρεσίας PKI, όπως της HARICA για μακροχρόνια αποθήκευση κρίσιμων δεδομένων και πιστοποιητικών με δυνατότητες LTV (long-term verification)
  • Σύστημα ελέγχου της ακεραιότητας των επιχειρησιακών δεδομένων βάσει ψηφιακών υπογραφών, όπως βαθμός πτυχίου, βαθμολογία μαθημάτων κ.λ.π.
  • Ενημέρωση χρηστών για προσπάθειες παραποίησης των κρίσιμων δεδομένων (π.χ. βαθμολογίες)
  • Ενεργοποίηση δικαιωμάτων πολλαπλών επιπέδων (role-based security)
Επίπεδο Δικαιώματα
Δικαιώματα σε οντότητες Προβολή, Δημιουργία, Επεξεργασία, Διαγραφή, Εκτέλεση
Δικαιώματα σε στοιχεία οντοτήτων (row-level security) Προβολή, Επεξεργασία, Διαγραφή, Εκτέλεση
Δικαιώματα σε στοιχεία οντοτήτων βάσει της σχέσης που αυτά έχουν με μία πατρική οντότητα (ownership) Προβολή, Επεξεργασία, Διαγραφή, Εκτέλεση
Δικαιώματα σε στοιχεία οντοτήτων βάσει της ιδιότητας που ένας χρήστης μπορεί να έχει π.χ. δικαίωμα πρόσβασης του διδάσκοντα σε πληροφορίες αποκλειστικά φοιτητών που διδάσκει Προβολή, Επεξεργασία, Διαγραφή, Εκτέλεση

Με αυτές τις δυνατότητες ρύθμισης, η διαχείριση των δικαιωμάτων χρηστών και ρόλων μπορεί να υποστηρίξει απόλυτα την όποια εξειδικευμένη πολιτική μπορεί να θελήσει να εφαρμόσει το ίδρυμα στη διαχείριση του δικού του πληροφοριακού συστήματος Ηλεκτρονικής Γραμματείας.

Στην ανάπτυξη του UniverSIS έχουν ακολουθηθεί βασικές αρχές σχεδιασμού με βάση την ιδιωτικότητα (privacy and data protection by design) γεγονός που επιτρέπει η επεξεργασία όλων των δεδομένων που συλλέγουν οι εφαρμογές του συστήματος να γίνεται σε συμμόρφωση με τον ευρωπαϊκό κανονισμό 2016679 (General Data Protection Regulation, GDPR).

Παρακολούθηση καλής λειτουργίας

Για τον έλεγχο λειτουργίας των εφαρμογών του UniverSIS μπορεί να χρησιμοποιηθεί πληθώρα λογισμικών και προσεγγίσεων οι οποίες να παρέχουν τόσο τον άμεσο έλεγχο καλής λειτουργίας των εφαρμογών όσο και λεπτομέρειες και στατιστικά στοιχεία για την κατάστασή τους στον χρόνο. Χρησιμοποιώντας τα αρχεία καταγραφής γεγονότων, τα οποία το UniverSIS project παρέχει by default, μπορεί να παραχθεί χρήσιμη ανάλυση ενώ συγχρόνως παρέχεται σημαντική βοήθεια στην αποσφαλμάτωση. Επιπλέον επιτυγχάνεται η δυνατότητα προληπτικού ελέγχου και εντοπισμού πιθανών προβλημάτων χωρίς να απαιτείται να προηγηθεί σχετική καταγραφή από χρήστη.

Ο API του UniverSIS προσφέρει by default την υπηρεσία diagnostics καθώς και πρόσθετα modules για την προβολή επιπλέον μετρικών (metrics module), το οποίο μπορεί να ενεργοποιηθεί στο αρχείο ρυθμίσεων χωρίς να απαιτείται καμία επιπλέον ενέργεια για τη χρήση τους. Έτσι μέσω του API δίνεται η δυνατότητα να εξαχθούν και να χρησιμοποιηθούν με πολλαπλούς τρόπους σημαντικές πληροφορίες για την κατάσταση λειτουργίας του API, η οποία είναι κρίσιμη για τη λειτουργία των εφαρμογών και παρουσιάζει και τη μεγαλύτερη ανάγκη για monitoring.

Επιπλέον εργαλεία και πρακτικές που χρησιμοποιούνται σε συνδυασμό με το UniverSIS είναι:

  • Nagios monitoring tool με ενσωμάτωση UniverSIS-specific scripts ώστε να διασφαλίζεται η εύρυθμη λειτουργία των εφαρμογών μας και του API server, ενώ συγχρόνως γίνεται και καταγραφή των σημαντικών συμβάντων ως ιστορικό
    • Αποστολή ενημερώσεων σε περίπτωση αστοχίας (email, SMS, και ειδοποίηση σε άλλα κανάλια επικοινωνίας/συνεργασίας, π.χ. πλατφόρμες όπως το Slack)
    • Προβολή διαγραμμάτων για τη χρήση πόρων των συστημάτων
  • Puppeteer για προσομοίωση ενεργειών χρήστη

    Το συγκεκριμένο λογισμικό χρησιμοποιείται για την εκτέλεση αυτοματοποιημένων ελέγχων των εφαρμογών, μπορεί όμως να χρησιμοποιηθεί και για την υλοποίηση custom σεναριών ελέγχων στα οποία θέλουμε να επικεντρωθούμε λόγω σημαντικότητας ή ανάγκης για επιπλέον επισκόπησης σε higher level. Τα σενάρια μπορούν να εκτελούνται σύμφωνα με τον προγραμματισμό (πχ κάθε μέρα σε συγκεκριμένη ώρα) και να αποστέλλουν ενημέρωση για τα αποτελέσματα (πχ μέσω email). Παρέχεται έτσι η δυνατότητα προσαρμοσμένων ελέγχων με καταγραφή αποτελεσμάτων συμβάλλοντας τόσο στην παρακολούθηση λειτουργίας του συστήματος με συγκεκριμένο και στοχευμένο τρόπο όσο και στη λήψη προληπτικών μέτρων για την καλύτερη εξυπηρέτηση χρηστών και στην καλύτερη εποπτεία των συστημάτων με ένα ακόμα επίπεδο παρακολούθησης

  • Kibana για την παρουσίαση δεδομένων συγκεντρωμένα σε προσαρμοσμένα dashboards

    • Δυνατότητα αναζήτησης με οποιοδήποτε φίλτρο παρέχεται στα δεδομένα
    • Δυνατότητα επιλογής χρονικού διαστήματος στο οποίο περιορίζονται τα δεδομένα που προβάλλονται
    • Πληθώρα διαγραμμάτων για οπτικοποίηση της πληροφορίας και καλύτερη κατανόηση των δεδομένων
    • Προβολή στοιχείων λειτουργίας και μετρικών απόκρισης
    • Προβολή full logs σε πίνακα με πολλαπλές δυνατότητες προσαρμογής της παρουσίασης (αλλαγή στηλών on the fly, ταξινόμηση κτλ)
    • Άμεσο κι εύκολο φιλτράρισμα σύμφωνα με τα στοιχεία που παρουσιάζονται στο dashboard
    • Ευκολία στη χρήση και από άτομα χωρίς τεχνικές γνώσεις

Καταγραφή γεγονότων

Ο διακομιστής εφαρμογών νέας γενιάς παρακολουθεί τις διαδικασίες που εκτελεί και καταγράφει τα συμβάντα του συστήματος είτε στη βάση δεδομένων του συστήματος –όταν αυτά αναφέρονται σε ορισμένες διαδικασίες που σχετίζονται με την επιχειρησιακή λογική του μοντέλου- είτε σε αρχεία καταγραφής. Σε κάθε περίπτωση καταγράφονται η ημερομηνία δημιουργίας του συμβάντος, η περιγραφή του, ο χρήστης ή η υπηρεσία που συμμετείχε στη εκτέλεσή του κτλ.

Με τον τρόπο αυτό η διαχείριση του συστήματος μπορεί να ανακαλέσει συμβάντα που σχετίζονται με τις υπηρεσίες και να προβεί σε μία λεπτομερής εποπτεία αυτών. Διαδικασίες –και συγκεκριμένα καταγραφές διαδικασιών- που κρίνονται ως σημαντικές μπορούν να αποτελέσουν μέρος διαδικασιών ειδοποιήσεων μέσω web, email.

Ο API που εξυπηρετεί τις εφαρμογές προσφέρει by default καταγραφή γεγονότων σε 3 κατηγορίες και σε διαφορετικό αρχείο ανά κατηγορία. Όλες οι εγγραφές στα αρχεία καταγραφών συνοδεύονται με timestamp και απαραίτητες συσχετιζόμενες πληροφορίες όπως όνομα χρήστη, περιγραφή ενέργειας, στοιχεία απάντησης, κτλ.

  1. Καταγραφή γεγονότων που αφορούν τη λειτουργία του API

    Στο αρχείο καταγραφής out.log προσφέρονται λεπτομέρειες σχετικά με τη λειτουργική κατάσταση του API. Αναφέρεται το timestamp για την ώρα εκκίνησης/επανεκκίνησης του API στο σύστημα, πόσα instances του χρησιμοποιούνται όπως επίσης και τα API services που έχουν ενεργοποιηθεί (τα services ορίζονται στο API config file).

  2. Καταγραφή σφαλμάτων που προκύπτουν

    Στο αρχείο καταγραφής error.log καταγράφονται όλες οι περιπτώσεις που προκύπτει σφάλμα στην εκτέλεση ή εξυπηρέτηση κάποιας κλήσης. Έτσι σε περίπτωση που ο API αντιμετωπίσει οποιοδήποτε πρόβλημα, υπάρχει συγκεντρωμένη η σχετική πληροφορία και συνοδεύεται από τις απαραίτητες πληροφορίες (αναφορά και περιγραφή του σφάλματος με trace log, timestamp, όνομα χρήστη κτλ)

  3. Καταγραφή όλων των κλήσεων

    Στο αρχείο καταγραφής access.log βρίσκουμε μια πλήρη αναφορά σε όλες τις κλήσεις που έχουν πραγματοποιηθεί με αναφορά σε πολλαπλά στοιχεία της, όπως timestamp, όνομα χρήστη (username), κλήση (api call σε συγκεκριμένο endpoint) και παράμετροι της κλήσης που πραγματοποιηθηκε, χρόνος απόκρισης, κωδικός απάντησης κτλ.

Επιπρόσθετα μέσω του pm2 προσφέρεται η δυνατότητα προβολής της κατάστασης (status) του API server. Εκτός από τα δεδομένα αναφορικά με τη χρήση και λειτουργία του API, τα οποία παρουσιάζονται με εποπτικό τρόπο, διαθέτει και τα αναλυτικά στοιχεία των κλήσεων (logs) που πραγματοποιούνται.

Στοχευμένη και λεπτομερής καταγραφή ενεργειών πραγματοποιείται και στη βάση δεδομένων. Η καταγραφή ενεργειών στη βάση παρέχεται με εισαγωγή εγγραφών (DB records) για ενέργειες του χρήστη, διατηρώντας επιπρόσθετες πληροφορίες της ενέργειας για λόγους ιχνηλάτησης και διερεύνησης των ενεργειών. Η δυνατότητα καταγραφής ενεργειών στη βάση περιλαμβάνει

  1. Γενική καταγραφή ενεργειών

    Στη βάση καταχωρούνται ενέργειες με τις απαραίτητες πληροφορίες τους (στοιχεία χρήστη, ημερομηνίες, αντικείμενο ενέργειας, ID στοιχείων) συμπεριλαμβανομένου δεδομένων που αφορούν την κατάσταση και το μοναδικό αναγνωριστικό της ενέργειας.

  2. Ειδική καταγραφή για συγκεκριμένες ενέργειες που απαιτούν επιπρόσθετη πληροφορία με δυνατότητα προβολής των επιμέρους τιμών κάθε ενέργειας. Χαρακτηριστικό παράδειγμα αυτής της κατηγορίας ενεργειών για αναλυτική καταγραφή αποτελεί η υποβολή δήλωσης μαθημάτων από την εφαρμογή Φοιτητών. Για την τήρηση καταγραφής των δηλώσεων μαθημάτων πραγματοποιείται επιπρόσθετη εγγραφή σε ξεχωριστό πίνακα της βάσης που αφορά μόνο το περιεχόμενο των δηλώσεων και πέρα των βασικών πληροφοριών, όπως στοιχεία φοιτητή, περίοδο δηλώσεων, ημερομηνία ενέργειας, προσφέρει εκτεταμένες πληροφορίες ως προς την ενέργεια, όπως κατάσταση ενέργειας και περιεχόμενο δήλωσης (λεπτομέρειες μαθήματος: τίτλος μαθήματος, κωδικός τάξης, ID τάξης κτλ καθώς και σήμανση για το αν αφορά ενέργεια από το περιβάλλον Φοιτητή ή Γραμματείας)

Για ενέργειες που επηρεάζουν πολλαπλές οντότητες παρέχεται καταγραφή για όλες τις οντότητες και τις εγγραφές βάσης που επηρεάζονται, πχ η αποστολή δήλωσης ενός φοιτητή επηρεάζει τόσο στοιχεία της οντότητας/πίνακα φοιτητή όσο και του μοντέλου/πίνακα δηλώσεις μαθημάτων. Σε αυτή την περίπτωση διατηρούνται όλες οι απαραίτητες πληροφορίες και στοιχεία που σχετίζονται με τις αλλαγές που έχουν γίνει.

Με χρήση λογισμικού όπως το Kibana προσφέρεται η δυνατότητα ενσωμάτωσης των δεδομένων καταγραφής και εξαγωγής στατιστικών στοιχείων με οπτικό τρόπο καθώς και πληροφοριών για αποσφαλμάτωση, πχ γραφήματα αναφορικά με φόρτο συστήματος (χρόνοι απόκρισης, πληροφορίες για τον κωδικό απάντησης (response code), σύνολο συνδεδεμένων χρηστών με χρονική κατανομή, σύνολο κλήσεων που πραγματοποιήθηκαν, σύνολο υποβολών δηλώσεων μαθημάτων και πολλές άλλες επιλογές. Συγχρόνως δίνεται η δυνατότητα αναζήτησης με οποιοδήποτε στοιχείο των δεδομένων και ο ορισμός χρονικού διαστήματος.

Η αναζήτηση μπορεί να γίνει με ελεύθερο κείμενο στην μπάρα αναζήτησης και να περιοριστεί χρονικά και με φίλτρα για κάθε στοιχείο των δεδομένων, πχ κλήσεις τύπου POST που δεν επέστρεψαν 200.

Elastic Kibana Dashboard

Συνδυασμός των παραπάνω στοιχείων βοηθάει σημαντικά τόσο σε ενέργειες μακροσκοπικού ελέγχου όσο και για διερεύνηση μεμονωμένων περιπτώσεων, χαρακτηριστικά παραδείγματα:

  • Άμεσος εντοπισμός πιθανών προβλημάτων πριν γίνει αναφορά από τον ίδιο τον χρήστη
  • Παρακολούθηση απόκρισης σε ημέρες που προβλέπεται αυξημένος φόρτος για έγκαιρη και έγκυρη ενημέρωση
  • Φιλτράρισμα πληροφοριών για συγκεκριμένο χρήστη ή χρονικό διάστημα ώστε να προκύψουν χρήσιμες πληροφορίες ανά περίπτωση (πχ IP διεύθυνση που χρησιμοποιήθηκε για συγκεκριμένες κλήσεις)

Όσον αφορά τα πιστοποιητικά που εκδίδονται, προσφέρεται by default καταγραφή τους και μόνιμη αποθήκευση για μελλοντική αναφορά καθώς επίσης και για χρήση με τον μηχανισμό ελέγχου γνησιότητας πιστοποιητικών, ο οποίος παρέχεται για οποιοδήποτε είδος πιστοποιητικού.

Από το περιβάλλον Γραμματείας παρέχεται εύκολη και άμεση πρόσβαση στις Αρχειοθετήσεις κάθε φοιτητή, απαλλάσσοντας τα ιδρύματα από τήρηση φυσικών αρχείων και φακέλων αρχειοθέτησης. Στις αρχειοθετήσεις φοιτητή περιλαμβάνονται όλα τα πιστοποιητικά που έχουν εκδοθεί και η πρόσβαση είναι εφικτή ανεξάρτητα από την κατάσταση φοίτησης του φοιτητή.