Δικαιώματα πρόσβασης στο UPP. RLS

24.07.2023

Το αντικείμενο διαμόρφωσης "ρόλος" δίνει ένα σύνολο δικαιωμάτων σε λειτουργίες (ενέργειες) πάνω σε αντικείμενα διαμόρφωσης.

Ρόλος «Πλήρης Δικαιώματα».

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

Αυτό που το διακρίνει από άλλους ρόλους είναι η παρουσία του δικαιώματος της «Διοίκησης».

Εάν δημιουργηθεί τουλάχιστον ένας χρήστης, το σύστημα αρχίζει να ελέγχει την παρουσία του δικαιώματος «Διαχείριση» - τουλάχιστον ένας χρήστης πρέπει να το έχει.

Περιορισμοί πρόσβασης σε επίπεδο εγγραφής

Ασφάλεια επιπέδου γραμμής (RLS) – περιορισμός σε επίπεδο εγγραφής.

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

  • ρόλους,
  • παράμετροι συνεδρίας,
  • λειτουργικές επιλογές,
  • προνομιούχες κοινές ενότητες,
  • λέξη-κλειδίΕΠΙΤΡΕΠΕΤΑΙ στη γλώσσα ερωτήματος.

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

Τεχνική εφαρμογή περιορισμών πρόσβασης στο 1C

Το 1C δημιουργεί ένα αίτημα στο DBMS. Το σύμπλεγμα διακομιστή προσθέτει μια ενότητα WHERE στο αίτημα, το οποίο περιέχει το κείμενο της συνθήκης για τον περιορισμό της πρόσβασης μέσω RLS και, στη συνέχεια, αυτό το αίτημα αποστέλλεται στο DBMS, τα εξαγόμενα δεδομένα επιστρέφονται στον πελάτη 1C.


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

Μια τέτοια υλοποίηση του μηχανισμού επηρεάζει σε μεγάλο βαθμό την απόδοση.

Τρόποι παράκαμψης περιορισμών πρόσβασης.

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

ΕΝΑ) Προνομιακή ενότητα είναι μια κοινή ενότητα με τη σημαία "Προνομιούχα" στις ιδιότητες.

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


Β) Επίσης προνομιούχοςη λειτουργία μπορεί να ενεργοποιηθεί για ενότητες αντικειμένων εγγράφων. Αυτό γίνεται στις ιδιότητες εγγράφου, σημαία

  • Προνομιακή μεταχείριση κατά τη διεξαγωγή
  • Προνομιακή λειτουργία κατά την ακύρωση μιας συναλλαγής


Β) Μέθοδος SetPrivilegedMode()

Η εντολή συστήματος σάς επιτρέπει να κάνετε μέρος του κώδικα οποιασδήποτε μονάδας προνομιακό.

Από την επόμενη γραμμή κώδικα, θα λειτουργήσει η προνομιακή λειτουργία εκτέλεσης.

Θα λειτουργεί μέχρι τη γραμμή για την απενεργοποίηση αυτής της λειτουργίας ή μέχρι το τέλος της διαδικασίας/λειτουργίας

(Αληθής);

// οποιοσδήποτε κώδικας εδώ θα εκτελεστεί χωρίς έλεγχο δικαιωμάτων και RLS

SetPrivilegedMode(Ψέμα) // ή τέλος διαδικασίας / συνάρτησης

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

Εάν σε μια διαδικασία ή συνάρτηση καλεί μια μέθοδο SetPrivilegedMode(Λάθος) πραγματοποιήθηκαν περισσότερες από κλήσεις μεθόδων SetPrivilegedMode(True ), τότε θα γίνει μια εξαίρεση

Λειτουργία PrivilegedModeΤο () επιστρέφει True εάν η προνομιακή λειτουργία εξακολουθεί να είναι ενεργοποιημένη και False εάν είναι εντελώς απενεργοποιημένη. Αυτό δεν αναλύει τον αριθμό των ρυθμίσεων προνομιακής λειτουργίας σε μια συγκεκριμένη λειτουργία.

Όλες οι καλούμενες διαδικασίες και συναρτήσεις θα εκτελεστούν επίσης σε προνομιακή λειτουργία.


Είναι επίσης δυνατό να ξεκινήσετε μια προνομιακή συνεδρία. Αυτή είναι μια συνεδρία στην οποία η προνομιακή λειτουργία καθιερώνεται από την αρχή του συστήματος. Επιπλέον, κατά τη λειτουργία η μέθοδος PrivilegedMode() θα επιστρέφει πάντα True και η δυνατότητα απενεργοποίησης της προνομιακής λειτουργίας δεν υποστηρίζεται. Μόνο ένας χρήστης που έχει δικαιώματα διαχειριστή (Δικαίωμα διαχείρισης) μπορεί να ξεκινήσει μια προνομιακή περίοδο λειτουργίας. Μπορείτε να ξεκινήσετε μια συνεδρία χρησιμοποιώντας το πλήκτρο γραμμή εντολώνεκκίνηση της εφαρμογής πελάτη UsePrivilegedMode ή της παραμέτρου συμβολοσειράς σύνδεσης βάσης πληροφοριών prmod .


Ανακύπτει φυσικά το ερώτημα: Γιατί τότε να ρυθμίσετε καθόλου περιορισμούς πρόσβασης, εάν μπορεί να παρακαμφθεί τόσο εύκολα;

Ασφαλής λειτουργία.

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

SetSafeMode().

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

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

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

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

Ρύθμιση περιορισμών πρόσβασης

Το RLS μπορεί να διαμορφωθεί μόνο για δικαιώματα:

  • διαβάστε (επιλέξτε)
  • προσθήκη (εισαγωγή)
  • αλλαγή (ενημέρωση)
  • διαγράφω

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

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

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

Για όλα τα άλλα δικαιώματα δεν υπάρχει τέτοια επιλογή.

Ας προσθέσουμε έναν νέο περιορισμό για το δικαίωμα "ανάγνωσης" του καταλόγου "Ονοματολογία". Θα ανοίξει μια λίστα πεδίων για τα οποία μπορείτε να διαμορφώσετε τον προστιθέμενο περιορισμό.

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

Εάν επιλέξετε τη σημαία " Άλλα πεδία", ο περιορισμός θα διαμορφωθεί για όλα τα πεδία πίνακα, εκτός από τα πεδία για τα οποία ορίζονται ρητά περιορισμοί.


*Δυνατότητα: για δικαιώματα προσθήκης, αλλαγής, διαγραφής:

  • Ο περιορισμός μπορεί να διαμορφωθεί μόνο για όλα τα πεδία.
  • Μπορεί να υπάρχει μόνο ένας περιορισμός.

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

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

  • Στα μητρώα συσσώρευσης, οι περιορισμοί πρόσβασης μπορούν να περιέχουν μόνο μετρήσεις του κύριου αντικειμένου του περιορισμού.
  • στα λογιστικά μητρώα, οι περιορισμοί μπορούν να χρησιμοποιούν μόνο μετρήσεις ισολογισμού του κύριου αντικειμένου του περιορισμού

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

Μηχανισμός επιβολής περιορισμών πρόσβασης.

Οποιαδήποτε λειτουργία σε δεδομένα που είναι αποθηκευμένα σε μια βάση δεδομένων στο 1C:Enterprise οδηγεί τελικά σε κλήση στη βάση δεδομένων με κάποιο αίτημα για ανάγνωση ή αλλαγή των δεδομένων. Κατά τη διαδικασία εκτέλεσης ερωτημάτων στη βάση δεδομένων, οι εσωτερικοί μηχανισμοί του 1C:Enterprise επιβάλλουν περιορισμούς πρόσβασης. Σε αυτή την περίπτωση:

  • Δημιουργείται μια λίστα δικαιωμάτων(ανάγνωση, προσθήκη, τροποποίηση, διαγραφή), μια λίστα πινάκων βάσης δεδομένων και μια λίστα πεδίων που χρησιμοποιούνται από αυτό το ερώτημα.
  • Από όλους τους ρόλους του τρέχοντος χρήστη έχουν επιλεγεί περιορισμοί πρόσβασηςσε δεδομένα για όλα τα δικαιώματα, τους πίνακες και τα πεδία που εμπλέκονται στο αίτημα. Επιπλέον, εάν ένας ρόλος δεν περιέχει περιορισμούς στην πρόσβαση στα δεδομένα ενός πίνακα ή πεδίου, αυτό σημαίνει ότι οι τιμές των απαιτούμενων πεδίων από οποιαδήποτε εγγραφή είναι διαθέσιμες σε αυτόν τον πίνακα. Με άλλα λόγια, η απουσία περιορισμού πρόσβασης δεδομένων σημαίνει την ύπαρξη περιορισμού WHERE IS Truth.
  • Ανακτά τις τρέχουσες τιμές όλων των παραμέτρων συνεδρίας και των λειτουργικών επιλογώνσυμμετέχοντας στους επιλεγμένους περιορισμούς.

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

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

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

Οι δομημένες συνθήκες προστίθενται στα ερωτήματα SQL με τα οποία το 1C: Enterprise έχει πρόσβαση στο DBMS. Κατά την πρόσβαση σε δεδομένα από συνθήκες περιορισμού πρόσβασης, δεν εκτελείται έλεγχος δικαιωμάτων (ούτε για αντικείμενα μεταδεδομένων ούτε για αντικείμενα βάσης δεδομένων). Επιπλέον, ο μηχανισμός για την προσθήκη συνθηκών εξαρτάται από την επιλεγμένη μέθοδο λειτουργίας των περιορισμών "όλοι" ή "επιτρεπόμενοι".


*Δυνατότητα: Εάν ένας χρήστης έχει πρόσβαση σε πολλούς ρόλους με ρυθμισμένους περιορισμούς σε επίπεδο εγγραφής για ένα αντικείμενο, τότε σε αυτήν την περίπτωση οι συνθήκες των περιορισμών προστίθενται χρησιμοποιώντας τη λογική λειτουργία "OR". Με άλλα λόγια, οι εξουσίες του χρήστη είναι αθροιστικές.

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

Μέθοδος «όλα».

Όταν επιβάλλονται περιορισμοί χρησιμοποιώντας τη μέθοδο "όλα", προστίθενται συνθήκες και πεδία στα ερωτήματα SQL, ώστε το 1C:Enterprise να μπορεί να λάβει πληροφορίες σχετικά με το εάν, κατά την εκτέλεση ενός ερωτήματος βάσης δεδομένων, χρησιμοποιήθηκαν ή όχι δεδομένα που ήταν απαγορευμένα για έναν συγκεκριμένο χρήστη. Εάν χρησιμοποιήθηκαν απαγορευμένα δεδομένα, το αίτημα θα διακοπεί λόγω παραβίασης πρόσβασης.

Η επιβολή περιορισμών πρόσβασης χρησιμοποιώντας τη μέθοδο "όλα" παρουσιάζεται σχηματικά στο σχήμα:


