
Σε αυτό το άρθρο
Όλα τα σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων παρέχουν κάποιο είδος εγγενών μηχανισμών ασφάλειας που έχουν σχεδιαστεί για να ελαχιστοποιούν τις απειλές απώλειας δεδομένων, διαφθοράς δεδομένων ή κλοπής δεδομένων. Αυτά κυμαίνονται από την απλή προστασία με κωδικό πρόσβασης που προσφέρει η Microsoft Access έως τη σύνθετη δομή χρήστη / ρόλου που υποστηρίζεται από προηγμένες σχεσιακές βάσεις δεδομένων όπως το Oracle και ο Microsoft SQL Server. Ορισμένοι μηχανισμοί ασφαλείας είναι κοινοί σε όλες τις βάσεις δεδομένων που εφαρμόζουν τη γλώσσα δομημένου ερωτήματος.
Ασφάλεια επιπέδου χρήστη
Οι βάσεις δεδομένων που βασίζονται σε διακομιστή υποστηρίζουν a χρήστης έννοια παρόμοια με αυτήν που χρησιμοποιείται σε λειτουργικά συστήματα υπολογιστών. Εάν είστε εξοικειωμένοι με την ιεραρχία χρήστη / ομάδας που βρίσκεται στα Microsoft Windows NT και Windows 2000, θα διαπιστώσετε ότι οι ομάδες χρηστών / ρόλων που υποστηρίζονται από τον SQL Server και το Oracle είναι παρόμοιες. Δημιουργήστε μεμονωμένους λογαριασμούς χρηστών βάσης δεδομένων για κάθε άτομο με πρόσβαση στη βάση δεδομένων σας. Αποφύγετε την παροχή γενικών λογαριασμών προσβάσιμων από πολλά διαφορετικά άτομα. Πρώτον, αυτή η πρακτική εξαλείφει την ατομική υπευθυνότητα – εάν ένας χρήστης κάνει μια αλλαγή στη βάση δεδομένων σας (ας πούμε ότι δίνει στον εαυτό του μια αύξηση 5.000 $), δεν θα μπορείτε να το εντοπίσετε σε ένα συγκεκριμένο άτομο μέσω της χρήσης αρχείων καταγραφής ελέγχου. Δεύτερον, εάν ένας συγκεκριμένος χρήστης εγκαταλείψει τον οργανισμό σας και θέλετε να καταργήσετε την πρόσβασή του από τη βάση δεδομένων, πρέπει να αλλάξετε τον κωδικό πρόσβασης στον οποίο βασίζονται όλοι οι χρήστες.
Ασφάλεια επιπέδου ρόλου
Εάν βρίσκεστε σε περιβάλλον με μικρό αριθμό χρηστών, πιθανότατα θα διαπιστώσετε ότι η δημιουργία λογαριασμών χρηστών και η εκχώρηση δικαιωμάτων απευθείας σε αυτούς αρκεί για τις ανάγκες σας. Ωστόσο, εάν έχετε μεγάλο αριθμό χρηστών, θα είστε συγκλονισμένοι διατηρώντας λογαριασμούς και κατάλληλα δικαιώματα. Για την ανακούφιση αυτού του φόρτου, οι σχεσιακές βάσεις δεδομένων υποστηρίζουν ρόλοι. Οι ρόλοι της βάσης δεδομένων λειτουργούν παρόμοια με τις ομάδες των Windows NT. Οι λογαριασμοί χρηστών εκχωρούνται σε ρόλους (-ους) και τα δικαιώματα εκχωρούνται στη συνέχεια στο ρόλο ως σύνολο και όχι στους μεμονωμένους λογαριασμούς χρηστών. Για παράδειγμα, θα μπορούσατε να δημιουργήσετε έναν ρόλο DBA και, στη συνέχεια, να προσθέσετε τους λογαριασμούς χρήστη του διοικητικού σας προσωπικού σε αυτόν τον ρόλο. Μετά από αυτό, μπορείτε να εκχωρήσετε μια συγκεκριμένη άδεια σε όλους τους παρόντες (και μελλοντικούς) διαχειριστές, απλώς εκχωρώντας την άδεια στον ρόλο. Για άλλη μια φορά, οι διαδικασίες για τη δημιουργία ρόλων διαφέρουν από πλατφόρμα σε πλατφόρμα. Οι διαχειριστές του MS SQL Server πρέπει να διερευνήσουν το sp_addrole αποθηκευμένη διαδικασία ενώ τα Oracle DBAs θα πρέπει να χρησιμοποιούν το ΔΗΜΙΟΥΡΓΙΑ ΡΟΛΟΥ σύνταξη.
Εκχώρηση αδειών
Τώρα που προσθέσαμε χρήστες στη βάση δεδομένων μας, ήρθε η ώρα να αρχίσουμε να ενισχύουμε την ασφάλεια προσθέτοντας δικαιώματα. Το πρώτο μας βήμα θα είναι η παροχή κατάλληλων δικαιωμάτων βάσης δεδομένων στους χρήστες μας. Θα το επιτύχουμε μέσω της χρήσης της δήλωσης SQL GRANT. Ακολουθεί η σύνταξη της δήλωσης: GRANT
type = «code»>
[ON
type=»code»>
TO
type=»code»>
[WITH GRANT OPTION]
type = «code»> Τώρα, ας ρίξουμε μια ματιά σε αυτήν τη δήλωση κάθε γραμμή. Η πρώτη γραμμή, ΧΟΡΗΓΗΣΗ , μας επιτρέπει να καθορίσουμε τα συγκεκριμένα δικαιώματα πινάκων που εκχωρούμε. Αυτά μπορεί να είναι είτε δικαιώματα επιπέδου πίνακα (όπως SELECT, INSERT, UPDATE και DELETE) ή δικαιώματα βάσης δεδομένων (όπως CREATE TABLE, ALTER DATABASE και GRANT). Μπορούν να εκδοθούν περισσότερες από μία άδειες σε μία δήλωση GRANT, αλλά τα δικαιώματα επιπέδου πίνακα και τα δικαιώματα σε επίπεδο βάσης δεδομένων ενδέχεται να μην συνδυάζονται σε μία μόνο δήλωση. Η δεύτερη γραμμή, ΕΠΙ
Τέλος, η τέταρτη γραμμή, ΜΕ ΕΠΙΛΟΓΗ ΕΠΙΧΟΡΗΓΗΣΗΣ, είναι προαιρετικό. Εάν αυτή η γραμμή περιλαμβάνεται στη δήλωση, ο επηρεαζόμενος χρήστης επιτρέπεται επίσης να παραχωρήσει αυτά τα ίδια δικαιώματα σε άλλους χρήστες. Σημειώστε ότι η επιλογή ΕΠΙΔΟΤΗΣΗ ΜΕ ΔΩΡΕΑΝ δεν μπορεί να καθοριστεί όταν τα δικαιώματα εκχωρούνται σε έναν ρόλο
Παράδειγμα επιχορηγήσεων βάσης δεδομένων
Ας δούμε μερικά παραδείγματα. Στο πρώτο μας σενάριο, προσλάβαμε πρόσφατα μια ομάδα 42 τελεστών εισαγωγής δεδομένων που θα προσθέσουν και θα διατηρήσουν αρχεία πελατών. Πρέπει να έχουν πρόσβαση σε πληροφορίες στον πίνακα Πελάτες, να τροποποιούν αυτές τις πληροφορίες και να προσθέτουν νέες εγγραφές στον πίνακα. Δεν θα πρέπει να μπορούν να διαγράψουν εντελώς μια εγγραφή από τη βάση δεδομένων. Πρώτον, πρέπει να δημιουργήσουμε λογαριασμούς χρηστών για κάθε χειριστή και στη συνέχεια να τους προσθέσουμε σε έναν νέο ρόλο, Εισαγωγή δεδομένων. Στη συνέχεια, πρέπει να χρησιμοποιήσουμε την ακόλουθη δήλωση SQL για να τους παραχωρήσουμε τα κατάλληλα δικαιώματα: ΕΠΙΛΕΞΤΕ ΕΠΙΛΟΓΗ, ΕΙΣΑΓΩΓΗ, ΕΝΗΜΕΡΩΣΗ
type = «code»> ON πελάτες
type = «code»> TO DataEntry
type = «code»> Ας εξετάσουμε τώρα μια περίπτωση όπου εκχωρούμε δικαιώματα σε επίπεδο βάσης δεδομένων. Θέλουμε να επιτρέψουμε στα μέλη του ρόλου DBA να προσθέσουν νέους πίνακες στη βάση δεδομένων μας. Επιπλέον, θέλουμε να μπορούν να παραχωρήσουν σε άλλους χρήστες άδεια να κάνουν το ίδιο. Ακολουθεί η δήλωση SQL: GRANT CREATE TABLE
type = «code»> ΣΤΟ DBA
type = «code»> ΜΕ ΕΠΙΛΟΓΗ ΧΟΡΗΓΗΣΗΣ
type = «code»> Παρατηρήστε ότι συμπεριλάβαμε τη γραμμή ΜΕ ΕΠΙΛΟΓΗ ΕΠΙΔΟΣΗΣ για να διασφαλίσουμε ότι τα DBA μας μπορούν να εκχωρήσουν αυτήν την άδεια σε άλλους χρήστες.
Κατάργηση δικαιωμάτων
Το SQL περιλαμβάνει την εντολή REVOKE για την κατάργηση προηγούμενων δικαιωμάτων. Εδώ είναι η σύνταξη: REVOKE [GRANT OPTION FOR]
type = «code»> ΕΝΕΡΓΟ