GRANT, REVOKE και DENY Δικαιώματα βάσης δεδομένων
Η Γλώσσα Ελέγχου Δεδομένων (DCL) είναι ένα υποσύνολο της Δομημένης Γλώσσας Ερωτήσεων (SQL) και επιτρέπει στους διαχειριστές βάσεων δεδομένων να διαμορφώνουν την πρόσβαση ασφαλείας σε σχεσιακές βάσεις δεδομένων. Συμπληρώνει τη Γλώσσα προσδιορισμού δεδομένων (DDL), η οποία χρησιμοποιείται για την προσθήκη και τη διαγραφή αντικειμένων βάσης δεδομένων, και τη Γλώσσα χειρισμού δεδομένων (DML) που χρησιμοποιείται για την ανάκτηση, εισαγωγή και τροποποίηση των περιεχομένων μιας βάσης δεδομένων.
Το DCL είναι το απλούστερο υποσύνολο SQL , καθώς αποτελείται από τρεις μόνο εντολές: GRANT, REVOKE και DENY. Συνδυασμένες, αυτές οι τρεις εντολές παρέχουν στους διαχειριστές την ευελιξία να ορίσουν και να καταργήσουν τις άδειες βάσης δεδομένων με εξαιρετικά λεπτομερή τρόπο.
Προσθήκη δικαιωμάτων με την εντολή GRANT
Η εντολή GRANT χρησιμοποιείται από τους διαχειριστές για να προσθέσει νέα δικαιώματα σε έναν χρήστη της βάσης δεδομένων . Έχει μια πολύ απλή σύνταξη, που ορίζεται ως εξής:
GRANT [προνόμιο] ON [αντικείμενο] TO [χρήστη] [ΜΕ ΕΠΙΛΟΓΗ ΕΓΓΡΑΦΗΣ]Ακολουθεί η περιγραφή για κάθε μία από τις παραμέτρους που μπορείτε να δώσετε με αυτήν την εντολή:
- Το Privilege μπορεί να είναι είτε η λέξη ALL (για να παραχωρήσετε μια ευρεία ποικιλία δικαιωμάτων) είτε μια συγκεκριμένη άδεια βάσης δεδομένων ή σύνολο δικαιωμάτων. Παραδείγματα περιλαμβάνουν CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE και CREATE VIEW.
- Αντικείμενο μπορεί να είναι οποιοδήποτε αντικείμενο βάσης δεδομένων. Οι έγκυρες επιλογές προνομίων ποικίλλουν ανάλογα με τον τύπο του αντικειμένου βάσης δεδομένων που περιλαμβάνετε σε αυτήν τη ρήτρα. Τυπικά, το αντικείμενο θα είναι είτε βάση δεδομένων, λειτουργία, αποθηκευμένη διαδικασία , πίνακας ή προβολή.
- Ο χρήστης μπορεί να είναι οποιοσδήποτε χρήστης βάσης δεδομένων. Μπορείτε επίσης να αντικαταστήσετε ένα ρόλο για τον χρήστη σε αυτήν τη ρήτρα αν θέλετε να χρησιμοποιήσετε την ασφάλεια βάσεων δεδομένων βασισμένη σε ρόλους.
- Εάν συμπεριλάβετε την προαιρετική ρήτρα WITH GRANT OPTION στο τέλος της εντολής GRANT, όχι μόνο χορηγείτε στον καθορισμένο χρήστη τα δικαιώματα που ορίζονται στη δήλωση SQL, αλλά και δίνετε στον χρήστη τη δυνατότητα να χορηγεί τα ίδια δικαιώματα σε άλλους χρήστες βάσης δεδομένων. Για αυτόν τον λόγο, χρησιμοποιήστε αυτή τη ρήτρα με προσοχή.
Για παράδειγμα, υποθέστε ότι επιθυμείτε να δώσετε στον χρήστη Joe τη δυνατότητα να ανακτήσει πληροφορίες από τον πίνακα εργαζομένων σε μια βάση δεδομένων που ονομάζεται HR. Μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή SQL:
ΕΠΙΛΟΓΗ ΕΠΙΧΟΡΗΓΗΣΗΣ ΣΕ HR.employees TO JoeΟ Τζο θα έχει τώρα τη δυνατότητα να ανακτήσει πληροφορίες από το τραπέζι των εργαζομένων. Ωστόσο, δεν θα είναι σε θέση να παραχωρήσει στους άλλους χρήστες άδεια για ανάκτηση πληροφοριών από αυτόν τον πίνακα επειδή δεν συμπεριλάβατε τη ρήτρα WITH GRANT OPTION στη δήλωση GRANT.
Αναίρεση πρόσβασης βάσης δεδομένων
Η εντολή REVOKE χρησιμοποιείται για την κατάργηση της πρόσβασης βάσης δεδομένων από έναν χρήστη που έχει προηγουμένως παραχωρηθεί τέτοια πρόσβαση. Η σύνταξη αυτής της εντολής ορίζεται ως εξής:
ΑΠΑΓΟΡΕΥΕΤΑΙ [ΕΠΙΛΟΓΗ ΔΗΜΙΟΥΡΓΙΑΣ ΓΙΑ] [άδεια] ON [αντικείμενο] ΑΠΟ [χρήστη] [CASCADE]Ακολουθεί η περιγραφή των παραμέτρων της εντολής REVOKE:
- Η άδεια καθορίζει τα δικαιώματα βάσης δεδομένων για την κατάργηση από τον αναγνωρισμένο χρήστη. Η εντολή ανακαλεί τόσο τις δηλώσεις του GRANT όσο και του DENY που είχαν γίνει προηγουμένως για την αναγνωρισμένη άδεια.
- Αντικείμενο μπορεί να είναι οποιοδήποτε αντικείμενο βάσης δεδομένων. Οι έγκυρες επιλογές προνομίων ποικίλλουν ανάλογα με τον τύπο του αντικειμένου βάσης δεδομένων που περιλαμβάνετε σε αυτήν τη ρήτρα. Τυπικά, το αντικείμενο θα είναι είτε βάση δεδομένων, λειτουργία, αποθηκευμένη διαδικασία, πίνακας ή προβολή.
- Ο χρήστης μπορεί να είναι οποιοσδήποτε χρήστης βάσης δεδομένων. Μπορείτε επίσης να αντικαταστήσετε ένα ρόλο για τον χρήστη σε αυτήν τη ρήτρα αν θέλετε να χρησιμοποιήσετε την ασφάλεια βάσεων δεδομένων βασισμένη σε ρόλους.
- Η ρήτρα GRANT OPTION FOR καταργεί την ικανότητα του συγκεκριμένου χρήστη να παραχωρήσει την καθορισμένη άδεια σε άλλους χρήστες. Σημείωση : Εάν συμπεριλάβετε τη ρήτρα GRANT OPTION FOR σε μια εντολή REVOKE, η κύρια άδεια δεν ανακαλείται. Αυτή η ρήτρα ανακαλεί μόνο τη δυνατότητα χορήγησης.
- Η επιλογή CASCADE ανακαλεί επίσης την καθορισμένη άδεια από οποιονδήποτε χρήστη που ο συγκεκριμένος χρήστης χορήγησε την άδεια.
Για παράδειγμα, η ακόλουθη εντολή ανακαλεί την άδεια που δόθηκε στον Joe στο προηγούμενο παράδειγμα:
ΑΠΑΓΟΡΕΥΕΤΕ ΕΠΙΛΟΓΗ ΣΕ HR.employees FROM JoeΔιαγραφή ρητά της βάσης δεδομένων
Η εντολή DENY χρησιμοποιείται για να αποτρέψει ρητά τον χρήστη να λάβει συγκεκριμένη άδεια. Αυτό είναι χρήσιμο όταν ένας χρήστης είναι μέλος ενός ρόλου ή μιας ομάδας στην οποία έχει εκχωρηθεί άδεια και θέλετε να εμποδίσετε τον συγκεκριμένο χρήστη να κληρονομήσει την άδεια δημιουργώντας μια εξαίρεση. Η σύνταξη αυτής της εντολής έχει ως εξής:
DENY [άδεια] ON [αντικείμενο] TO [χρήστης] Οι παράμετροι για την εντολή DENY είναι ίδιες με εκείνες που χρησιμοποιούνται για την εντολή GRANT.
Για παράδειγμα, εάν επιθυμείτε να διασφαλίσετε ότι ο Matthew δε θα λάβει ποτέ τη δυνατότητα να διαγράψει πληροφορίες από τον πίνακα προσωπικού, εκδώστε την ακόλουθη εντολή: