Βίντεο: Πρωτόκολλο CSMA/CD (IEEE802.3) 2024
Ένα χρήσιμο μοτίβο για την ασφάλεια είναι να εφαρμόσετε δικαιώματα βάσει δεδομένων μέσα σε ένα αρχείο αντί να εκχωρήσετε χωριστά δικαιώματα στην εγγραφή. Αυτό θα μπορούσε να βασιστεί είτε σε μεταδεδομένα, σε μεμονωμένες στήλες (κλώνοι Bigtable) είτε σε τιμές (βάσεις δεδομένων Αθροιστική βάση δεδομένων NoSQL).
Ένα καλό παράδειγμα είναι ένα όνομα πελάτη που αναφέρεται σε ένα έγγραφο. Ίσως θελήσετε να περιορίσετε την πρόσβαση σε όλα τα έγγραφα που αναφέρουν αυτόν τον πελάτη μόνο σε όσους έχουν πρόσβαση στις πληροφορίες αυτού του πελάτη. Μπορείτε να περιορίσετε την πρόσβαση σε αυτά τα έγγραφα επεξεργάζοντας τα δεδομένα μέσα στο έγγραφο και εφαρμόζοντας τα σχετικά δικαιώματα ασφαλείας βάσει της αξίας αυτών των δεδομένων.
Δεν υπάρχουν βάσεις δεδομένων NoSQL που παρέχουν αυτή τη δυνατότητα απευθείας από το κουτί. Αυτό οφείλεται στο γεγονός ότι τα δικαιώματα πρέπει να αντιστοιχιστούν στην εγγραφή μετά την αποθήκευση των δεδομένων από την εφαρμογή, αλλά πριν να είναι διαθέσιμα για ανάκτηση από άλλες εφαρμογές ή χρήστες. Επομένως, αυτή η ανάθεση δικαιωμάτων πρέπει να πραγματοποιηθεί εντός του ορίου συναλλαγής.
Επίσης, πολύ λίγες βάσεις δεδομένων NoSQL υποστηρίζουν συναλλαγές συμβατές με ACID (MarkLogic, FoundationDB και Neo4j, για παράδειγμα). Εάν μια βάση δεδομένων δεν υποστηρίζει την εκχώρηση αδειών εκτός πλαισίου βάσει στοιχείων εντός ενός εγγράφου, αλλά υποστηρίζει συναλλαγές ACID και ενεργοποιεί εκ των προτέρων ενεργοποιήσεις, τότε είναι δυνατή μια εύκολη λύση.
Είναι γενικά εύκολο να γράψετε μια σκανδάλη που ελέγχει την παρουσία μιας τιμής μέσα σε μια εγγραφή και να τροποποιήσει τα δικαιώματα βάσει της τιμής της. Εφόσον μια βάση δεδομένων υποστηρίζει κάτι τέτοιο κατά τη διάρκεια της διαδικασίας δέσμευσης και όχι μετά τη διεκπεραίωση, τότε γνωρίζετε ότι τα δεδομένα σας είναι ασφαλή χρησιμοποιώντας μια απλή ενεργοποίηση πριν από τη διεκπεραίωση.
Για παράδειγμα, ο MarkLogic Server υποστηρίζει πλήρως σειριοποιήσιμες συναλλαγές ACID και προκαταρκτικές εντολές ενεργοποίησης. Ακολουθεί ένα απλό έγγραφο XML που θέλω να υποστηρίξω για τον έλεγχο πρόσβασης που βασίζεται σε χαρακτηριστικά:
Οι ενεργοποιητές του MarkLogic Server χρησιμοποιούν τη γλώσσα του W3C XQuery. Το ακόλουθο παράδειγμα XQuery είναι μια απλή ενεργοποίηση που, όταν είναι εγκατεστημένη στο MarkLogic, εκχωρεί δικαιώματα ανάγνωσης και εγγραφής:
xquery version "1. 0-ml"; πεδίο ονομάτων μονάδων εισαγωγής trgr = ' // marklogic. com / xdmp / ενεργοποιεί 'στο' / MarkLogic / ενεργοποιεί. xqy '; δηλώνει μεταβλητή $ trgr: uri ως xs: string εξωτερική; δηλώνει μεταβλητή $ trgr: ενεργοποιεί ως κόμβο () εξωτερικό. ($ trgr-uri, (xdmp: permission ("seniorsales", "update"), xdmp: ("ACME" = fn: doc ($ trgr: uri) / MeetingReport / ("sales", "read"))) else ()
Μόλις εγκατασταθεί η σκανδάλη στα setperms αρχείων.xqy σε μια βάση δεδομένων των Modules Server MarkLogic, εκτελέστε τον ακόλουθο κώδικα στην εφαρμογή κωδικοποίησης Ιστού για MarkLogic - Query Console για να ενεργοποιήσετε τη σκανδάλη. Σε μια προεπιλεγμένη εγκατάσταση διακομιστή MarkLogic, μπορείτε να βρείτε την κονσόλα ερωτήματος στη διεύθυνση URL: // localhost: 8000 / qconsole.
xquery έκδοση "1. 0-ml"; ονοασία ενοτήτων ενοτήτων εισαγωγής trgr = " // marklogic. com / xdmp / triggers" στο / MarkLogic / triggers. xqy '; trgr: create-trigger ("setperms", "Set Permission Docs Sales", trgr: event trigger-data-trgr: collection-scope (), fn: true (), xdmp: default-permissions (), fn: () false ())