Κυριακή 24 Μαΐου 2009

insCRM: Δικαιώματα χρηστών (2)

Κατά την λειτουργία της εφαρμογής insProject συνειδητοποιήσαμε ότι το ζήτημα των δικαιωμάτων είναι κρίσιμο για μια μεγάλη (enterprise) εφαρμογή.

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

Σχεδιάσαμε (και υλοποιήσαμε) για την επόμενη εφαρμογή (insCRM) ένα πλήρες σύστημα που ελπίζουμε ότι θα αντέξει και στις πιο σύνθετες απαιτήσεις. Βασίζεται στις αρχές του RBAC (Role Based Access Control).

Οπως και στο προηγούμενο σύστημα ξεκινάμε από τους Ρόλους (roles) (πχ.Γραμματέας, HelpDesk, Ταμίας, Λογιστής, Πωλητής κλπ).

Ιεραρχία

Εδώ όμως μπορούμε να έχουμε ιεραρχία. Ο ρόλος Προϊστάμενος Λογιστηρίου έχει όλα τα δικαιώματα του ρόλου Λογιστής συν κάποια επιπλέον.

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

Η ιεραρχική σχεδίαση δεν προσθέτει δυνατότητες στο σύστημα. Θα μπορούσε να γίνει το ισοδύναμο με πολύ περισσότερη εργασία. Την εργασία όμως αυτή την χρεώνεται ο χρήστης κατά την διαδικασία του "Customization" και ανεβάζει πολύ το κόστος της εγκατάστασης. Επίσης αυξάνονται αναλογικά και οι πιθανότητες λάθους (που μεταφράζεται σε κόστος ή/και κινδύνους).

Στατικός διαχωρισμός καθηκόντων (static separation of duties)

Υπάρχουν περιπτώσεις που δύο ρόλοι είναι ασύμβατοι και δεν μπορούν να ανατεθούν στο ίδιο πρόσωπο. (π.χ. Νοσοκόμος<=>Ιατρός,Ταμίας<=>Επιτηρητής Ταμείων κλπ).

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

Δυναμικός διαχωρισμός καθηκόντων (dynamic separation of duties)

Υπάρχουν περιπτώσεις που δύο ρόλοι είναι ασύμβατοι μεν αλλά μπορούν να ανατεθούν στο ίδιο πρόσωπο.

Απλά δεν είναι δυνατόν να ενεργοποιηθούν ταυτόχρονα. Π.χ. Ο Προιστάμενος Ταμείων μπορεί να εξυπηρετεί τους πελάτες (ως Ταμίας) όταν υπάρχει πολύ δουλιά (ή λίγο προσωπικό) αλλά δεν μπορεί να έχει και τους δύο ρόλους ταυτόχρονα. Αν κάποια ενέργεια του Ταμία χρειάζεται έγκριση, θα πρέπει να δωθεί από άλλο πρόσωπο.

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

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

Δικαιώματα

Οι σημαντικότερες αλλαγές έχουν γίνει στον τομέα των δικαιωμάτων. Τα δικαιώματα δεν βασίζονται τόσο στα αντικείμενα της Βάσης Δεδομένων (Πελάτες, Εργα, Εργασίες, Θέματα κλπ) όσο στις υπηρεσίες που η εφαρμογή παρέχει στους χρήστες.

Ενώ στο προηγούμενο σχήμα θα είχαμε Events (Προβολή,Μεταβολή,Διαγραφή) (όπου Event=Τηλεφώνημα, Συνάντηση, email, σεμινάριο, και γενικά επικοινωνία φυσικών προσώπων), τώρα έχουμε:

  • Καταχώρηση event
  • Καταχώρηση event πλην εμπιστευτικών στοιχείων
  • Τροποποίηση event
  • Τροποποίηση event πλην εμπιστευτικών στοιχείων
  • Προβολή όλων των events
  • Προβολή όλων των events χωρίς τα εμπιστευτικά στοιχεία
  • Προβολή όλων των events εκτός αυτών που έχουν χαρακτηριστεί εμπιστευτικά
  • Προβολή των events που συμμετέχω
  • Προβολή των events που συμμετέχω χωρίς εμπιστευτικά στοιχεία
  • Προβολή των events που συμμετέχουν άμεσα υφιστάμενοι μου
  • Προβολή των events που συμμετέχουν άμεσα υφιστάμενοι μου χωρίς εμπιστευτικά στοιχεία
Όπου εμπιστευτικά στοιχεία συνήθως είναι οικονομικά στοιχεία.

Είναι πλέον σχετικά εύκολο αν κάποιος πελάτης χρειάζεται ένα νέο δικαίωμα που δεν είχε σχεδιαστεί, όπως: "Προβολή των events που συμμετέχουν υφιστάμενοι μου όλων των βαθμίδων" (δηλ. υφιστάμενοι των υφισταμένων μου) τότε είναι σχετικά εύκολο να προστεθεί.

Συνεργαζόμενες εταιρείες

Η υλοποίηση αυτή δίνει την δυνατότητα να βρίσκονται στην ίδια ΒΔ μια ομάδα συνεργαζόμενων εταιρειών ή φορέων (πανεπιστήμια, δημόσιοι οργανισμοί, υπουργεία).

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