Μέθοδος "Επιτρεπόμενη".

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


Περιορισμοί πρόσβασης δεδομένων επιβάλλονται σε αντικείμενα βάσης δεδομένων τη στιγμή που το 1C:Enterprise αποκτά πρόσβαση στη βάση δεδομένων.

Στην έκδοση πελάτη-διακομιστή του 1C:Enterprise, εφαρμόζονται περιορισμοί στον διακομιστή 1C:Enterprise.

Ωστόσο, αυτή η επιλογή (ΕΠΙΤΡΕΠΕΤΑΙ) δεν θα λειτουργήσει εάν σε ένα ερώτημα αναφερόμαστε σε έναν πίνακα για τον οποίο δεν έχουν ρυθμιστεί περιορισμοί πρόσβασης, αλλά ο οποίος περιέχει αναφορές σε σειρές πίνακα με ρυθμισμένους περιορισμούς. Σε αυτήν την περίπτωση, το αποτέλεσμα του ερωτήματος θα εμφανίσει "<Объект не найден>......" αντί για την τιμή του πεδίου αναφοράς.


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

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

Είναι σημαντικό ότι εάν ένα ερώτημα δεν προσδιορίζει τη λέξη-κλειδί ΕΠΙΤΡΕΠΕΤΑΙ, τότε όλες οι επιλογές που καθορίζονται σε αυτό το ερώτημα δεν πρέπει να έρχονται σε αντίθεση με κανέναν από τους περιορισμούς ανάγνωσης στα αντικείμενα βάσης δεδομένων που χρησιμοποιούνται στο ερώτημα. Επιπλέον, εάν το ερώτημα χρησιμοποιεί εικονικούς πίνακες, τότε οι αντίστοιχες επιλογές πρέπει να εφαρμοστούν στους ίδιους τους εικονικούς πίνακες.

Εξάσκηση 1. Εργαλείο δημιουργίας ερωτημάτων σε ρυθμίσεις RLS.

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


Καρτέλα "Πίνακες".

Ο κύριος πίνακας θα είναι ο πίνακας του αντικειμένου για το οποίο διαμορφώνεται ο περιορισμός.

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

Καρτέλα "Προϋποθέσεις"

Εδώ μπορείτε να διαμορφώσετε τις πραγματικές συνθήκες περιορισμού πρόσβασης

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

“Ονοματολογία WHERE Ονοματολογία. Τιμή > 500”

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


Μετά τη ρύθμιση ενός περιορισμού πρόσβασης, ο πίνακας θα εμφανίζει μόνο στοιχεία που ικανοποιούν την προϋπόθεση:


Εξαφανίστηκαν και ομάδες. Ας αλλάξουμε το κείμενο του περιορισμού

«Ονοματολογία WHERE Ονοματολογία. Τιμή > 500

Ή Ονοματολογία. Αυτή είναι μια ομάδα"

Λοιπόν, τώρα αυτό είναι που χρειάζεστε.


Εάν αφαιρέσετε την εμφάνιση του πεδίου «κωδικός» στις ρυθμίσεις λίστας, θα εμφανιστούν όλα τα στοιχεία του καταλόγου, π.χ. ο περιορισμός δεν λειτούργησε. Εάν ορίσετε να εμφανίζεται το πεδίο "Κωδικός", ο περιορισμός θα λειτουργήσει.


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


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


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

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

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

Περιορισμοί κατά τη ρύθμιση της πρόσβασης (RLS).

  • Δεν υπάρχει ενότητα Περίληψη.
  • Δεν είναι δυνατή η πρόσβαση σε πίνακες εικονικών καταχωρητών.
  • Δεν μπορείτε να χρησιμοποιήσετε ρητά παραμέτρους.
  • Μπορεί να χρησιμοποιηθεί σε ένθετα ερωτήματα any>/span> εργαλεία γλώσσας ερωτημάτων εκτός από:
    • χειριστής ΣΤΗΝ ΙΕΡΑΡΧΙΑ?
    • ΑΠΟΤΕΛΕΣΜΑΤΑ προτάσεις?
    • ένθετα αποτελέσματα ερωτημάτων δεν πρέπει να περιέχει μέρη πίνακα>/span>;
    • εικονικά τραπέζια, ιδίως Υπόλοιπα και Κύκλοι Εργασιών

Πρακτική 2. Ονοματολογία με τρέχουσα τιμή.

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

Διάλυμα:

Προσθέτουμε έναν νέο κανόνα περιορισμού πρόσβασης για τον κατάλογο "Ονοματολογία" με το δικαίωμα "ανάγνωση".
Επιλέξτε «άλλα πεδία».
Στον κατασκευαστή προσθέτουμε ένα ένθετο ερώτημα. Σε αυτό, επιλέξτε τον πίνακα μητρώου πληροφοριών "Τιμές προϊόντων".
Δεν υπάρχει καρτέλα "παραγγελία" - αυτό είναι ένα χαρακτηριστικό του σχεδιαστή ερωτημάτων για τη δημιουργία ενός αιτήματος περιορισμού πρόσβασης.
Στην καρτέλα "Για προχωρημένους", ορίστε το "first 999999999", εμφανίζεται η καρτέλα "παραγγελία".
Ρυθμίζουμε την παραγγελία κατά το πεδίο «Περίοδος» με φθίνουσα σειρά.
Στη συνέχεια, δημιουργήσαμε μια σύνδεση μεταξύ του κύριου πίνακα και του δευτερεύοντος ερωτήματος με αναφορά.


Πρότυπα περιορισμού πρόσβασης.

Πρακτική 3. Περιορισμός σε «αντισυμβαλλόμενους» κατά τιμή σε σταθερά.

Ας ορίσουμε έναν περιορισμό πρόσβασης για τον κατάλογο Counterparties με βάση την τιμή που είναι αποθηκευμένη στη Constant.

Επιπλέον, πρέπει να ορίσετε έναν περιορισμό για όλα τα αντικείμενα που χρησιμοποιούν τον κατάλογο "Αντισυμβαλλόμενοι" στις λεπτομέρειες.

Διάλυμα

Για τον κατάλογο "Αντισυμβαλλόμενοι", θα ορίσουμε έναν περιορισμό για το δικαίωμα "ανάγνωσης" προσθέτοντας ένα ένθετο ερώτημα στη σταθερά στην ενότητα "Προϋποθέσεις". Μην ξεχνάτε Αυτό είναι μια ομάδα.

Βλέπουμε πρόβλημα, ο κατάλογος Αντισυμβαλλόμενοι φιλτράρεται σωστά και εμφανίζονται όλα τα έγγραφα με το χαρακτηριστικό "Counterparty", ορισμένα με "σπασμένους" συνδέσμους στο χαρακτηριστικό "Counterparty".

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

Ας αντιγράψουμε και ας τροποποιήσουμε ελαφρώς το κείμενο της συνθήκης RLS από τον κατάλογο "Counterparties". Αυτό πρέπει να γίνει όσες φορές υπάρχουν αντικείμενα.

Ή χρησιμοποιήστε ένα μοτίβο περιορισμών πρόσβασης για να αποφύγετε προβλήματα αντιγραφής κώδικα.

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

Μπορείτε να προσθέσετε οποιοδήποτε κείμενο περιορισμού πρόσβασης στο πρότυπο. Το πρότυπο καλείται χρησιμοποιώντας το σύμβολο "#". Για παράδειγμα, #TemplateCounterparty.

Μέσω # σε 1C γράφονται οδηγίες στον προεπεξεργαστή. Στο πλαίσιο της εκτέλεσης των ρυθμίσεων περιορισμού πρόσβασης, η πλατφόρμα αντικαθιστά το κείμενο κλήσης προτύπου με το κείμενο προτύπου.

Ας προσθέσουμε το κείμενο μετά τη λέξη WHERE στο πρότυπο "Πρότυπο εργολάβου", εκτός από το κείμενο για το EtoGroup.

Παράμετροι σε πρότυπα περιορισμού πρόσβασης.

Ας συνεχίσουμε να λύνουμε το πρόβλημα 2.

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

Ας αλλάξουμε το όνομα του κύριου πίνακα στο κείμενο του προτύπου σε "#CurrentTable"

Το "#CurrentTable" είναι μια προκαθορισμένη παράμετρος.

Και μέσα από μια τελεία υποδεικνύουμε τον αριθμό της παραμέτρου εισόδου - “.#Parameter(1)

Το "#Parameter" είναι επίσης μια προκαθορισμένη τιμή. Μπορεί να περιέχει έναν αυθαίρετο αριθμό παραμέτρων εισόδου. Απευθύνονται με αύξοντα αριθμό.

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

Για το έγγραφο τα εξής:

"Πωλήσεις αγαθών WHERE #TemplateCounterparty ("Counterparty")"

Κατά την κλήση ενός προτύπου περιορισμού πρόσβασης, οι παράμετροι πρέπει να μεταβιβάζονται σε αυτό μόνο ως συμβολοσειρά, δηλαδή σε εισαγωγικά.

Κύριος πίνακας - Ονοματολογία

Το κείμενο του προτύπου είναι:

#CurrentTable WHERE #CurrentTable.#Parameter(1) = #Parameter(2)

Το κείμενο του προτύπου περιέχει μέρος του κειμένου στη γλώσσα περιορισμού πρόσβασης δεδομένων και μπορεί να περιέχει παραμέτρους που επισημαίνονται χρησιμοποιώντας το σύμβολο "#".

Το σύμβολο "#" μπορεί να ακολουθείται από:

  • Μία από τις λέξεις-κλειδιά:
    • Μια παράμετρος ακολουθούμενη από τον αριθμό της παραμέτρου στο πρότυπο σε παρένθεση.
    • CurrentTable – υποδηλώνει την εισαγωγή στο κείμενο του πλήρους ονόματος του πίνακα για τον οποίο δημιουργείται ο περιορισμός.
    • CurrentTableName– υποδηλώνει την εισαγωγή στο κείμενο του πλήρους ονόματος του πίνακα (ως τιμή συμβολοσειράς, σε εισαγωγικά) στον οποίο εφαρμόζεται η εντολή, στην τρέχουσα έκδοση της ενσωματωμένης γλώσσας·
    • NameCurrentAccessRight– περιέχει το όνομα του δικαιώματος για το οποίο εκτελείται ο τρέχων περιορισμός: READ, ADD, INSERT, CHANGE, UPDATE, DELETE.
  • όνομα παραμέτρου προτύπου – σημαίνει εισαγωγή του αντίστοιχου περιορισμού παραμέτρου προτύπου στο κείμενο.
  • σύμβολο "#" - υποδηλώνει την εισαγωγή ενός χαρακτήρα "#" στο κείμενο.

