Όλα σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων να παρέχει κάποιο είδος εγγενών μηχανισμών ασφαλείας που έχουν σχεδιαστεί για να ελαχιστοποιούν τις απειλές απώλειας δεδομένων, καταστροφή δεδομένων ή κλοπής δεδομένων. Κυμαίνονται από την απλή προστασία με κωδικό πρόσβασης που προσφέρει Πρόσβαση Microsoft στη σύνθετη δομή χρήστη / ρόλου που υποστηρίζεται από προηγμένες σχεσιακές βάσεις δεδομένων όπως Μαντείο καιMicrosoft SQL Υπηρέτης. Ορισμένοι μηχανισμοί ασφαλείας είναι κοινοί σε όλες τις βάσεις δεδομένων που εφαρμόζουν τοΓλώσσα δομημένων ερωτημάτων.
Ασφάλεια επιπέδου χρήστη
Οι βάσεις δεδομένων που βασίζονται σε διακομιστή υποστηρίζουν a χρήστης έννοια παρόμοια με αυτήν που χρησιμοποιείται σε λειτουργικά συστήματα υπολογιστών. Εάν είστε εξοικειωμένοι με την ιεραρχία χρήστη / ομάδας που βρίσκεται στο Microsoft Windows NT και Windows 2000, θα διαπιστώσετε ότι οι ομάδες χρηστών / ρόλων που υποστηρίζονται από SQL Server και Oracle είναι παρόμοιες.
Δημιουργήστε μεμονωμένους λογαριασμούς χρηστών βάσης δεδομένων για κάθε άτομο με πρόσβαση στη βάση δεδομένων σας.
Αποφύγετε την παροχή γενικών λογαριασμών προσβάσιμων από πολλά διαφορετικά άτομα. Πρώτον, αυτή η πρακτική εξαλείφει την ατομική λογοδοσία - εάν ένας χρήστης κάνει μια αλλαγή στη βάση δεδομένων σας (ας πούμε δίνοντας στον εαυτό του μια αύξηση $ 5.000), δεν θα μπορείτε να το εντοπίσετε σε ένα συγκεκριμένο άτομο μέσω της χρήσης ελέγχου αρχεία καταγραφής. Δεύτερον, εάν ένας συγκεκριμένος χρήστης εγκαταλείψει τον οργανισμό σας και θέλετε να καταργήσετε την πρόσβασή του από τη βάση δεδομένων, πρέπει να αλλάξετε τον κωδικό πρόσβασης στον οποίο βασίζονται όλοι οι χρήστες.

