Το uRescom
είναι μία εφαρμογή σε php για την παραγωγή του ενδιάμεσου πίνακα v_vd_hrms
που απαιτείται από την υπηρεσία IDM της GUNet για τη δημιουργία των λογαριασμών των χρηστών που προέρχονται από το Rescom
.
Το uRescom
συνδέεται με τη βάση δεδομένων του Rescom
, εκτελεί ένα σύνολο βημάτων και παράγει τις εγγραφές που πρέπει να υπάρχουν στον v_vd_hrms
.
Η εκτέλεση γίνεται μέσα από το διαδικτυακό περιβάλλον του συστήματος. Επίσης απαιτείται και η εκτέλεση μιας διαδικασίας χρονοπρογραμματισμού (cron job), η οποία κάνει επικαιροποίηση της κατάστασης των λογαριασμών, συγκεκριμένα της στήλης employeeStatus, ώστε ανάλογα με την ισχύ των συμβάσεων, να έχει τιμές active, inactive, interim. Για παράδειγμα, αν κάποια ενεργή σύμβαση λήξει, τότε, η χρονοπρογραμματισμένη διαδικασία που εκτελείται μία φορά την ημέρα, κάνει την κατάλληλη επικαιροποίηση στο πεδίο employeeStatus. Το Docker Compose stack φροντίζει να εκτελεί τη διαδικασία αυτή αυτόματα μέσω κατάλληλου service.
Οι βασικοί πίνακες της εφαρμογής είναι οι ακόλουθοι:
v_vd_hrms
: Ο βασικός ενδιάμεσος πίνακας τον οποίο θα χρησιμοποιεί τοIDM
για τη δημιουργία χρηστών.v_vd_hrms_incoming
: Ο πίνακας ο οποίος συγχρονίζεται με τη βάση τουRescom
και διατηρεί τα στοιχεία των χρηστών τοπικά.v_vd_hrms_loginnames
: Ο πίνακας στον οποίο διατηρείται η σύνδεση usernames με τους αριθμούς μητρώου των λογαριασμών τουRescom
.
Απαιτείται πρόσβαση ανάνγωσης στους ακόλουθους πίνακες της βάσης δεδομένων Rescom:
[Αποδέκτες]
[Symbaseis]
[Πρόσωπα_Φυσικά]
[Αποδεκτών_Διευθύνσεις]
[Αποδεκτών_Τηλέφωνα]
[Αποδεκτών_Διευθύνσεις_Ηλεκτρονικές]
[Χώρες]
Όχι
Οι εγγραφές των συμβασιούχων του Rescom που καταλήγουν στον v_vd_hrms
είναι αυτές για τις οποίες έχει οριστεί όνομα χρήστη για το λογαριασμό του φυσικού προσώπου. Ο ορισμός ονόματος χρήστη γίνεται μέσα από το διαδικτυακό περιβάλλον του uRescom.
Το uRescom
παρέχεται από τη GUNet
σε μορφή Docker containers για εύκολη εγκατάσταση.
Το ίδρυμα χρειάζεται απλά να εγκαταστήσει μία εικονική μηχανή (VM) σε κατάλληλη (ασφαλή)
τοποθεσία με δικτυακή πρόσβαση στη βάση του Rescom
. Το VM θα λειτουργεί ως Docker
Host και απαιτείται απλά να είναι plain vanilla Linux (προτείνεται Debian) με εγκατεστημένο
το Docker (παρέχεται κατάλληλο script στο repo για την εγκατάσταση αυτή).
Για ευκολότερη εγκατάσταση η GUNet παρέχει Docker image για τη δημιουργία installation CD (ISO image)
Just Enough OS
βασισμένου σε Debian bullseye. To public repo βρίσκεται εδώ (περιλαμβάνονται οδηγίες) ενώ το Docker image είναι το ghcr.io/gunet/jeos-builder:latest
Η λειτουργία της υπηρεσίας βασίζεται σε ένα Docker Compose stack με τα ακόλουθα στοιχεία:
uRescom
βασισμένο σε Apache+FPM και PHP (με τα κατάλληλα modules επικοινωνίας με βάσεις)uRescom-cron
για την εκτέλεση του cron job συγχρονισμούMariaDB
SQL βάση δεδομένων
Αρχιτεκτονικά, η GUNet έχει ήδη κάνει build base image για την υπηρεσία uRescom
και το κάθε ίδρυμα οφείλει να κάνει τις τροποποιήσεις στο αρχείο διαμόρφωσης και να εκδόσει τα δικά του πιστοποιητικά (certificates) τα οποία χρησιμοποιούνται τόσο από το web περιβάλλον uRescom
, όσο και από τη βάση δεδομένων MariaDB
κατά τη σύνδεση με το σύστημα IDM.
Παράλληλα, για λόγους δοκιμών και εξοικείωσης με την υπηρεσία παρέχεται και testing stack το οποίο περιέχει επιπλέον:
CAS
SSO server για την πιστοποίηση χρηστώνOpenLDAP
LDAP server με δοκιμαστικούς χρήστες.MSSQL
SQL server με δοκιμαστικό σχήμα και δεδομένα τουRescom
- MSSQL data init container το οποίο φροντίζει ώστε να αρχικοποιήσει τα δεδομένα της MSSQL βάσης με βάση
το σχήμα και δοκιμαστικά δεδομένα για το
Rescom
. Σημειώνουμε ότι αναλόγως με το υλικό στο οποίο τρέχει το stack είναι πιθανό να απαιτηθεί αρκετός χρόνος ώστε να ξεκινήσουν όλα τα components του.
Το κάθε ίδρυμα χρειάζεται να ασχοληθεί μόνο με το φάκελο institution
και το αρχείο variables.env
Τα στοιχεία πρέπει να επικαιροποιηθούν πριν την πρώτη εκτέλεση του Docker compose stack. Από τη στιγμή που θα γίνει η πρώτη εκτέλεση θα αρχικοποιηθούν τα στοιχεία της βάσης της MariaDB όπως και θα δημιουργηθούν χρήστες με αποτέλεσμα τυχόν αλλαγές να απαιτούν είτε την πλήρη διαγραφή του stack μαζί με το MariaDB data volume, είτε τη χειροκίνητη σύνδεση στη MariaDB για την αλλαγή στοιχείων.
Για το αρχείο variables.env
, ιδιαίτερα σημαντικές είναι οι μεταβλητές:
URESCOM_SITE
: Θα πρέπει να είναι το FQDN του uRescom site, πχhttps://urescom.uoi.gr
URESCOM_CAS_HOSTNAME
: To hostname του CAS SSO. Για τα ιδρύματα με GUNet IDM Θα είναι τοsso.<institution>.gr
(πχsso.uoi.gr
για το Πανεπιστήμιο Ιωαννίνων)URESCOM_DOMAIN
: Συνήθης κατάληξη των ιδρυματικών email (συνήθως<institution>.gr
)URESCOM_SQL_TRUST_CERT
: Αν ο MSSQL server τουRescom
διαθέτει πιστοποιητικό από έγκυρη αρχή πιστοποίησης και επιθυμούμε να το ελέγχουμε μπορούμε να θέσουμε την τιμήyes
. Είναι αυτονόητο ότι σε αυτή την περίπτωση η σύνδεση με τηRescom
θα αποτύχει αν πχ το πιστοποιητικό της βάσης λήξει χωρίς να ανανεωθεί.VDUSER_PASSWORD
: Το password που θα χρησιμοποιηθεί από το χρήστηvduser
από την υπηρεσία IDM. Σημειώνεται ότι επιτρέπεται η διαδικτυακή σύνδεση στην MariaDB μόνο από τις IPs τουidm-gw.gunet.gr
και το διαχειριστικό υποδίκτυο της GUNet (195.134.100.0/24
) και τυχόν IP ACLs κατά τη διαδρομή θα πρέπει να επιτρέπουν συνδέσεις στην πόρτα3306
από αυτές τις IPs (και μόνο).
Στο φάκελο institution
υπάρχουν δύο υπο-φάκελοι:
certs
για τα πιστοποιητικά της υπηρεσίας (χρησιμοποιούνται από το web περιβάλλον και την MariaDB)config
με τα αρχεία διαμόρφωσης
Το urescom_admin.sh
script διαχείρισης έχει λειτουργία test
που θα εκτελέσει μία υποτυπώδη σειρά από ελέγχους ότι οι μεταβλητές και πιστοποιητικά έχουν τεθεί σωστά.
Επίσης υπάρχει ο φάκελος test
ο οποίος γίνεται volume mounted σε περίπτωση testing περιβάλλοντος στο http location /test
και περιέχει τα εξής βοηθητικά αρχεία:
info.php
με αρχείο το οποίο απλά καλεί τηphpinfo()
test.php
με αρχείο το οποίο δοκιμάζει τις συνδέσεις προς τις βάσεις με αναλυτικό debugging Καθώς είναι volume mounted, κάθε αλλαγή στα αρχεία αυτά θα φανεί απευθείας και στα αντίστοιχα στοuRescom
container
Για λόγους διευκόλυνσης υπάρχουν τα παρακάτω βοηθητικά scripts:
scripts/install_docker.sh
για την εγκατάσταση του Docker subsystem (πρέπει να εκτελεστεί ως root)urescom_admin.sh
για τη διαχείριση του Docker compose stack
Στο φάκελο χρειάζεται να ενσωματωθούν το certificate της υπηρεσίας στο αρχείο server.crt
και το αντίστοιχο
private key στο αρχείο privkey.pem
(μη κρυπτογραφημένο). Είναι απαραίτητο το αρχείο να είναι αναγνώσιμο από όλους καθώς διαφορετικά δε θα λειτουργήσει η MariaDB.
Τυπικά, τα πιστοποιητικά που εκδίδουν τα ιδρύματα (Sectigo ή HARICA) περιέχουν link (Authority Information Access
) και προς την ιεραρχία των CA που υπέγραψαν τα πιστοποιητικό με συνέπεια οι browsers να μπορούν να επιβεβαιώσουν το πιστοποιητικό χωρίς να χρειάζεται το πλήρες certificate chain στο αρχείο. Αν κάποιος επιθυμεί να συμπεριλάβει όλο το chain στο αρχείο, το πρώτο certificate θα πρέπει να είναι το server certificate και το τελευταίο η root CA.
Η GUNet παρέχει repo με οδηγίες και κατάληλο Docker image για την εύκολη δημιουργία αιτήματος CSR, την κρυπτογράφηση ενός private key και την έκδοση ενός self-signed certificate
Για λόγους ευκολίας στο φάκελο υπάρχει ήδη ένα self-signed private key/certificate pair
Στο φάκελο config
υπάρχουν δύο αρχεία:
_config.php
με τη διαμόρφωση της υπηρεσίας. Τυπικά δεν απαιτούνται ιδιαίτερες μεταβολές καθώς οι περισσότερες τιμές ορίζονται μέσα από μεταβλητές στο αρχείοvariables.env
. Εξαίρεση αποτελεί ο πίνακας$cas_allowed_usernames_arr
ο οποίος περιέχει τα usernames (πιστοποιημένα μέσω CAS SSO) που θα έχουν πρόσβαση στην εφαρμογή.acl.conf
για τον ορισμό αν απαιτείται Apache IP ACLs για περιορισμό πρόσβασης στην εφαρμογή.
Το script έχει αναλυτικό help page αν εκτελεστεί χωρίς κάποιο argument.
Βασικές λειτουργίες είναι:
./urescom_admin.sh recreate
το οποίο θα πρέπει να χρησιμοποιηθεί την πρώτη φορά ώστε να γίνουν pull τα κατάλληλα Docker images και να ανέβει το συνολικό stack. Αν υπάρξουν αλλαγές στο φάκελο institution ή γνωρίζουμε ότι υπάρχει διαθέσιμη νέα έκδοση τουuRescom
base Docker image θα πρέπει να εκτελεστεί ξανά../urescom_admin.sh status
για να δούμε την κατάσταση του stack./urescom_admin.sh down
για να κατεβάσουμε το stack με παράλληλη διαγραφή των containers. Το volume της MariaDB SQL βάσης δεδομένων θα παραμείνει. Δεν πρόκειται για καταστροφική ενέργεια καθώς τα containers θα δημιουργηθούν ξανά από τα Docker images στο επόμενοup
../urescom_admin.sh up
για να ανέβει ξανά το stack. Η εντολή είναι χρήσιμη σε περίπτωση που έχουμε κάνει down, ή σε περίπτωση που αλλάξουμε κάτι στο αρχείοvariables.env
και_config.php
./urescom_admin.sh bash
για να ανοίξει bash shell στο container. Η εγκατάσταση του uRescom βρίσκεται στο φάκελο/var/www/urescom
που θα είναι και working directory του shell. Σημειώνουμε ότι ο container έχει εγκατεστημένοvi
ενώ είναι δυνατή η on the fly εγκατάσταση Debian πακέτων μεapt-get update && apt-get install -y <package name>
./urescom_admin.sh remove
για να αφαιρεθούν εντελώς τόσο τα containers (που πρώτα θα κατέβουν αν εκτελούνται) όσο και τα Docker images ώστε ο διαχειριστής να μπορεί να ξεκινήσει από το μηδέν αν το επιθυμεί../urescom_admin.sh destroy
για να γίνει πλήρης αφαίρεση της εγκατάστασης με διαγραφή containers, Docker images και του MariaDB data volume. Προσοχή: Αποτελεί την μόνη επιλογή που πραγματοποιεί διαγραφή δεδομένων και δε γίνεται κάποια αυτόματη παραγωγή backup της βάσης πριν την εκτέλεση της λειτουργίας αυτής../urescom_admin.sh backup [dst]
για να πραγματοποιηθεί backup των στοιχείων της βάσης (urescom
) στο αρχείο<dst>
ή αν δεν παρασχεθεί στο αρχείο/var/tmp/urescom.sql
./urescom_admin.sh test
για να πραγματοποιηθεί μία σειρά από απλούς ελέγχους ότι οι μεταβλητές περιβάλλοντος και το πιστοποιητικό της υπηρεσίας έχουν οριστεί σε παραγωγικές τιμές.
Αν η μεταβλητή περιβάλλοντος URESCOM_TESTING
είναι διαθέσιμη (πχ με export URESCOM_TESTING=1
) τότε το script διαχείρισης urescom_admin.sh
θα περιλάβει και το δοκιμαστικό περιβάλλον ενώ θα θέσει τις μεταβλητές κατάλληλα ώστε να μπορεί να λειτουργήσει σωστά.
Η υπηρεσία σε δοκιμαστικό περιβάλλον θα είναι διαθέσιμη στη σελίδα https://localhost
Ο ευκολότερος τρόπος για την αναζήτηση χρηστών κατά την πρώτη επαφή με το περιβάλλον είναι να αναζητηθούν "πρόσφατοι" συμβασιούχοι μέσω του tab Νέοι συμβασιούχοι
. Μπορεί να επιλεχθεί κάποιο από αυτά για να προστεθεί loginName.
Για δοκιμές μπορούν να χρησιμοποιηθούν τα username/password:
test/test
gunetdemo/gunetdemo
Οι ανάγκες του JeOS που παρέχει η GUNet στο δίσκο είναι περίπου 1.5 GB
- Χώρος στο δίσκο:
1.3GB
- uRescom:
660MB
- DB:
400MB
+200MB
για δεδομένα (αναλόγως με τα μεγέθη του κάθε ιδρύματος)
- uRescom:
- Μνήμη:
200MB
- uRescom:
50MB
- DB:
150MB
- uRescom:
- Χώρος στο δίσκο:
3.3GB
- uRescom:
660MB
- DB:
400MB
+200MB
για δεδομένα - CAS:
320MB
- LDAP:
110MB
- MSSQL:
1.5GB
+50MB
για δεδομένα
- uRescom:
- Μνήμη:
2GB
- uRescom:
50MB
- DB:
150MB
- CAS:
800MB
- LDAP:
20MB
- MSSQL:
1GB
- uRescom:
- Είναι αυτονόητο ότι η υπηρεσία
uRescom
θα πρέπει να είναι προσβάσιμη μέσωHTTPS
στους διαχειριστές της υπηρεσίας (πόρταTCP/443
). Επιπλέον θα πρέπει να μπορεί να συνδεθεί στην πόρταTCP/1433
του SQL server της βάσης τουRescom
- Από πλευράς GUNet IDM θα πρέπει να είναι δυνατή η σύνδεση στην πόρτα
TCP/3306
από τις IP της DNS εγγραφήςidm-gw.gunet.gr
προκειμένου να μπορεί να λειτουργήσει ο συγχρονισμός με τον πίνακαv_vd_hrms
.