Μια έκφραση περιορισμού πρόσβασης μπορεί να περιέχει:

  • Πρότυπο περιορισμού πρόσβασης, το οποίο καθορίζεται στη μορφή #TemplateName("Τιμή παραμέτρου προτύπου 1", "Τιμή παραμέτρου προτύπου 2",...). Κάθε παράμετρος προτύπου περικλείεται σε διπλά εισαγωγικά. Εάν πρέπει να καθορίσετε έναν χαρακτήρα διπλού εισαγωγικού στο κείμενο της παραμέτρου, πρέπει να χρησιμοποιήσετε δύο διπλά εισαγωγικά.
  • Λειτουργία StrContains (WhereWeLook, WhatWeLook). Η συνάρτηση έχει σχεδιαστεί για να αναζητά μια εμφάνιση της συμβολοσειράς WhatWeLook στη συμβολοσειρά WhereWeLook. Επιστρέφει True εάν εντοπιστεί το περιστατικό και False διαφορετικά.
  • Ο τελεστής + είναι για τη συνένωση συμβολοσειρών.

Για να διευκολύνετε την επεξεργασία του κειμένου προτύπου, στην καρτέλα Πρότυπα περιορισμού στη φόρμα ρόλου, κάντε κλικ στο κουμπί Ορισμός κειμένου προτύπου. Στο παράθυρο διαλόγου που ανοίγει, πληκτρολογήστε το κείμενο του προτύπου και κάντε κλικ στο OK.

Δεν μπορούν να εγκατασταθούν χρησιμοποιώντας SetParameter()ή κάτι παρόμοιο.

Οι παράμετροι σε αυτή την περίπτωση είναι:

  • Επιλογές συνεδρίας
  • Λειτουργικές επιλογές

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

Πρακτική 4. Πρόσβαση στους αντισυμβαλλομένους «σας».

Είναι απαραίτητο να ρυθμίσετε τον περιορισμό της πρόσβασης του τρέχοντος χρήστη στους «τους» αντισυμβαλλομένους.

Υπάρχει ένας κατάλογος "Χρήστες", ένας κατάλογος "Αντισυμβαλλόμενοι", έγγραφα με τα στοιχεία "Αντισυμβαλλόμενος".

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

Η επικοινωνία πρέπει επίσης να διαμορφωθεί.

Πιθανές επιλογές:

Δημιουργία συνδέσεων μεταξύ χρήστη και αντισυμβαλλομένου

  • Λεπτομέρειες στον κατάλογο αντισυμβαλλομένων
  • Μητρώο πληροφοριών

Πιθανές λύσεις στο πρόβλημα:

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

Διάλυμα.

Ας δημιουργήσουμε μια νέα παράμετρο συνεδρίας "CurrentUser" και ας τη συμπληρώσουμε στη λειτουργική μονάδα συνεδρίας.

Ας δημιουργήσουμε ένα μητρώο πληροφοριών «Συμμόρφωση διαχειριστών και εργολάβων»

Ας δημιουργήσουμε έναν νέο ρόλο και σε αυτόν έναν νέο περιορισμό πρόσβασης για το έγγραφο «Τιμολόγιο».

Στο κείμενο του αιτήματος, θα συνδέσουμε τον κύριο πίνακα με το μητρώο πληροφοριών για Account = Account και Manager = &CurrentUser. Τύπος σύνδεσης Εσωτερική.

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

Έλεγχος - οι περιορισμοί λειτουργούν

*Δυνατότητα: Εάν αλλάξετε τη λίστα των αντισυμβαλλομένων χρηστών στο μητρώο, οι περιορισμοί πρόσβασης θα τεθούν σε ισχύ αμέσως χωρίς επανεκκίνηση της περιόδου σύνδεσης χρήστη.

Πρακτική 5. Ημερομηνία απαγόρευσης αλλαγών.

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

Ας δημιουργήσουμε ένα μητρώο πληροφοριών «Ημερομηνίες Απαγόρευσης Αλλαγών» με τη διάσταση Χρήστης, πόρος Ημερομηνία Απαγόρευσης.

Ας οικοδομήσουμε τη λογική της λύσης ως εξής:

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

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

  • Εγγραφα
  • Μητρώα περιοδικών πληροφοριών

Ας δημιουργήσουμε έναν νέο ρόλο «Περιορισμοί Κατά Ημερομηνία Απαγόρευσης Αλλαγών».

Σε αυτό, για το παραστατικό «Τιμολόγιο» για τη σωστή «αλλαγή» θα προσθέσουμε έναν νέο περιορισμό πρόσβασης.

Καθορίζουμε τη ρύθμιση για όλα τα πεδία.

Το κείμενο του περιορισμού είναι:

ReceiptInvoice FROM Document.ReceiptInvoice AS ReceiptInvoice

Αλλαγή Ημερομηνιών Απαγόρευσης AS Ημερομηνία Απαγόρευσης
ΑΠΟ

ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ (ΕΠΙΛΟΓΗ
MAX (Αλλαγή απαγορευμένων ημερομηνιών. Χρήστης) AS χρήστης
ΑΠΟ
Μητρώο Πληροφοριών Ημερομηνίες Απαγόρευσης Αλλαγών AS Ημερομηνίες Απαγόρευσης Αλλαγών
ΟΠΟΥ
(Αλλαγή Απαγορευμένων Ημερομηνιών. Χρήστης = &Τρέχων Χρήστης
Ή Dates ProhibitedChanges.User = VALUE(Directory.users.EmptyLink))) AS VZ_User
BY Date of Prohibition of Changes.User = VZ_User.User) AS NestedQuery
Τιμολόγιο απόδειξης λογισμικού. Ημερομηνία > Ένθετο ερώτημα. Ημερομηνία απαγόρευσης