Οι μέθοδοι για τη δημιουργία λογαριασμών χρηστών διαφέρουν από πλατφόρμα σε πλατφόρμα και θα πρέπει να συμβουλευτείτε την τεκμηρίωση που αφορά το DBMS για την ακριβή διαδικασία. Οι χρήστες του Microsoft SQL Server πρέπει να ερευνήσουν τη χρήση του sp_adduser αποθηκευμένη διαδικασία. Οι διαχειριστές βάσεων δεδομένων της Oracle θα βρουν το ΔΗΜΙΟΥΡΓΙΑ ΧΡΗΣΤΗ χρήσιμη εντολή. Ίσως θέλετε επίσης να διερευνήσετε εναλλακτικά σχήματα ελέγχου ταυτότητας. Για παράδειγμα, ο Microsoft SQL Server υποστηρίζει τη χρήση της Ολοκληρωμένης ασφάλειας των Windows NT. Σύμφωνα με αυτό το σχήμα, οι χρήστες αναγνωρίζονται στη βάση δεδομένων από τους λογαριασμούς χρήστη των Windows NT και δεν απαιτείται να εισάγουν ένα πρόσθετο αναγνωριστικό χρήστη και κωδικό πρόσβασης για πρόσβαση στη βάση δεδομένων. Αυτή η προσέγγιση είναι δημοφιλής στους διαχειριστές βάσεων δεδομένων επειδή μετατοπίζει το βάρος του λογαριασμού διαχείριση στο προσωπικό διαχείρισης του δικτύου και παρέχει την ευκολία μιας μόνο σύνδεσης στο τελικός χρήστης.
Ασφάλεια επιπέδου ρόλου
Εάν βρίσκεστε σε περιβάλλον με μικρό αριθμό χρηστών, πιθανότατα θα διαπιστώσετε ότι η δημιουργία λογαριασμών χρηστών και η εκχώρηση δικαιωμάτων απευθείας σε αυτούς αρκεί για τις ανάγκες σας. Ωστόσο, εάν έχετε μεγάλο αριθμό χρηστών, θα συγκλονιστείτε διατηρώντας λογαριασμούς και κατάλληλα δικαιώματα. Για την ανακούφιση αυτού του φόρτου, οι σχεσιακές βάσεις δεδομένων υποστηρίζουν ρόλοι. Οι ρόλοι της βάσης δεδομένων λειτουργούν παρόμοια με τις ομάδες των Windows NT. Οι λογαριασμοί χρηστών εκχωρούνται σε ρόλους (-ους) και τα δικαιώματα εκχωρούνται στη συνέχεια στο ρόλο ως σύνολο και όχι στους μεμονωμένους λογαριασμούς χρηστών. Για παράδειγμα, θα μπορούσατε να δημιουργήσετε έναν ρόλο DBA και, στη συνέχεια, να προσθέσετε τους λογαριασμούς χρήστη του διοικητικού σας προσωπικού σε αυτόν τον ρόλο. Μετά από αυτό, μπορείτε να εκχωρήσετε μια συγκεκριμένη άδεια σε όλους τους παρόντες (και μελλοντικούς) διαχειριστές, απλώς εκχωρώντας την άδεια στον ρόλο. Για άλλη μια φορά, οι διαδικασίες για τη δημιουργία ρόλων διαφέρουν από πλατφόρμα σε πλατφόρμα. Οι διαχειριστές του MS SQL Server πρέπει να διερευνήσουν το sp_addrole αποθηκευμένη διαδικασία ενώ τα Oracle DBAs θα πρέπει να χρησιμοποιούν το ΔΗΜΙΟΥΡΓΙΑ ΡΟΛΟΥ σύνταξη.
Εκχώρηση αδειών
Τώρα που προσθέσαμε χρήστες στη βάση δεδομένων μας, ήρθε η ώρα να αρχίσουμε να ενισχύουμε την ασφάλεια προσθέτοντας δικαιώματα. Το πρώτο μας βήμα θα είναι η παροχή κατάλληλων δικαιωμάτων βάσης δεδομένων στους χρήστες μας. Θα το επιτύχουμε μέσω της χρήσης της δήλωσης SQL GRANT.
Ακολουθεί η σύνταξη της δήλωσης:
ΧΟΡΗΓΗΣΗ.
[ΕΠΙ.
ΠΡΟΣ ΤΗΝ.
[ΜΕ ΕΠΙΛΟΓΗ ΕΠΙΧΟΡΗΓΗΣΗΣ]
Τώρα, ας ρίξουμε μια ματιά σε αυτήν τη δήλωση γραμμή προς γραμμή. Η πρώτη γραμμή, ΧΟΡΗΓΗΣΗ , μας επιτρέπει να καθορίσουμε τα συγκεκριμένα δικαιώματα πινάκων που εκχωρούμε. Αυτά μπορεί να είναι είτε δικαιώματα επιπέδου πίνακα (όπως SELECT, INSERT, UPDATE και DELETE) είτε δικαιώματα βάσης δεδομένων (όπως CREATE TABLE, ALTER DATABASE και GRANT). Μπορούν να εκδοθούν περισσότερες από μία άδειες σε μία δήλωση GRANT, αλλά τα δικαιώματα επιπέδου πίνακα και τα δικαιώματα σε επίπεδο βάσης δεδομένων δεν μπορούν να συνδυαστούν σε μία μόνο δήλωση.
Η δεύτερη γραμμή, ΕΠΙ
Τέλος, η τέταρτη γραμμή, ΜΕ ΕΠΙΛΟΓΗ ΕΠΙΧΟΡΗΓΗΣΗΣ, είναι προαιρετικό. Εάν αυτή η γραμμή περιλαμβάνεται στη δήλωση, ο επηρεαζόμενος χρήστης επιτρέπεται επίσης να παραχωρήσει αυτά τα ίδια δικαιώματα σε άλλους χρήστες. Σημειώστε ότι η επιλογή ΕΠΙΔΟΤΗΣΗΣ ΜΕ ΔΩΡΕΑΝ δεν μπορεί να καθοριστεί όταν τα δικαιώματα εκχωρούνται σε έναν ρόλο.
Παράδειγμα επιχορηγήσεων βάσης δεδομένων
Ας δούμε μερικά παραδείγματα. Στο πρώτο μας σενάριο, προσλάβαμε πρόσφατα μια ομάδα 42 τελεστών εισαγωγής δεδομένων που θα προσθέσουν και θα διατηρήσουν αρχεία πελατών. Πρέπει να έχουν πρόσβαση σε πληροφορίες στον πίνακα Πελάτες, να τροποποιούν αυτές τις πληροφορίες και να προσθέτουν νέες εγγραφές στον πίνακα. Δεν θα πρέπει να μπορούν να διαγράψουν εντελώς μια εγγραφή από τη βάση δεδομένων.
Πρώτον, πρέπει να δημιουργήσουμε λογαριασμούς χρηστών για κάθε χειριστή και στη συνέχεια να τους προσθέσουμε σε έναν νέο ρόλο, Εισαγωγή δεδομένων. Στη συνέχεια, πρέπει να χρησιμοποιήσουμε την ακόλουθη δήλωση SQL για να τους παραχωρήσουμε τα κατάλληλα δικαιώματα:
ΕΠΙΛΕΞΤΕ ΕΠΙΛΟΓΗ, ΕΙΣΑΓΩΓΗ, ΕΝΗΜΕΡΩΣΗ.
Στους πελάτες.
ΣΤΟ DataEntry.
Τώρα ας εξετάσουμε μια περίπτωση όπου εκχωρούμε δικαιώματα σε επίπεδο βάσης δεδομένων. Θέλουμε να επιτρέψουμε στα μέλη του ρόλου DBA να προσθέσουν νέους πίνακες στη βάση δεδομένων μας. Επιπλέον, θέλουμε να μπορούν να παραχωρήσουν σε άλλους χρήστες άδεια να κάνουν το ίδιο. Ακολουθεί η δήλωση SQL:
ΧΡΗΣΙΜΟΠΟΙΕΙΤΕ ΤΡΑΠΕΖΑ.
ΣΤΟ DBA.
ΜΕ ΕΠΙΛΟΓΗ ΕΠΙΧΟΡΗΓΗΣΗΣ.
Σημειώστε ότι έχουμε συμπεριλάβει τη γραμμή ΕΠΙΛΟΓΗΣ ΜΕ ΧΟΡΗΓΗΣΗ για να διασφαλίσουμε ότι οι DBA μας μπορούν να εκχωρήσουν αυτήν την άδεια σε άλλους χρήστες.
Κατάργηση δικαιωμάτων
Το SQL περιλαμβάνει την εντολή REVOKE για την κατάργηση προηγούμενων δικαιωμάτων. Εδώ είναι η σύνταξη:
REVOKE [ΕΠΙΛΟΓΗ ΕΠΙΔΟΤΗΣΗΣ ΓΙΑ]
ΕΠΙ.
ΑΠΟ.
Θα παρατηρήσετε ότι η σύνταξη αυτής της εντολής είναι παρόμοια με αυτήν της εντολής GRANT. Η μόνη διαφορά είναι ότι με ΕΠΙΛΟΓΗ ΕΠΙΛΟΓΗΣ καθορίζεται στη γραμμή εντολών REVOKE και όχι στο τέλος της εντολής. Για παράδειγμα, ας υποθέσουμε ότι θέλουμε να ανακαλέσουμε την προηγούμενη άδεια της Mary για την κατάργηση εγγραφών από τη βάση δεδομένων Πελάτες. Θα χρησιμοποιούσαμε την ακόλουθη εντολή:
ΑΝΑΚΛΗΣΗ ΔΙΑΓΡΑΦΗΣ.
Στους πελάτες.
ΑΠΟ τη Μαρία.
Υπάρχει ένας επιπλέον μηχανισμός που υποστηρίζεται από τον Microsoft SQL Server που αξίζει να αναφερθεί - η εντολή DENY. Αυτή η εντολή μπορεί να χρησιμοποιηθεί για να αρνηθεί ρητά μια άδεια σε έναν χρήστη που διαφορετικά θα είχε μέσω μιας τρέχουσας ή μελλοντικής ιδιότητας μέλους ρόλου. Εδώ είναι η σύνταξη:
ΑΡΝΟΥΜΑΙ.
ΕΠΙ.
ΠΡΟΣ ΤΗΝ.