Γλώσσα ελέγχου δεδομένων (DCL) για δικαιώματα βάσης δεδομένων
ο Γλώσσα ελέγχου δεδομένων είναι ένα υποσύνολο της γλώσσας δομημένου ερωτήματος. Οι διαχειριστές βάσεων δεδομένων χρησιμοποιούν το DCL για να ρυθμίσουν την πρόσβαση ασφαλείας σε σχεσιακές βάσεις δεδομένων. Συμπληρώνει το Γλώσσα ορισμού δεδομένων, το οποίο προσθέτει και διαγράφει αντικείμενα βάσης δεδομένων και το Γλώσσα χειρισμού δεδομένων, που ανακτά, εισάγει και τροποποιεί τα περιεχόμενα μιας βάσης δεδομένων.
Το DCL είναι το απλούστερο από τα υποσύνολα SQL, καθώς αποτελείται από τρεις μόνο εντολές: GRANT, REVOKE και DENY. Σε συνδυασμό, αυτές οι τρεις εντολές παρέχουν στους διαχειριστές την ευελιξία να ορίζουν και να αφαιρούν τα δικαιώματα βάσης δεδομένων με λεπτομερή τρόπο.
Προσθήκη αδειών με την εντολή GRANT
Η εντολή GRANT προσθέτει νέα δικαιώματα σε έναν χρήστη βάσης δεδομένων. Έχει μια πολύ απλή σύνταξη, που ορίζεται ως εξής:
ΧΟΡΗΓΗΣΗ [προνόμιο]
ΕΝΕΡΓΟ [αντικείμενο]
ΠΡΟΣ [χρήστης]
[ΜΕ ΕΠΙΛΟΓΗ ΕΠΙΧΟΡΗΓΗΣΗΣ]
Ακολουθεί η σύνοψη για κάθε μία από τις παραμέτρους που μπορείτε να δώσετε με αυτήν την εντολή:
- Προνόμιο — μπορεί να είναι είτε η λέξη-κλειδί ALL (για παραχώρηση μεγάλης ποικιλίας αδειών) είτε μια συγκεκριμένη άδεια βάσης δεδομένων ή σύνολο αδειών. Τα παραδείγματα περιλαμβάνουν ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ, ΕΠΙΛΟΓΗ, ΕΙΣΑΓΩΓΗ, ΕΝΗΜΕΡΩΣΗ, ΔΙΑΓΡΑΦΗ, ΕΚΤΕΛΕΣΗ και ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΒΟΛΗ.
- Αντικείμενο — μπορεί να είναι οποιοδήποτε αντικείμενο βάσης δεδομένων. Οι έγκυρες επιλογές προνομίων διαφέρουν ανάλογα με τον τύπο του αντικειμένου βάσης δεδομένων που συμπεριλαμβάνετε σε αυτήν την ρήτρα. Συνήθως, το αντικείμενο θα είναι είτε μια βάση δεδομένων, μια συνάρτηση, αποθηκευμένη διαδικασία, τραπέζι ή προβολή.
- Χρήστης — μπορεί να είναι οποιοσδήποτε χρήστης βάσης δεδομένων. Μπορείτε επίσης να αντικαταστήσετε έναν ρόλο για τον χρήστη σε αυτόν τον όρο, εάν θέλετε να χρησιμοποιήσετε την ασφάλεια βάσης δεδομένων που βασίζεται σε ρόλους.
- Εάν συμπεριλάβετε το προαιρετικό ΜΕ ΕΠΙΛΟΓΗ ΕΠΙΧΟΡΗΓΗΣΗΣ ρήτρα στο τέλος της εντολής GRANT, όχι μόνο εκχωρείτε στον καθορισμένο χρήστη τα δικαιώματα που ορίζεται στη δήλωση SQL, αλλά δίνουν επίσης στον χρήστη άδεια να παραχωρήσει περαιτέρω τα ίδια δικαιώματα σε άλλα χρήστες βάσης δεδομένων. Για το λόγο αυτό, χρησιμοποιήστε αυτήν τη ρήτρα με προσοχή.
Για παράδειγμα, ας υποθέσουμε ότι θέλετε να χορηγήσετε στον χρήστη Τζο τη δυνατότητα ανάκτησης πληροφοριών από το υπάλληλος τραπέζι σε α βάση δεδομένων που ονομάζεται HR. Χρησιμοποιήστε την ακόλουθη εντολή SQL:
ΕΠΙΛΟΓΗ ΧΟΡΗΓΗΣΗΣ
ΕΠΙ ΥΕ.υπαλλήλων
ΣΤΟΝ Τζο.
Ο Joe μπορεί να ανακτήσει πληροφορίες από τον πίνακα των εργαζομένων. Ωστόσο, δεν θα μπορεί να παραχωρήσει σε άλλους χρήστες άδεια ανάκτησης πληροφοριών από αυτόν τον πίνακα, επειδή η δέσμη ενεργειών DCL δεν περιλάμβανε την ρήτρα WITH GRANT OPTION.
Ανάκληση πρόσβασης στη βάση δεδομένων
Η εντολή REVOKE καταργεί την πρόσβαση στη βάση δεδομένων από έναν χρήστη στον οποίο είχε εκχωρηθεί προηγουμένως τέτοια πρόσβαση. Η σύνταξη αυτής της εντολής ορίζεται ως εξής:
ΑΝΑΚΛΗΣΗ [ΠΑΡΑΧΩΡΗΣΗ ΕΠΙΛΟΓΗΣ ΓΙΑ] [άδεια]
ΕΝΕΡΓΟ [αντικείμενο]
ΑΠΟ [χρήστης]
[ΑΛΛΗΛΟΥΧΙΑ]
Ακολουθεί η σύνοψη των παραμέτρων για την εντολή REVOKE:
- Αδεια — καθορίζει τα δικαιώματα βάσης δεδομένων προς κατάργηση από τον αναγνωρισμένο χρήστη. Η εντολή ανακαλεί τόσο τους ισχυρισμούς GRANT όσο και DENY που είχαν γίνει προηγουμένως για την αναγνωρισμένη άδεια.
- Αντικείμενο — μπορεί να είναι οποιοδήποτε αντικείμενο βάσης δεδομένων. Οι έγκυρες επιλογές προνομίων διαφέρουν ανάλογα με τον τύπο του αντικειμένου βάσης δεδομένων που συμπεριλαμβάνετε σε αυτήν την ρήτρα. Συνήθως, το αντικείμενο θα είναι είτε βάση δεδομένων, συνάρτηση, αποθηκευμένη διαδικασία, πίνακας ή προβολή.
- Χρήστης — μπορεί να είναι οποιοσδήποτε χρήστης βάσης δεδομένων. Μπορείτε επίσης να αντικαταστήσετε έναν ρόλο για τον χρήστη σε αυτόν τον όρο, εάν θέλετε να χρησιμοποιήσετε την ασφάλεια βάσης δεδομένων που βασίζεται σε ρόλους.
- ο ΕΠΙΛΟΓΗ ΕΠΙΧΟΡΗΓΗΣΗΣ ΓΙΑ Η ρήτρα αφαιρεί τη δυνατότητα του καθορισμένου χρήστη να παραχωρήσει την καθορισμένη άδεια σε άλλους χρήστες. Εάν συμπεριλάβετε το ΕΠΙΛΟΓΗ ΕΠΙΧΟΡΗΓΗΣΗΣ ΓΙΑ ρήτρα σε μια δήλωση REVOKE, η κύρια άδεια δεν ανακαλείται. Αυτή η ρήτρα ανακαλεί μόνο τη δυνατότητα παραχώρησης.
- ο ΑΛΛΗΛΟΥΧΙΑ Η επιλογή ανακαλεί επίσης την καθορισμένη άδεια από τυχόν χρήστες στους οποίους ο συγκεκριμένος χρήστης παραχώρησε την άδεια.
Η ακόλουθη εντολή ανακαλεί την άδεια που χορηγήθηκε στον Joe στο προηγούμενο παράδειγμα:
ΑΝΑΚΛΗΣΗ ΕΠΙΛΟΓΗΣ
ΕΠΙ ΥΕ.υπαλλήλων
ΑΠΟ ΤΟΝ Τζο.
Ρητή άρνηση πρόσβασης στη βάση δεδομένων
Η εντολή DENY αποτρέπει ρητά έναν χρήστη από τη λήψη μιας συγκεκριμένης άδειας. Αυτή η δυνατότητα είναι χρήσιμη όταν ένας χρήστης είναι μέλος ενός ρόλου ή μιας ομάδας στην οποία έχει εκχωρηθεί άδεια και θέλετε να αποτρέψετε τον συγκεκριμένο χρήστη από το να κληρονομήσει την άδεια δημιουργώντας μια εξαίρεση. Η σύνταξη αυτής της εντολής είναι η εξής:
ΑΡΝΗΣΗ [άδεια]
ΕΝΕΡΓΟ [αντικείμενο]
ΠΡΟΣ [χρήστης]
Οι παράμετροι για την εντολή DENY είναι πανομοιότυπες με αυτές που χρησιμοποιούνται για την εντολή GRANT. Για παράδειγμα, εάν θέλετε να διασφαλίσετε ότι ο Matthew δεν θα λάβει ποτέ τη δυνατότητα διαγραφής πληροφοριών από τον πίνακα των υπαλλήλων, εκδώστε την ακόλουθη εντολή:
ΑΡΝΗΣΗ ΔΙΑΓΡΑΦΗΣ
ΕΠΙ ΥΕ.υπαλλήλων
ΠΡΟΣ τον Ματθαίο.