Saltar al contenido

Γλώσσα ελέγχου δεδομένων (DCL)

7 de abril de 2021

ο Γλώσσα ελέγχου δεδομένων είναι ένα υποσύνολο της γλώσσας δομημένου ερωτήματος. Οι διαχειριστές βάσεων δεδομένων χρησιμοποιούν το DCL για να διαμορφώσουν την πρόσβαση ασφαλείας σε σχεσιακές βάσεις δεδομένων. Συμπληρώνει το Γλώσσα ορισμού δεδομένων, η οποία προσθέτει και διαγράφει αντικείμενα βάσης δεδομένων και το Γλώσσα χειρισμού δεδομένων, που ανακτά, εισάγει και τροποποιεί το περιεχόμενο μιας βάσης δεδομένων. Το DCL είναι το απλούστερο από τα υποσύνολα SQL, καθώς αποτελείται από τρεις μόνο εντολές: GRANT, REVOKE και DENY. Σε συνδυασμό, αυτές οι τρεις εντολές παρέχουν στους διαχειριστές την ευελιξία να ρυθμίζουν και να αφαιρούν δικαιώματα βάσης δεδομένων με κοκκώδη τρόπο.

Προσθήκη δικαιωμάτων με την εντολή GRANT

Η εντολή GRANT προσθέτει νέα δικαιώματα σε έναν χρήστη βάσης δεδομένων. Έχει μια πολύ απλή σύνταξη, που ορίζεται ως εξής: GRANT [privilege]
ΕΠΙ [object]
ΠΡΟΣ ΤΟ [user]
[WITH GRANT OPTION]

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

  • Προνόμιο – μπορεί να είναι είτε η λέξη-κλειδί ΟΛΗ (για παραχώρηση μεγάλης ποικιλίας αδειών) είτε μια συγκεκριμένη άδεια βάσης δεδομένων ή ένα σύνολο αδειών. Τα παραδείγματα περιλαμβάνουν ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΕΩΝ, ΕΠΙΛΟΓΗ, ΕΙΣΑΓΩΓΗ, ΕΝΗΜΕΡΩΣΗ, ΔΙΑΓΡΑΦΗ, ΕΚΤΕΛΕΣΗ και ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΒΟΛΗΣ
  • Αντικείμενο – μπορεί να είναι οποιοδήποτε αντικείμενο βάσης δεδομένων. Οι έγκυρες επιλογές δικαιωμάτων ποικίλλουν ανάλογα με τον τύπο του αντικειμένου βάσης δεδομένων που συμπεριλαμβάνετε σε αυτήν την ενότητα. Συνήθως, το αντικείμενο θα είναι είτε βάση δεδομένων, συνάρτηση, αποθηκευμένη διαδικασία, πίνακας ή προβολή.
  • Χρήστης – μπορεί να είναι οποιοσδήποτε χρήστης της βάσης δεδομένων. Μπορείτε επίσης να αντικαταστήσετε έναν ρόλο για τον χρήστη σε αυτήν την ενότητα εάν επιθυμείτε να χρησιμοποιήσετε την ασφάλεια βάσης δεδομένων βάσει ρόλου.
  • Εάν συμπεριλάβετε το προαιρετικό ΜΕ ΕΠΙΛΟΓΗ ΕΠΙΧΟΡΗΓΗΣΗΣ ρήτρα στο τέλος της εντολής GRANT, όχι μόνο παραχωρείτε στον καθορισμένο χρήστη τα δικαιώματα που ορίζονται στη δήλωση SQL, αλλά και δίνετε στον χρήστη άδεια να παραχωρήσει περαιτέρω τα ίδια δικαιώματα σε άλλα χρήστες βάσεων δεδομένων. Για αυτόν τον λόγο, χρησιμοποιήστε αυτή τη ρήτρα με προσοχή.

Για παράδειγμα, ας υποθέσουμε ότι θέλετε να παραχωρήσετε στον χρήστη Τζο τη δυνατότητα ανάκτησης πληροφοριών από το υπάλληλος πίνακα σε μια βάση δεδομένων που ονομάζεται ΩΡ. Χρησιμοποιήστε την ακόλουθη εντολή SQL: ΕΠΙΛΕΞΤΕ ΕΠΙΛΟΓΗ
ON HR. Εργαζόμενοι
ΤΟ Τζο