Ας ελέγξουμε - ο περιορισμός λειτουργεί.

Χρήση οδηγιών προεπεξεργαστή

#If Condition1 #Τότε

Αίτημα τμήματος 1

#ElseIf Condition2 #Τότε

Αίτημα τμήματος 2

#Αλλιώς

Αίτημα απόσπασμα 3

#EndIf

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

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

Το μειονέκτημα είναι ότι ο κατασκευαστής ερωτήματος δεν θα λειτουργήσει με τέτοιο κείμενο.

*Ιδιομορφία:

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

Εξάσκηση 6. Εναλλαγή "Χρήση RLS"

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

Για να γίνει αυτό, θα προσθέσουμε μια σταθερά και μια παράμετρο συνόδου με το όνομα "UseRLS".

Ας γράψουμε στο Session Module για να ορίσουμε την τιμή της παραμέτρου περιόδου λειτουργίας από την τιμή της σταθεράς.

Ας προσθέσουμε τον ακόλουθο κώδικα σε όλα τα κείμενα περιορισμού πρόσβασης:

"#If &UseRLS #Then….. #EndIf"

Ελέγχουμε - όλα λειτουργούν.

Ωστόσο, τώρα μετά την ενεργοποίηση της σημαίας "χρήση ραντάρ", οι αλλαγές δεν θα τεθούν αμέσως σε ισχύ. Γιατί;

Επειδή η παράμετρος περιόδου λειτουργίας ορίζεται κατά την έναρξη της συνεδρίας.

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


Τέλος πρώτου μέρους.

Ρύθμιση πρόσβασης στο επίπεδο εισαγωγής καταλόγου.

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

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

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

  1. Επί σε αυτό το στάδιοείναι απαραίτητο να ορίσετε ένα σύνολο ομάδων χρηστών.

Διαχειριστές?

Διευθυντές πωλήσεων?

Υπεύθυνοι αγορών.

  1. Στο δεύτερο στάδιο, καθορίζονται οι ομάδες πρόσβασης στον κατάλογο.

Αγοραστές?

Προμηθευτές;

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

Τώρα είναι απαραίτητο να περιγράψουμε τις πραγματικές ρυθμίσεις που πρέπει να εκτελεστούν στο 1C.

  1. Ας ανάψουμε" Περιορισμένη πρόσβασησε επίπεδο ρεκόρ». Υπηρεσία - διαχείριση χρήστη και πρόσβασης - Πρόσβαση σε παραμέτρους σε επίπεδο ρεκόρ. Βλέπε εικ. 1.

Θα ανοίξει η φόρμα επεξεργασίας «Παράμετροι πρόσβασης σε επίπεδο εγγραφής», βλ. 2.

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

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

Οι ομάδες εργολάβων εισάγονται στον κατάλογο «Ομάδες χρηστών», βλ. 3.

Θα ανοίξει η μορφή του στοιχείου καταλόγου «Ομάδες χρηστών», βλ. 4.

Στην αριστερή πλευρά του παραθύρου υποδεικνύεται το αντικείμενο πρόσβασης (για εμάς είναι "αντισυμβαλλόμενοι"), στα δεξιά υπάρχουν χρήστες που είναι μέλη της ομάδας, σε αυτό το παράδειγμαΑυτοί είναι «Διαχειριστές».

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

  1. Στο τρίτο βήμα, πρέπει να εισαγάγετε "ομάδες πρόσβασης αντισυμβαλλομένου" στον κατάλογο "Ομάδες πρόσβασης αντισυμβαλλομένου". Βλέπε εικ. 5.

Για το παράδειγμά μας, αυτά είναι: Αγοραστές, Προμηθευτές, Άλλοι. Βλέπε Εικ. 6.

  1. Σε αυτό το στάδιο, πρέπει να αντιστοιχίσετε μια ομάδα πρόσβασης σε κάθε στοιχείο του καταλόγου "αντισυμβαλλόμενοι". Βλέπε Εικ. 7.

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

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

Η σχέση των ομάδων χρηστών με τις ομάδες πρόσβασης αντισυμβαλλομένου επισημαίνεται με κόκκινο χρώμα. Για τις ομάδες "Purchasing Managers" και "Sales Managers", οι σχέσεις διαμορφώνονται με τον ίδιο ακριβώς τρόπο, μόνο τα αντικείμενα πρόσβασης καθορίζονται ως εκείνα στα οποία θα πρέπει να έχουν πρόσβαση, για παράδειγμα, μόνο "Suppliers" ή μόνο "Buyers". Οι σημαίες, για παράδειγμα "Ορατότητα στη λίστα" είναι τα δικαιώματα του "Αντικείμενο πρόσβασης". Από το όνομα, νομίζω ότι η λειτουργικότητα αυτών των δικαιωμάτων είναι ξεκάθαρη.

Μετά τους παραπάνω χειρισμούς, θα πρέπει να έχετε περιορισμένη πρόσβαση στον κατάλογο «Αντισυμβαλλόμενοι».

Οι υπόλοιποι κατάλογοι έχουν ρυθμιστεί παρόμοια.

Σπουδαίος:

Η περιορισμένη πρόσβαση δεν ισχύει για τον ρόλο "Πλήρης δικαιώματα".

Το σύνολο των ρόλων χρήστη πρέπει να περιέχει τον ρόλο "Χρήστης".

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

Η πλατφόρμα 1C:Enterprise 8 διαθέτει έναν ενσωματωμένο μηχανισμό για τον περιορισμό της πρόσβασης σε δεδομένα σε επίπεδο ρεκόρ. Μπορείτε να διαβάσετε γενικές πληροφορίες για αυτό εδώ. Εν ολίγοις, το RLS θα σας επιτρέψει να περιορίσετε την πρόσβαση σε δεδομένα βάσει συγκεκριμένων συνθηκών στις τιμές πεδίου. Για παράδειγμα, μπορείτε να περιορίσετε την πρόσβαση του χρήστη σε έγγραφα ανάλογα με την τιμή του χαρακτηριστικού "Οργανισμός". Ορισμένοι χρήστες θα εργαστούν με έγγραφα για τον οργανισμό "Management Company" και άλλοι με τον οργανισμό "Dairy Plant". Ως παράδειγμα.

Παρασκευή

Θα εφαρμόσουμε το παράδειγμα στη διαμόρφωση επίδειξης του SCP 1.3. Ας δημιουργήσουμε έναν χρήστη «Αποθηκευτή» και ας προσθέσουμε σε αυτόν τον ομώνυμο ρόλο «Αποθηκευτής».

Τώρα ας προχωρήσουμε απευθείας στη ρύθμιση των δικαιωμάτων πρόσβασης σε επίπεδο εγγραφής. Ας μεταβούμε στη διεπαφή "Διαχείριση χρήστη". Στο κύριο μενού, επιλέξτε "Πρόσβαση σε επίπεδο εγγραφής -> Επιλογές". Εδώ, επιλέξτε το πλαίσιο δίπλα στο "Περιορισμός πρόσβασης σε επίπεδο εγγραφής κατά τύπο αντικειμένου" και επιλέξτε "Οργανισμοί" στη λίστα αντικειμένων.

Έτσι, ενεργοποιήσαμε τη χρήση του RLS. Τώρα πρέπει να το ρυθμίσετε.

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

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

Ας προσθέσουμε τον οργανισμό "IPE "Entrepreneur" στη λίστα των αντικειμένων πρόσβασης για την ομάδα. Το είδος της κληρονομιάς των δικαιωμάτων θα παραμείνει αμετάβλητο. Θα ορίσουμε το δικαίωμα στο αντικείμενο πρόσβασης για ανάγνωση και εγγραφή. Κάντε κλικ στο "OK", οι ρυθμίσεις είναι έτοιμες. Μόλις διαμορφώσαμε το RLS σε επίπεδο οργανισμού.

Τι βλέπει ο χρήστης

Ας ξεκινήσουμε το πρόγραμμα κάτω από τον χρήστη που δημιουργήθηκε προηγουμένως και ας ανοίξουμε τον κατάλογο "Οργανισμοί". Έτσι θα μοιάζει η λίστα για τον χρήστη μας και για έναν χρήστη με πλήρη δικαιώματα:

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

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

Έχουμε αναθεωρήσει απλούστερο παράδειγμαΡυθμίσεις RLS. Στο επόμενο άρθρο θα μιλήσουμε για την υλοποίηση του μηχανισμού RLS στη διαμόρφωση "Manufacturing Enterprise Management" έκδοση 1.3.

Κάθε διευθυντής θα συμφωνήσει άνευ όρων ότι κάθε εργαζόμενος στην επιχείρηση θα πρέπει να έχει πρόσβαση μόνο στις πληροφορίες που εμπίπτουν στην αρμοδιότητά του. Για παράδειγμα, ένας αποθηκάριος σε μια αποθήκη δεν χρειάζεται απαραίτητα να δει ποιες εργασίες εκτελούνται από τον οικονομικό διευθυντή ή τον επικεφαλής λογιστή. Ωστόσο, συχνά προκύπτουν πολύ λεπτές καταστάσεις, για παράδειγμα, όταν το πρόγραμμα 1C: Enterprise 8 χρησιμοποιείται όχι για μία, αλλά για πολλές επιχειρήσεις. Καθένα από αυτά έχει τους δικούς του υπαλλήλους, οι οποίοι πρέπει να έχουν πρόσβαση μόνο σε εξουσιοδοτημένες πληροφορίες που σχετίζονται με την επιχείρησή τους.

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

Ας δούμε ένα παράδειγμα συγκεκριμένης κατάστασης. Η εταιρεία μας αποτελείται από δύο οργανισμούς. Ο πρώτος ασχολείται με τις πωλήσεις λογισμικό, στο δεύτερο - εκπαίδευση για να εργαστείτε με αυτό. Για να λάβουμε υπόψη και τους δύο αυτούς οργανισμούς χρησιμοποιούμε προϊόν λογισμικού 1C: Ενσωματωμένος αυτοματισμός 8.

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

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

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

Ο πιο σίγουρος τρόπος είναι να περιοριστεί η πρόσβαση των χρηστών σε επίπεδο ρεκόρ. Πώς να το εφαρμόσετε αυτό;

Το πρώτο πράγμα που πρέπει να κάνετε είναι να ενεργοποιήσετε το πρόγραμμα για χρήση αυτή τη μέθοδο. Για να το κάνετε αυτό χρειάζεστε:

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