Ο Joe μπορεί να ανακτήσει πληροφορίες από τον πίνακα των εργαζομένων. Ωστόσο, δεν θα είναι σε θέση να παραχωρήσει σε άλλους χρήστες άδεια να ανακτήσουν πληροφορίες από αυτόν τον πίνακα, επειδή το σενάριο DCL δεν περιλάμβανε τη ρήτρα ΜΕ ΕΠΙΛΟΓΗ ΕΠΙΔΟΣΗΣ.

Ανάκληση πρόσβασης σε βάση δεδομένων

Η εντολή REVOKE καταργεί την πρόσβαση στη βάση δεδομένων από έναν χρήστη που είχε προηγουμένως λάβει τέτοια πρόσβαση. Η σύνταξη αυτής της εντολής ορίζεται ως εξής: REVOKE [GRANT OPTION FOR] [permission]
ΕΠΙ [object]
ΑΠΟ [user]
[CASCADE]

Ακολουθεί η μείωση των παραμέτρων για την εντολή REVOKE:

  • Αδεια – καθορίζει τα δικαιώματα βάσης δεδομένων για κατάργηση από τον αναγνωρισμένο χρήστη. Η εντολή ανακαλεί τους ισχυρισμούς GRANT και DENY που είχαν γίνει προηγουμένως για την αναγνωρισμένη άδεια.
  • Αντικείμενο – μπορεί να είναι οποιοδήποτε αντικείμενο βάσης δεδομένων. Οι έγκυρες επιλογές δικαιωμάτων ποικίλλουν ανάλογα με τον τύπο του αντικειμένου βάσης δεδομένων που συμπεριλαμβάνετε σε αυτήν την ενότητα. Συνήθως, το αντικείμενο θα είναι είτε μια βάση δεδομένων, μια συνάρτηση, μια αποθηκευμένη διαδικασία, ένας πίνακας ή μια προβολή.
  • Χρήστης – μπορεί να είναι οποιοσδήποτε χρήστης της βάσης δεδομένων. Μπορείτε επίσης να αντικαταστήσετε έναν ρόλο για τον χρήστη σε αυτήν την ενότητα εάν επιθυμείτε να χρησιμοποιήσετε την ασφάλεια βάσης δεδομένων βάσει ρόλου.
  • ο ΕΠΙΛΟΓΗ ΕΠΙΧΟΡΗΓΗΣΗΣ ΓΙΑ Η ρήτρα αφαιρεί την ικανότητα του συγκεκριμένου χρήστη να εκχωρήσει την καθορισμένη άδεια σε άλλους χρήστες. Εάν συμπεριλάβετε το ΕΠΙΛΟΓΗ ΕΠΙΧΟΡΗΓΗΣΗΣ ΓΙΑ σε μια δήλωση REVOKE, η κύρια άδεια δεν ανακαλείται. Αυτή η ρήτρα ανακαλεί μόνο τη δυνατότητα παραχώρησης.
  • ο ΑΛΛΗΛΟΥΧΙΑ Η επιλογή ανακαλεί επίσης την καθορισμένη άδεια από οποιονδήποτε χρήστη που ο συγκεκριμένος χρήστης χορήγησε την άδεια.

Η ακόλουθη εντολή ανακαλεί την άδεια που δόθηκε στον Joe στο προηγούμενο παράδειγμα: REVOKE SELECT
ON HR. Εργαζόμενοι
ΑΠΟ Τζο

Άρνηση ρητής πρόσβασης σε βάση δεδομένων

Η εντολή DENY εμποδίζει ρητά έναν χρήστη να λάβει μια συγκεκριμένη άδεια. Αυτή η δυνατότητα είναι χρήσιμη όταν ένας χρήστης είναι μέλος ενός ρόλου ή ομάδας στην οποία έχει παραχωρηθεί άδεια και θέλετε να αποτρέψετε τον συγκεκριμένο χρήστη να κληρονομήσει την άδεια δημιουργώντας μια εξαίρεση. Η σύνταξη αυτής της εντολής έχει ως εξής: DENY [permission]
ΕΠΙ [object]
ΠΡΟΣ ΤΟ [user]

Οι παράμετροι για την εντολή DENY είναι ίδιες με αυτές που χρησιμοποιούνται για την εντολή GRANT. Για παράδειγμα, εάν θέλετε να διασφαλίσετε ότι ο Matthew δεν θα λάβει ποτέ τη δυνατότητα διαγραφής πληροφοριών από τον πίνακα των υπαλλήλων, εκδώστε την ακόλουθη εντολή: DENY DELETE
ON HR. Εργαζόμενοι
Στον Μάθιου