Ένας παρόμοιος μηχανισμός εφαρμόζεται σε άλλες λύσεις εφαρμογών 1C:

  • (αναθεώρηση 10.3)
  • και 1Γ: Μισθοί και διαχείριση προσωπικού 8 (αναθεώρηση 2.5).

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

  • Έτσι, σε αυτά τα προγράμματα πρέπει να χωρίσουμε όλους τους χρήστες μας που εργάζονται ως μέρος της εταιρείας σε ομάδες ανά οργανισμό.
  • Στη συνέχεια, κάντε κλικ στο κουμπί «Πρόσβαση στις ρυθμίσεις».
  • Στο παράθυρο που εμφανίζεται, κάντε κλικ στο κουμπί "Προσθήκη" και εισαγάγετε το αντικείμενο πρόσβασης (στην περίπτωσή μας πρόκειται για οργανισμό).
  • Εάν πρέπει να επιτρέψουμε στους υπαλλήλους του οργανισμού να εισάγουν δεδομένα στη βάση δεδομένων πληροφοριών, τότε πρέπει να ελέγξουμε το πλαίσιο στη στήλη "Εγγραφή".

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

Κλασικό πρόβλημα: να δώσει στον χρήστη πρόσβαση σε ένα αντικείμενο, αλλά όχι σε όλα τα στοιχεία/έγγραφα, αλλά μόνο σε ορισμένα.

Για παράδειγμα, για να μπορεί ο διαχειριστής να βλέπει αναφορές μόνο για τους πελάτες του.

Ή μπορεί να είναι περιορισμός “Όλοι εκτός από κάποιους”.
Ή ο περιορισμός δεν αφορά βιβλία/έγγραφα αναφοράς, αλλά για να καταχωρήσετε δεδομένα

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

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

Γιατί RLS;

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

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

Αλλά δεν είναι μόνο αυτό.

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

Αυτό το πρόβλημα δεν μπορεί να λυθεί χρησιμοποιώντας μόνο ρόλους.– για το σκοπό αυτό έχει εφαρμοστεί μηχανισμός περιορισμού της πρόσβασης σε επίπεδο εγγραφής (RLS).

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

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

Σχετικά με το RLS - περισσότερες λεπτομέρειες: 8 βίντεο και PDF

Δεδομένου ότι αυτή είναι μια κοινή εργασία διαχείρισης 1C, προτείνουμε να εξετάσετε πιο λεπτομερή υλικά:

Περιορισμός της πρόσβασης στα δεδομένα με χρήση ρόλων

Αυτό το βίντεο εξηγεί πώς να περιορίσετε την πρόσβαση σε δεδομένα χρησιμοποιώντας ρόλους. Διευκρινίζεται ότι οι ρόλοι περιορίζουν την πρόσβαση σε έναν τύπο αντικειμένων βάσης πληροφοριών (έναν ξεχωριστό κατάλογο, αλλά όχι συγκεκριμένα στοιχεία του καταλόγου).

Περιορισμός επιπέδου εγγραφής (RLS)

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

Εφαρμογή περιορισμών πρόσβασης σε επίπεδο αρχείου για τον κατάλογο Contractors Αυτό το βίντεο εξηγεί πώς η διαμόρφωση επίδειξης "Διαχειριζόμενη εφαρμογή

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

Πώς λειτουργούν οι περιορισμοί πρόσβασης σε επίπεδο αρχείου χαμηλού επιπέδου

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

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

Επιβολή περιορισμών με τη μέθοδο ALL

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

Επιβολή περιορισμών με τη μέθοδο ΕΠΙΤΡΕΠΕΤΑΙ

Αυτό το βίντεο περιγράφει την πρώτη μέθοδο επιβολής περιορισμών σε επίπεδο ρεκόρ - τη μέθοδο ΕΠΙΤΡΕΠΟΜΕΝΗ. Σε αυτήν την περίπτωση, μόνο εκείνες οι εγγραφές στις οποίες ο χρήστης έχει δικαιώματα πρόσβασης θα περιλαμβάνονται στην επιλογή.

Ακολουθούν ορισμένα θέματα από το μάθημα:

  • Εγκατάσταση και ενημέρωση της πλατφόρμας 1C:Enterprise 8 – χειροκίνητο και αυτόματο, για Windows και Linux
  • Αυτόματη εκκίνησηγια την εκτέλεση εργασιών ρουτίνας
  • Ενημέρωση διαμορφώσεων από τη λειτουργία χρήστη
  • Ενημέρωση μη τυπικών διαμορφώσεων. Πώς να αποφύγετε προβλήματα κατά την ενημέρωσητροποποιημένες τυπικές διαμορφώσεις
  • Δημιουργήστε το δικό σας παράδοση αρχείων cfu
  • Εργαλεία BSP: εξωτερικές φόρμες, επεξεργασία συμπλήρωσης εγγράφων κ.λπ.
  • Χρήση δωρεάν DBMS PostgreSQL
  • Εγκατάσταση και εκκίνηση σύμπλεγμα διακομιστών 1C: Επιχείρηση 8
  • Βοηθητικό πρόγραμμα διαχείρισηςγια τη ρύθμιση ενός συμπλέγματος και διακομιστών εργαζομένων
  • Ρυθμίσεις RLSχρησιμοποιώντας το παράδειγμα UPP 1.3 και ERP 2
  • Τι να κάνετε αν δεδομένα στην ασφάλεια πληροφοριών είναι κατεστραμμένα
  • Ρυθμίσεις ανταλλαγές δεδομένωνμεταξύ των διαμορφώσεων
  • Οργάνωση ανάπτυξη της ομάδας
  • Ρύθμιση και χρήση κλειδιά προστασίας υλικού
  • Άδειες λογισμικού 1C: εγκατάσταση και δέσιμο σε εξωτερικό εξοπλισμό

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

Και είναι καλύτερα να το κάνετε αμέσως.

Για να μην γίνει αργότερα «...! Λοιπόν, τι…! Δικό σου...!" – και άλλες εκφράσεις λύπης :)