Προσθήκη βάσης πληροφοριών από την κονσόλα διαχείρισης διακομιστή 1C:Enterprise. Δημιουργία σύνδεσης SQL Server με έλεγχο ταυτότητας των Windows

Ηλεκτρονική 07.07.2019
Επισκόπηση προγράμματος Η έκδοση υπολογιστή του Microsoft Excel Viewer θα επιτρέψει...

Chercher

Ηλεκτρονική

Ο χρήστης μπορεί να συνδεθεί στο σύστημα βάσης δεδομένων χρησιμοποιώντας έναν λογαριασμό χρήστη Windows ή μια σύνδεση SQL Server. Για να αποκτήσει στη συνέχεια πρόσβαση και να εργαστεί με μια συγκεκριμένη βάση δεδομένων, ο χρήστης πρέπει επίσης να έχει λογαριασμό χρήστη βάσης δεδομένων. Για να εργαστείτε με κάθε μεμονωμένη βάση δεδομένων, πρέπει να έχετε έναν λογαριασμό χρήστη ειδικά για αυτήν τη βάση δεδομένων. Ένας λογαριασμός χρήστη βάσης δεδομένων μπορεί να αντιστοιχιστεί σε έναν υπάρχοντα λογαριασμό χρήστη των Windows, μια ομάδα Windows (στην οποία ο χρήστης έχει μέλος), σύνδεση ή ρόλο.

Μπορείτε να διαχειριστείτε χρήστες βάσης δεδομένων χρησιμοποιώντας δηλώσεις Management Studio ή Transact-SQL. Και οι δύο αυτές μέθοδοι συζητούνται στις ακόλουθες υποενότητες.

Διαχείριση χρηστών βάσης δεδομένων με χρήση του Management Studio

Για να προσθέσετε έναν χρήστη βάσης δεδομένων χρησιμοποιώντας το Management Studio, αναπτύξτε τον κόμβο διακομιστή στο παράθυρο Εξερεύνηση αντικειμένων και το φάκελο "Βάσεις δεδομένων" σε αυτόν και σε αυτόν τον φάκελο αναπτύξτε τον επιθυμητό κόμβο βάσης δεδομένων και τον φάκελο "Ασφάλεια" σε αυτόν. Κάντε δεξί κλικ στο φάκελο Χρήστες και επιλέξτε Νέος χρήστης από το μενού περιβάλλοντος. Θα ανοίξει το παράθυρο διαλόγου Χρήστης βάσης δεδομένων - Νέος, στο οποίο πρέπει να εισαγάγετε το όνομα χρήστη και να επιλέξετε το κατάλληλο όνομα σύνδεσης:

Εδώ μπορείτε επίσης να επιλέξετε το προεπιλεγμένο σχήμα για αυτόν τον χρήστη.

Διαχείριση της ασφάλειας βάσης δεδομένων με χρήση δηλώσεων Transact-SQL

Για να προσθέσετε έναν χρήστη στην τρέχουσα βάση δεδομένων χρησιμοποιήστε Οδηγίες ΔΗΜΙΟΥΡΓΙΑΣ ΧΡΗΣΤΗ. Η σύνταξη αυτής της εντολής μοιάζει με αυτό:

ΔΗΜΙΟΥΡΓΙΑ ΧΡΗΣΤΗ user_name Συντακτικές συμβάσεις

Η παράμετρος user_name καθορίζει το όνομα με το οποίο αναγνωρίζεται ο χρήστης στη βάση δεδομένων και η παράμετρος σύνδεσης καθορίζει το όνομα σύνδεσης για το οποίο δημιουργήθηκε αυτός ο χρήστης. Οι παράμετροι cert_name και key_name καθορίζουν το αντίστοιχο πιστοποιητικό και ασύμμετρο κλειδί, αντίστοιχα. Τέλος, στην παράμετρο ΜΕ DEFAULT_SCHEMAκαθορίζει το πρώτο σχήμα με το οποίο ο διακομιστής βάσης δεδομένων θα ξεκινήσει την αναζήτηση για την επίλυση ονομάτων αντικειμένων για έναν δεδομένο χρήστη βάσης δεδομένων.

Η χρήση της δήλωσης CREATE USER φαίνεται στο παρακάτω παράδειγμα:

ΧΡΗΣΗ SampleDb; ΔΗΜΙΟΥΡΓΙΑ ΧΡΗΣΤΗ Vasya ΓΙΑ ΕΙΣΟΔΟ Vasya; ΔΗΜΙΟΥΡΓΙΑ ΧΡΗΣΤΗ Alex ΓΙΑ ΣΥΝΔΕΣΗ ΜΕ DEFAULT_SCHEMA = poco;

Για να εκτελέσετε με επιτυχία τη δεύτερη εντολή στον υπολογιστή σας, πρέπει πρώτα να δημιουργήσετε έναν λογαριασμό Windows για τον χρήστη Alexandr και να καθορίσετε το όνομα του διακομιστή σας αντί για τον τομέα ProfessorWeb (διακομιστής).

Σε αυτό το παράδειγμα, η πρώτη δήλωση CREATE USER δημιουργεί έναν χρήστη βάσης δεδομένων Vasya για τον χρήστη Vasya του λογαριασμού Windows. Το προεπιλεγμένο σχήμα για τον χρήστη Vasya θα είναι dbo επειδή η παράμετρος DEFAULT_SCHEMA δεν έχει καθορισμένη τιμή. Η δεύτερη δήλωση CREATE USER δημιουργεί έναν νέο χρήστη βάσης δεδομένων Alex. Το προεπιλεγμένο σχήμα για αυτόν τον χρήστη θα είναι το poco. (Η παράμετρος DEFAULT_SCHEMA μπορεί να οριστεί σε ένα σχήμα που δεν υπάρχει αυτήν τη στιγμή στη βάση δεδομένων.)

Κάθε βάση δεδομένων έχει τους δικούς της συγκεκριμένους χρήστες. Επομένως, η δήλωση CREATE USER πρέπει να εκδίδεται για κάθε βάση δεδομένων για την οποία πρέπει να υπάρχει λογαριασμός χρήστη. Επιπλέον, για μια δεδομένη βάση δεδομένων, μια σύνδεση SQL Server μπορεί να έχει μόνο έναν χρήστη βάσης δεδομένων.

Χρησιμοποιώντας οδηγίες ΑΛΛΑΓΗ ΧΡΗΣΤΗμπορείτε να αλλάξετε το όνομα χρήστη της βάσης δεδομένων, να αλλάξετε το προεπιλεγμένο σχήμα χρήστη ή να παρακάμψετε το χρήστη με διαφορετικό όνομα σύνδεσης. Παρόμοια με τη δήλωση CREATE USER, μπορεί να εκχωρηθεί σε έναν χρήστη ένα προεπιλεγμένο σχήμα προτού δημιουργηθεί.

Για να αφαιρέσετε έναν χρήστη από την τρέχουσα βάση δεδομένων, χρησιμοποιήστε τη δήλωση ΑΠΟΣΤΟΛΗ ΧΡΗΣΤΗ. Ένας χρήστης που είναι κάτοχος προστατευμένων αντικειμένων (αντικείμενα βάσης δεδομένων) δεν μπορεί να διαγραφεί.

Προεπιλεγμένα σχήματα βάσεων δεδομένων

Κάθε βάση δεδομένων στο σύστημα έχει τα ακόλουθα προεπιλεγμένα σχήματα.

Γεια σε όλους! Τώρα θα δούμε παραδείγματα δημιουργία και διαγραφή χρηστών στο DBMS του Microsoft SQL Serverτόσο χρησιμοποιώντας δηλώσεις Transact-SQL όσο και χρησιμοποιώντας το περιβάλλον του Management Studio.

Η διαδικασία δημιουργίας χρηστών στον MS SQL Server περιλαμβάνει δύο στάδια:

  1. Δημιουργία σύνδεσης SQL Server. Αυτό το όνομα απαιτείται για να επιτρέπεται στον χρήστη να συνδεθεί με την παρουσία του SQL Server.
  2. Δημιουργία χρήστη βάσης δεδομένων. Σε αυτήν την περίπτωση, εκχωρούμε ήδη στον χρήστη δικαιώματα για αντικείμενα βάσης δεδομένων.

Σημείωμα! Για παράδειγμα, ο διακομιστής SQL μου θα είναι ο Microsoft SQL Server 2012 Express. Μια δοκιμαστική δοκιμή βάσης δεδομένων έχει δημιουργηθεί σε αυτόν τον διακομιστή SQL.

Δημιουργία σύνδεσης στον MS SQL Server

Πριν ξεκινήσετε τη δημιουργία μιας σύνδεσης για τον διακομιστή SQL, πρέπει να αποφασίσετε για τη μέθοδο ελέγχου ταυτότητας. Υπάρχουν δύο επιλογές:

  1. Έλεγχος ταυτότητας των Windowsείναι όταν μια σύνδεση μπορεί να προσδιορίσει έναν χρήστη ως λογαριασμό Windows ή ως μέλος μιας ομάδας Windows ( συμπεριλαμβανομένων λογαριασμών τομέα και ομάδων);
  2. Έλεγχος ταυτότητας SQL Server. Σε αυτήν την περίπτωση, η σύνδεση υπάρχει μόνο στον SQL Server.

Ας δούμε μερικά παραδείγματα δημιουργίας σύνδεσης σε διακομιστή SQL. Αυτό θα το κάνουμε πρώτα χρησιμοποιώντας το SQL Server Management Studio και μετά χρησιμοποιώντας το Transact-SQL.

Δημιουργία σύνδεσης με χρήση του SQL Server Management Studio

Ξεκινάμε το Management Studio και, στη συνέχεια, στο πρόγραμμα περιήγησης αντικειμένων βρίσκουμε το στοιχείο " Ασφάλεια", ανοίξτε το με το σύμβολο συν, κάντε δεξί κλικ στο στοιχείο " Συνδέσεις"και επιλέξτε το στοιχείο" Δημιουργία σύνδεσης».

Στη συνέχεια, για παράδειγμα, ας δημιουργήσουμε μια δοκιμαστική σύνδεση με έλεγχο ταυτότητας SQL Server. Καθορίζουμε το όνομα σύνδεσης, δημιουργούμε έναν κωδικό πρόσβασης και τον επιβεβαιώνουμε. Μπορούμε επίσης να ελέγξουμε πολλές επιλογές, όπως χρήση πολιτικής κωδικού πρόσβασης, προεπιλεγμένη βάση δεδομένων, προεπιλεγμένη γλώσσα και άλλες.

Στη συνέχεια κάντε κλικ στο κουμπί " ΕΝΤΑΞΕΙ", μετά την οποία θα δημιουργηθεί η σύνδεση TestLogin. Από προεπιλογή, αυτή η σύνδεση θα είναι ενεργοποιημένη και θα έχει τα δικαιώματα του ρόλου "δημόσιου" διακομιστή.

Δημιουργία σύνδεσης με χρήση Transact-SQL

Για να δημιουργήσετε μια σύνδεση στο Transact-SQL, πρέπει να ανοίξετε το πρόγραμμα επεξεργασίας ερωτημάτων στο Management Studio και να εκτελέσετε την ακόλουθη πρόταση ( κάνει ακριβώς το ίδιο πράγμα με τις παραπάνω ενέργειές μας στο Management Studio GUI).

CREATE LOGIN WITH PASSWORD=N"Pa$$w0rd", DEFAULT_DATABASE=, DEFAULT_LANGUAGE=[Ρωσικά], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON GO

Με άλλα λόγια, για τη δημιουργία μιας σύνδεσης στον διακομιστή SQL, χρησιμοποιείται η οδηγία ΔΗΜΙΟΥΡΓΙΑ ΣΥΝΔΕΣΗΣ.

Δημιουργία σύνδεσης SQL Server με έλεγχο ταυτότητας των Windows

Για να δημιουργήσετε μια σύνδεση με έλεγχο ταυτότητας των Windows, εκτελέστε την ακόλουθη πρόταση SQL:

ΔΗΜΙΟΥΡΓΙΑ ΣΥΝΔΕΣΗΣ ΑΠΟ ΤΑ WINDOWS ΜΕ DEFAULT_DATABASE=, DEFAULT_LANGUAGE=[Ρωσικά];

  • ΠΑΩ
  • ComputerName\NameUser είναι το Computer Name\User Name.
  • FROM WINDOWS - υποδεικνύει ότι θα χρησιμοποιηθεί έλεγχος ταυτότητας των Windows.
  • WITH DEFAULT_DATABASE= – προεπιλεγμένη βάση δεδομένων.

DEFAULT_LANGUAGE=[Ρωσικά] – προεπιλεγμένη γλώσσα.

Απενεργοποίηση και ενεργοποίηση συνδέσεων στον MS SQL Server

Εάν είναι απαραίτητο, μπορείτε να απενεργοποιήσετε προσωρινά τη σύνδεση προκειμένου να αποκλείσετε την πρόσβαση του χρήστη στον διακομιστή.

Δημιουργία χρήστη βάσης δεδομένων στον MS SQL Server

Μόλις δημιουργηθεί η σύνδεση, μπορείτε να προχωρήσετε στη δημιουργία ενός χρήστη βάσης δεδομένων, π.χ. αντιστοίχιση ενός χρήστη σε μια σύνδεση.

Ας δημιουργήσουμε έναν χρήστη TestLogin επίσης με δύο τρόπους, π.χ. χρησιμοποιώντας το Management Studio και τη γλώσσα T-SQL.

Δημιουργία χρήστη βάσης δεδομένων με χρήση του Management Studio

Ανοίξτε το Management Studio, βρείτε την επιθυμητή βάση δεδομένων στο πρόγραμμα περιήγησης αντικειμένων και ανοίξτε την με το σύμβολο συν. Στη συνέχεια χρησιμοποιήστε επίσης το σύμβολο συν για να ανοίξετε το στοιχείο " Ασφάλεια"και κάντε κλικ στο φάκελο" Χρήστες"κάντε δεξί κλικ και επιλέξτε" Δημιουργήστε έναν χρήστη».

Στη συνέχεια, εισαγάγετε το όνομα χρήστη και το όνομα σύνδεσης που αντιστοιχεί σε αυτόν τον χρήστη ( στην περίπτωσή μου τα ονόματα είναι τα ίδια), και υποδεικνύουν επίσης το προεπιλεγμένο σχήμα ( Εάν δεν προσδιορίζεται, θα εκχωρηθεί το σχήμα dbo).

Ας σημειώσουμε επίσης αμέσως τον ρόλο της βάσης δεδομένων που θα έχει αυτός ο χρήστης. Στη σελίδα " Ιδιότητα του μέλους«Τσέκαρα το πλαίσιο δίπλα στον ρόλο db_datareader, δηλ. ο χρήστης θα έχει δικαιώματα ανάγνωσης δεδομένων από πίνακες χρηστών. κάντε κλικ στο " ΕΝΤΑΞΕΙ».

Δημιουργία χρήστη βάσης δεδομένων με χρήση του Transact-SQL

Η ακόλουθη δήλωση T-SQL δημιουργεί έναν χρήστη βάσης δεδομένων ( προεπιλεγμένο σχήμα dbo) και του αναθέτει το ρόλο db_datareader, δηλ. κάνει το ίδιο πράγμα που κάναμε λίγο νωρίτερα στη γραφική διεπαφή του Management Studio.

ΧΡΗΣΗ Τεστ GO CREATE USER LOGIN WITH DEFAULT_SCHEMA= GO ALTER ROLE ADD MEMBER ;

ΠΑΩ Έτσι, οι οδηγίεςΔΗΜΙΟΥΡΓΙΑ ΧΡΗΣΤΗ

χρησιμοποιείται για τη δημιουργία χρήστη βάσης δεδομένων.

Κατάργηση χρήστη βάσης δεδομένων και σύνδεση στον MS SQL Server

Για να διαγράψετε έναν χρήστη βάσης δεδομένων, μπορείτε για παράδειγμα να γράψετε μια απλή πρόταση SQL

ΑΠΟΣΤΟΛΗ ΧΡΗΣΤΗ Testlogin; Ή χρησιμοποιήστε το γραφικό εργαλείο Management Studio, π.χ. στο πρόγραμμα περιήγησης αντικειμένων, στην επιθυμητή βάση δεδομένων, επιλέξτε «Ασφάλεια -> Χρήστες " και κάντε δεξί κλικ στον χρήστη που θέλετε να διαγράψετε και επιλέξτε "».

Σημείωμα! Διαγράφω

Οι χρήστες που κατέχουν ασφαλή αντικείμενα δεν μπορούν να αφαιρεθούν από τη βάση δεδομένων. Μπορείτε επίσης να χρησιμοποιήσετε το γραφικό εργαλείο του Management Studio (εκείνοι. "Ασφάλεια -> Συνδέσεις" κάντε δεξί κλικ στο όνομα και, στη συνέχεια, κάντε κλικ στο "Διαγραφή"

) και δήλωση Transact-SQL, π.χ.

Σημείωμα! Η τρέχουσα σύνδεση δεν μπορεί να διαγραφεί, ούτε η σύνδεση που κατέχει οποιοδήποτε ασφαλές αντικείμενο σε επίπεδο διακομιστή ή εργασία SQL Server Agent. Επίσης, μια σύνδεση δεν μπορεί να διαγραφεί εάν ο χρήστης είναι συνδεδεμένος αυτήν τη στιγμή στο σύστημα. Είναι δυνατή η διαγραφή μιας σύνδεσης χωρίς τη διαγραφή του συσχετισμένου χρήστη της βάσης δεδομένων, αλλά αυτό θα έχει ως αποτέλεσμα χρήστες που δεν συνδέονται πλέον με τους λογαριασμούς τους.

Μόνο αυτό ελπίζω, το υλικό σας ήταν χρήσιμο, αντίο!

Σχόλιο: Αυτή η διάλεξη περιέχει υλικό για τη διαχείριση της πρόσβασης στις βάσεις δεδομένων του SQL Server, ειδικότερα, καλύπτει τη διαχείριση χρηστών βάσης δεδομένων, την ενεργοποίηση του επισκέπτη χρήστη, τη δημιουργία ρόλων βάσης δεδομένων, τη χορήγηση αδειών βάσης δεδομένων και την προσθήκη χρήστη βάσης δεδομένων.

Η παροχή πρόσβασης σε μια παρουσία του SQL Server από μόνη της δεν θα είναι αρκετή για μια εφαρμογή που χρειάζεται πρόσβαση σε δεδομένα. Αφού εκχωρήσετε πρόσβαση σε μια παρουσία του SQL Server, πρέπει να παραχωρήσετε πρόσβαση σε συγκεκριμένες βάσεις δεδομένων. Η πρόσβαση στις βάσεις δεδομένων παρέχεται με την προσθήκη χρηστών βάσης δεδομένων και την εκχώρηση συνδέσεων σε χρήστες βάσης δεδομένων. Κάθε σύνδεση συνδέεται με έναν χρήστη βάσης δεδομένων για κάθε βάση δεδομένων στην οποία χρειάζεται πρόσβαση αυτή η σύνδεση. Κάθε χρήστης βάσης δεδομένων αντιστοιχίζεται σε μία μόνο σύνδεση, με εξαίρεση τον χρήστη της βάσης δεδομένων dbo.

Σημείωμα. Σε προηγούμενες εκδόσεις του SQL Server, θα μπορούσατε να χρησιμοποιήσετε τη διαδικασία αποθήκευσης του συστήματος sp_addalias για να αντιστοιχίσετε πολλαπλές συνδέσεις σε έναν μεμονωμένο χρήστη βάσης δεδομένων. Αυτό μπορεί επίσης να γίνει στον SQL Server 2005. Ωστόσο, αυτή η δυνατότητα δεν συνιστάται επειδή έχει καταργηθεί και ενδέχεται να καταργηθεί σε μελλοντικές εκδόσεις του προγράμματος.

Παροχή πρόσβασης σε βάσεις δεδομένων

Οι χρήστες της βάσης δεδομένων είναι συμμετέχοντες σε επίπεδο βάσης δεδομένων. Όλες οι συνδέσεις, με εξαίρεση τον ρόλο του διακομιστή sysadmin, πρέπει να αντιστοιχίζονται στους χρήστες, οι οποίοι με τη σειρά τους αντιστοιχίζονται στη βάση δεδομένων στην οποία χρειάζονται πρόσβαση. Ρόλος Μέλη sysadminαντιστοιχίζεται στο χρήστη dbo σε όλες τις βάσεις δεδομένων διακομιστή.

Προσθήκη χρήστη βάσης δεδομένων

Μπορείτε να προσθέσετε έναν χρήστη βάσης δεδομένων χρησιμοποιώντας τη δήλωση CREATE USER. Το ακόλουθο παράδειγμα κώδικα Transact-SQL δημιουργεί τη σύνδεση Peter και τον συνδεδεμένο χρήστη στη βάση δεδομένων Adventure Works:

  • Δημιουργήστε ένα όνομα σύνδεσης Peter

    ΔΗΜΙΟΥΡΓΙΑ ΣΥΝΔΕΣΗΣ Peter ΜΕ ΚΩΔΙΚΟ = "Tyu87IOR0";

  • ΧΡΗΣΗ AdventureWorks? ΠΑΩ

  • Προσθέστε έναν χρήστη βάσης δεδομένων, τον Peter, που έχει αντιστοιχιστεί στη σύνδεση Peter στη βάση δεδομένων AdventureWorks.

    ΔΗΜΙΟΥΡΓΙΑ ΧΡΗΣΤΗ Peter ΓΙΑ ΕΙΣΟΔΟ Peter;

Διαχείριση χρηστών βάσης δεδομένων

Μπορείτε να ελέγξετε εάν η τρέχουσα σύνδεση έχει πρόσβαση στη βάση δεδομένων χρησιμοποιώντας την ακόλουθη δήλωση:

SELECT HAS_DBACCESS("AdventureWorks");

Για να λάβετε πληροφορίες σχετικά με τους χρήστες της βάσης δεδομένων, μπορείτε να χρησιμοποιήσετε την προβολή καταλόγου sys.database_principals.

Εάν πρέπει να απενεργοποιήσετε προσωρινά την πρόσβαση ενός χρήστη στη βάση δεδομένων, μπορείτε να ανακαλέσετε την άδεια CONNECT για αυτόν τον χρήστη. Το ακόλουθο παράδειγμα ανακαλεί την άδεια CONNECT για τον χρήστη Peter:

  • Αλλάξτε το πλαίσιο σύνδεσης στη βάση δεδομένων AdventureWorks.

    ΧΡΗΣΗ AdventureWorks? ΠΑΩ

  • Ανάκληση άδειας σύνδεσης για τον Peter στο AdventureWorks.

    ΑΝΑΚΛΗΣΗ ΣΥΝΔΕΣΗΣ ΣΤΟΝ Πέτρο.

Μπορείτε να αφαιρέσετε έναν χρήστη από μια βάση δεδομένων χρησιμοποιώντας τη δήλωση DROP USER.

Προειδοποίηση. Ο SQL Server 2005 δεν επιτρέπει τη διαγραφή ενός χρήστη που είναι κάτοχος ενός σχήματος βάσης δεδομένων. Τα κυκλώματα συζητούνται αργότερα σε αυτή τη διάλεξη.

Διαχείριση χρηστών που έχουν χάσει την επαφή με τα στοιχεία σύνδεσής τους

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

  • Αλλάξτε το πλαίσιο σύνδεσης στη βάση δεδομένων AdventureWorks.

    ΧΡΗΣΗ AdventureWorks? ΠΑΩ

  • Δημιουργήστε μια αναφορά για όλους τους χρήστες της βάσης δεδομένων που έχουν χάσει τη σύνδεση σύνδεσής τους

    EXECUTE sp_change_users_login @Action="Report";

Ο SQL Server 2005 σάς επιτρέπει να δημιουργήσετε έναν χρήστη που δεν συσχετίζεται με σύνδεση χρησιμοποιώντας τον όρο ΧΩΡΙΣ ΣΥΝΔΕΣΗ. Οι χρήστες που δημιουργούνται με χρήση της ρήτρας ΧΩΡΙΣ ΣΥΝΔΕΣΗ δεν θεωρούνται ως ορφανοί χρήστες σύνδεσης. Αυτή η δυνατότητα μπορεί να είναι πολύ χρήσιμη σε μια κατάσταση όπου πρέπει να αλλάξετε το περιβάλλον εκτέλεσης μιας λειτουργικής μονάδας. Το πλαίσιο εκτέλεσης συζητείται αργότερα σε αυτή τη διάλεξη. Το ακόλουθο παράδειγμα δημιουργεί έναν χρήστη χωρίς συσχετισμένη σύνδεση.

  • Αλλάξτε το πλαίσιο σύνδεσης στη βάση δεδομένων AdventureWorks.

    ΧΡΗΣΗ AdventureWorks? ΠΑΩ

  • Δημιουργήστε μια βάση δεδομένων χρήστη Paul στη βάση δεδομένων AdventureWorks
  • χωρίς να το αντιστοιχίσετε σε μια σύνδεση σε μια δεδομένη παρουσία του SQL Server

    ΔΗΜΙΟΥΡΓΙΑ ΧΡΗΣΤΗ Paul ΧΩΡΙΣ ΣΥΝΔΕΣΗ.

Ενεργοποιήστε τον επισκέπτη χρήστη

Όταν μια σύνδεση που δεν έχει αντιστοιχισμένο χρήστη επιχειρεί να συνδεθεί στη βάση δεδομένων, ο SQL Server επιχειρεί να συνδεθεί χρησιμοποιώντας τον χρήστη Guest. Ο χρήστης Guest δημιουργείται από προεπιλογή χωρίς να παραχωρούνται δικαιώματα. Μπορείτε να ενεργοποιήσετε τον επισκέπτη χρήστη παραχωρώντας του την άδεια CONNECT, όπως φαίνεται παρακάτω.

  • Αλλάξτε το πλαίσιο σύνδεσης στη βάση δεδομένων AdventureWorks.

    ΧΡΗΣΗ AdventureWorks? ΠΑΩ

  • Παραχωρούμε στον χρήστη επισκέπτη πρόσβαση στη βάση δεδομένων AdventureWorks.

    GRANT CONNECT TO Guest.

    Σκεφτείτε προσεκτικά εάν θα ενεργοποιήσετε τον επισκέπτη χρήστη, καθώς αυτό εκθέτει το περιβάλλον της βάσης δεδομένων σας σε επιπλέον κίνδυνο.

Εκχώρηση αδειών βάσης δεδομένων

Αφού δημιουργήσετε χρήστες βάσης δεδομένων, πρέπει να διαχειριστείτε τα δικαιώματα για αυτούς τους χρήστες. Αυτό μπορεί να γίνει με την προσθήκη χρηστών σε ρόλους βάσης δεδομένων ή με την παραχώρηση αναλυτικών αδειών στους ίδιους τους χρήστες.

Δημιουργία ρόλων βάσης δεδομένων

Οι ρόλοι της βάσης δεδομένων είναι μέλη επιπέδου βάσεις δεδομένων. ΡόλοιΟι βάσεις δεδομένων μπορούν να χρησιμοποιηθούν για την εκχώρηση δικαιωμάτων ομάδα βάσης δεδομένωνχρήστες. Στον SQL Server 2005, δημιουργείται από προεπιλογή ένα σύνολο ρόλων βάσης δεδομένων. Αυτοί οι προεπιλεγμένοι ρόλοι παρατίθενται στον πίνακα. 3.1.

Πίνακας 3.1.
Προεπιλεγμένοι ρόλοι βάσης δεδομένων Ο ρόλος της βάσης δεδομένων
"Περιγραφή db_accessadmin
Μπορεί να ελέγξει την πρόσβαση στη βάση δεδομένων db_backupoperator
db_datareader Μπορεί να εκτελέσει αντίγραφα ασφαλείας της βάσης δεδομένων
Μπορεί να διαβάσει δεδομένα από όλους τους πίνακες των χρηστών db_datawriter
Μπορεί να προσθέσει, να διαγράψει και να ενημερώσει δεδομένα σε όλους τους πίνακες των χρηστών db_ddladmin
Μπορεί να εκτελέσει οποιεσδήποτε εντολές DDL στη βάση δεδομένων db_denydatareader
Δεν είναι δυνατή η ανάγνωση δεδομένων σε πίνακες χρηστών db_denydatawriter
Δεν είναι δυνατή η προσθήκη, διαγραφή ή ενημέρωση δεδομένων σε πίνακες χρηστών db_owner
Μπορεί να εκτελέσει όλες τις δραστηριότητες διαμόρφωσης και συντήρησης db_securityadmin
Μπορεί να αλλάξει τη ιδιότητα μέλους της βάσης δεδομένων και να διαχειριστεί τα δικαιώματα κοινό

Ο ειδικός ρόλος της βάσης δεδομένων. Όλοι οι χρήστες ανήκουν στον δημόσιο ρόλο. Οι χρήστες από τη δημόσια ομάδα δεν μπορούν να αφαιρεθούν.

  • Αλλάξτε το πλαίσιο σύνδεσης στη βάση δεδομένων AdventureWorks.

    ΧΡΗΣΗ AdventureWorks? ΠΑΩ

  • Μπορείτε να προσθέσετε ρόλους βάσης δεδομένων εάν θέλετε να ομαδοποιήσετε τους χρήστες με βάση συγκεκριμένες απαιτήσεις αδειών. Το ακόλουθο παράδειγμα κώδικα δημιουργεί έναν ρόλο βάσης δεδομένων που ονομάζεται Auditors και προσθέτει τον χρήστη Peter σε αυτόν τον νέο ρόλο.

    Δημιουργήστε τον ρόλο Auditors στη βάση δεδομένων AdventureWorks.

  • ΔΗΜΙΟΥΡΓΙΑ ΡΟΛΟΥ Ελεγκτές. ΠΑΩ

    Προσθέστε τον χρήστη Peter στον ρόλο Ελεγκτών

EXECUTE sp_addrolemember "Auditors", "Peter";

Υποβάλλοντας ερώτημα στη συνάρτηση συστήματος IS_MEMBER, μπορείτε να ελέγξετε εάν ο τρέχων χρήστης ανήκει σε ρόλο βάσης δεδομένων. Στο παρακάτω παράδειγμα, θα ελέγξουμε αν ο τρέχων χρήστης ανήκει στον ρόλο της βάσης δεδομένων db_owner.

  • Αλλάξτε το πλαίσιο σύνδεσης στη βάση δεδομένων AdventureWorks.

    ΧΡΗΣΗ AdventureWorks? ΠΑΩ

  • Έλεγχος εάν ο τρέχων χρήστης ανήκει στον ρόλο db_owner

    Οι βάσεις δεδομένων (συμπεριλαμβανομένου του συστήματος MySQL) είναι μια οντότητα για την αποθήκευση πληροφοριών με τη μορφή πινάκων. Για να μην είναι προσβάσιμες οι βάσεις δεδομένων άλλων ατόμων σε απολύτως κάθε χρήστη του διακομιστή, υπάρχει ένα σύστημα χρήστη για αυτές τις βάσεις δεδομένων. Η πρόσβαση σε μια βάση δεδομένων μπορεί να εκχωρηθεί από έναν διαχειριστή (ή έναν εξουσιοδοτημένο χρήστη) σε άλλο χρήστη και μπορεί να είναι πλήρης ή κάπως περιορισμένη. Πιο συγκεκριμένα, αυτός ο βαθμός πρόσβασης εκφράζεται με όρους προνομίων («δικαιώματα» ή «άδειες»).

    Δικαιώματα για χρήστες MySQL

    Υπάρχει μια σειρά από προνόμια στο σύστημα βάσης δεδομένων MySQL που παρατίθενται παρακάτω με μια περιγραφή. Τα τελευταία προνόμια είναι προνόμια διοικητικού επιπέδου, τα οποία αναφέρονται ρητά μόνο για αναφορά. Πλήρεις πληροφορίες σχετικά με τα δικαιώματα/προνόμια είναι διαθέσιμες στην τεκμηρίωση προγραμματιστή της MySQL:

    ΔΗΜΙΟΥΡΓΩ- σας επιτρέπει να δημιουργήσετε νέες βάσεις δεδομένων και πίνακες

    ΠΤΩΣΗ- σας επιτρέπει να διαγράψετε βάσεις δεδομένων ή πίνακες

    ΕΙΣΑΓΩ- σας επιτρέπει να προσθέσετε σειρές στον πίνακα.

    ΕΚΣΥΓΧΡΟΝΙΖΩ- σας επιτρέπει να αλλάξετε τα περιεχόμενα των σειρών του πίνακα. Δεν πρέπει να συγχέεται με το ALTER, το οποίο σας επιτρέπει να αλλάξετε την ίδια τη δομή του πίνακα (αριθμός γραμμών/στηλών, τύποι στηλών).

    ΔΙΑΓΡΑΦΩ- το αντίθετο του INSERT - σας επιτρέπει να διαγράψετε σειρές από τον πίνακα.

    ΑΛΛΑΖΩ- σας επιτρέπει να αλλάξετε τη δομή των πινάκων. Απαιτεί δικαιώματα CREATE και INSERT.

    ΕΠΙΛΟΓΗ ΧΟΡΗΓΗΣΗΣ- σας επιτρέπει να εκχωρήσετε συγκεκριμένα δικαιώματα σε έναν συγκεκριμένο χρήστη (και επίσης να τα επιλέξετε). Είναι δυνατή η παραχώρηση/αφαίρεση μόνο εκείνων των δικαιωμάτων που έχει ο ίδιος ο διοριστής.

    ΚΛΕΙΔΑΡΙΑ ΤΡΑΠΕΖΙΑ- κλειδώνει τον πίνακα ενώ γίνονται τεχνητές αλλαγές σε αυτόν (διαχείριση), ώστε τα δεδομένα μέσα σε αυτόν να μην μπορούν να αλλάξουν με τον φυσικό τους τρόπο (κατά τη διάρκεια της ροής εργασιών).

    ΑΝΑΦΟΡΕΣ- σας επιτρέπει να δημιουργήσετε μια σχέση μεταξύ πινάκων χρησιμοποιώντας ένα ξένο κλειδί.

    ΣΥΜΒΑΝ- δίνει το δικαίωμα δημιουργίας/αλλαγής/διαγραφής εργασιών για τον προγραμματιστή

    ΣΚΑΝΔΑΛΗ- σας επιτρέπει να δημιουργείτε/τροποποιείτε/διαγράφετε εναύσματα (συνδεδεμένα με συγκεκριμένους πίνακες), τα οποία, κατά την εκτέλεση DELETE, UPDATE ή ΕΙΣΑΓΩπροβεί σε πρόσθετες ενέργειες.

    ΔΕΙΚΤΗΣ- το προνόμιο δίνει το δικαίωμα προσθήκης/αφαίρεσης ευρετηρίων σε (από) πίνακες. Τα ίδια τα ευρετήρια εκχωρούνται με μη αυτόματο τρόπο και καθιστούν δυνατή την εξοικονόμηση χρόνου στην αναζήτηση σειρών.

    ΔΗΜΙΟΥΡΓΗΣΤΕ ΠΡΟΣΩΡΙΝΟΥΣ ΤΡΑΠΕΖΟΥΣ- σας επιτρέπει να δημιουργείτε προσωρινούς πίνακες για τη διάρκεια της συνεδρίας.

    ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΒΟΛΗ- σας επιτρέπει να δημιουργήσετε μια προβολή με τη μορφή πίνακα που στην πραγματικότητα δεν υπάρχει ως ενιαίος πίνακας και περιέχει μόνο δεδομένα από άλλους πίνακες. Για παράδειγμα, σε αυτήν την προβολή μπορείτε να συλλέξετε ορισμένα ομαδοποιημένα δεδομένα από τρεις πίνακες (χρησιμοποιώντας μια δήλωση SELECT) και στην πραγματικότητα τα δεδομένα που συλλέγονται θα αναφέρονται μόνο στα δεδομένα αυτών των 3 πινάκων και θα είναι επίσης μια ένωση που δεν χρειάζεται τον δικό της πίνακα .

    ΕΜΦΑΝΙΣΗ ΠΡΟΒΟΛΗ- σας επιτρέπει να ελέγχετε ποιο ερώτημα (από ποια δεδομένα αποτελούνται) δημιούργησε μια συγκεκριμένη προβολή που καθορίζεται χρησιμοποιώντας CREATE VIEW

    ΔΗΜΙΟΥΡΓΗΣΤΕ ΡΟΥΤΙΝΗ- σας επιτρέπει να δημιουργήσετε μια διαδικασία, η οποία είναι ένα σύνολο προετοιμασμένων εντολών SQL.

    ΑΛΛΑΓΗ ΡΟΥΤΙΝΑΣ- σας επιτρέπει να αλλάξετε μια διαδικασία που δημιουργήθηκε χρησιμοποιώντας το CREATE ΡΟΥΤΙΝΑ.

    ΕΚΤΕΛΩ- σας επιτρέπει να καλέσετε έτοιμες διαδικασίες.

    ΑΡΧΕΙΟ- παρέχει πρόσβαση ανάγνωσης σε οποιοδήποτε αρχείο στον διακομιστή στον οποίο έχει πρόσβαση το ίδιο το σύστημα MySQL και πρόσβαση για τη δημιουργία αρχείου σε καταλόγους στους οποίους η MySQL έχει δικαιώματα εγγραφής.

    ΔΗΜΙΟΥΡΓΗΣΤΕ ΤΡΑΠΕΖΟΧΩΡΟ(διαχειριστής) - σας επιτρέπει να δημιουργείτε/τροποποιείτε/διαγράφετε κενά πίνακα. Αυτός ο ίδιος ο χώρος είναι λογικός και δεν σχετίζεται με τη δομή ή το σχήμα της βάσης δεδομένων. Δηλώνει τη θέση των αντικειμένων της βάσης δεδομένων σε φυσικά μέσα και χρησιμοποιείται για τη βελτιστοποίηση του συστήματος βάσης δεδομένων.

    Έτσι, οι οδηγίες(διαχειριστής) - σας επιτρέπει να δημιουργήσετε/αλλάξετε/μετονομάστε/διαγράψετε χρήστες βάσης δεδομένων.

    ΔΙΑΔΙΚΑΣΙΑ(διαχειριστής) - επιτρέπει την πρόσβαση σε πληροφορίες σχετικά με νήματα (διαδικασίες) που εκτελούνται στον διακομιστή.

    ΠΛΗΡΕΞΟΥΣΙΟ(διαχειριστής) - σας επιτρέπει να συνδεθείτε ως άλλος χρήστης. Χρησιμοποιείται από τον διαχειριστή για τον έλεγχο/εντοπισμό των δικαιωμάτων πρόσβασης για τον απαιτούμενο χρήστη.

    ΓΕΜΙΖΩ ΠΑΛΙ(admin) - επιτρέπει τη χρήση του τελεστή FLUSH, ο οποίος διαγράφει την κρυφή μνήμη MySQL

    ΠΕΛΑΤΗΣ ΑΝΑΠΑΡΑΓΩΓΗΣ(διαχειριστής) - σας επιτρέπει να εκτελέσετε τις λειτουργίες SHOW MASTER STATUS, SHOW SLAVE STATUS και SHOW BINAR LOG.

    ΑΝΑΠΑΡΑΓΩΓΗ ΣΛΑΒ(διαχειριστής) - αυτό το προνόμιο απαιτείται για τους χρήστες ενός διακομιστή βάσης δεδομένων slave, έτσι ώστε αυτός ο διακομιστής να μπορεί να συνδεθεί στον κύριο διακομιστή ως slave. Χωρίς αυτό το προνόμιο, οι slave διακομιστές δεν θα μπορούν να ζητούν ενημερώσεις βάσης δεδομένων και πινάκων από τον κύριο διακομιστή.

    ΕΜΦΑΝΙΣΤΕ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ(διαχειριστής) - σας επιτρέπει να εκτελέσετε τη δήλωση SHOW DATBASE. Οι χρήστες που δεν έχουν τέτοιο προνόμιο, κατά την εκτέλεση αυτής της δήλωσης, θα μπορούν να βλέπουν μόνο τις βάσεις δεδομένων στις οποίες έχουν δικαιώματα.

    ΚΛΕΙΣΙΜΟ(διαχειριστής) - το προνόμιο σάς επιτρέπει να εκτελέσετε τη δήλωση SHUTDOWN, η οποία τερματίζει τη λειτουργία του διακομιστή MySQL.

    ΣΟΥΠΕΡ(διαχειριστής) - ένα προνόμιο που δίνει το δικαίωμα σε πολλές λειτουργίες:

    • σας επιτρέπει να τερματίσετε τις διαδικασίες που ανήκουν σε άλλους χρήστες
    • αλλαγή των παγκόσμιων μεταβλητών του συστήματος
    • ενεργοποίηση/απενεργοποίηση καταγραφής
    • πραγματοποιήστε ενημερώσεις ακόμη και με δικαιώματα ανάγνωσης που έχουν οριστεί για μεταβλητές συστήματος
    • έναρξη/διακοπή αναπαραγωγής σε slave διακομιστές
    • και τα λοιπά.

    ΟΛΟΙ(διαχειριστής) - στον χρήστη που έχει λάβει αυτό το προνόμιο εκχωρούνται αυτόματα όλα τα δικαιώματα εντός του επιπέδου προνομίων (πιθανά προνόμια κατ' αρχήν, σύμφωνα με το πλαίσιο παραχώρησης προνομίων). Μόνο που το προνόμιο δεν εκχωρείται ΕΠΙΛΟΓΗ ΧΟΡΗΓΗΣΗΣσε αυτή την περίπτωση.

    Εκχώρηση δικαιωμάτων για χρήστες MySQL σε πίνακες ελέγχου φιλοξενίας

    • DirectAdmin
    • cPanel
    • Διαχειριστής ISP
    • Webuzo

    DirectAdmin

    Στην κεντρική σελίδα του DirectAdmin κάτω από το επίπεδο χρήστη στο μενού Ο λογαριασμός σαςμεταβείτε στην ενότητα Διαχείριση MySQL:

    Εδώ μπορούμε να δημιουργήσουμε έναν νέο χρήστη για αυτήν τη βάση δεδομένων μεταβαίνοντας στο Δημιουργία νέου χρήστη βάσης δεδομένων, και δέστε την υπάρχουσα σε αυτήν. Θα πρέπει να σημειωθεί ότι δεν υπάρχει αποκλειστική διεπαφή για τη διαχείριση χρηστών. Είναι προσβάσιμο μόνο μέσω κάποιας βάσης δεδομένων. Για να εκχωρήσετε δικαιώματα στον χρήστη, ακολουθήστε τον σύνδεσμο τροποποιήσετε τα προνόμια:

    Στη σελίδα προνομίων, επιλέξτε τα δικαιώματα που θέλουμε να εκδώσουμε στον χρήστη για μια συγκεκριμένη βάση δεδομένων και αποθηκεύστε. Η γραμμή κατάστασης θα σας υπενθυμίσει τι και σε ποιον εκχωρούνται δικαιώματα:

    Μετά από αυτό, θα μεταφερθείτε στη σελίδα επιβεβαίωσης αποθήκευσης. Αυτό ήταν, τα δικαιώματα έχουν εκδοθεί.

    cPanel

    Στην κεντρική σελίδα του cPanel πρέπει να βρούμε την ενότητα Βάσεις δεδομένωνπήγαινε σε αυτό Βάσεις δεδομένων MySQL:

    Όλοι οι χειρισμοί με βάσεις δεδομένων MySQL, χρήστες βάσης δεδομένων και τα δικαιώματά τους εκτελούνται σε αυτό το μενού.

    Εάν δεν έχουμε ούτε βάση δεδομένων ούτε χρήστη, τότε τα δημιουργούμε στις κατάλληλες ενότητες της σελίδας:

    Κεφάλαιο Τρέχουσες βάσεις δεδομένωνθα ενημερωθεί:

    Δημιουργία χρήστη:

    Κεφάλαιο Τρέχοντες χρήστεςθα ενημερωθεί:

    Για να εκχωρήσουμε δικαιώματα σε έναν συγκεκριμένο χρήστη σε μια συγκεκριμένη βάση δεδομένων, πρέπει να βρούμε την ενότητα στη σελίδα Προσθήκη χρήστη στη βάση δεδομένωνκαι προσθέστε τον απαιτούμενο χρήστη στην απαιτούμενη βάση δεδομένων:

    Μετά την προσθήκη ενός χρήστη στη βάση δεδομένων, θα ανοίξει ένα παράθυρο διαλόγου για την εκχώρηση δικαιωμάτων:

    Το κουμπί "Όλα τα δικαιώματα" είναι ισοδύναμο με το προνόμιο ALL που περιγράφεται στην αρχή του σεμιναρίου και θα εκχωρήσει όλα τα πιθανά δικαιώματα σε έναν χρήστη στο πλαίσιο της ιδιότητας μέλους του χρήστη σε μια συγκεκριμένη ομάδα χρηστών στο επίπεδο ολόκληρου του διακομιστή MySQL.

    Αφού επιβεβαιώσετε τις αλλαγές που έγιναν, θα ανακατευθυνθείτε σε μια σελίδα που θα επιβεβαιώνει ότι έχουν εκδοθεί τα καθορισμένα δικαιώματα και η ενότητα στη βάση δεδομένων MySQL και τη σελίδα διαχείρισης χρηστών θα ενημερωθεί ξανά Τρέχουσες βάσεις δεδομένων:

    Ετοιμος. Ο χρήστης ανατίθεται στη βάση δεδομένων.

    ISPmanager Lite 5

    Όταν συνδέεστε στο ISPmanager ως χρήστης, πρέπει να μεταβείτε στο Εργαλεία -> Βάσεις δεδομένωναπό το αριστερό μενού.

    Στη συνέχεια, στη διεπαφή διαχείρισης βάσης δεδομένων που ανοίγει, πρέπει να επιλέξετε την απαιτούμενη βάση δεδομένων και να μεταβείτε στο μενού Χρήστεςγια να μεταβείτε στη διεπαφή διαχείρισης χρήστη της βάσης δεδομένων. Εάν δεν υπάρχουν βάσεις δεδομένων, τότε μπορείτε να δημιουργήσετε μια νέα κάνοντας κλικ στο κουμπί Προσθέτω.

    Θα πρέπει να σημειωθεί ότι κατά τη δημιουργία μιας νέας βάσης δεδομένων, θα μπορείτε να δημιουργήσετε αμέσως έναν νέο χρήστη που θα εκχωρηθεί σε αυτήν τη βάση δεδομένων. Ή μπορείτε να επιλέξετε έναν υπάρχοντα χρήστη, ο οποίος επίσης θα εκχωρηθεί αυτόματα σε αυτήν τη βάση δεδομένων.

    Στη διεπαφή διαχείρισης βάσης δεδομένων θα εμφανιστεί μια λίστα με όλους τους χρήστες αυτής της βάσης δεδομένων στον τρέχοντα λογαριασμό ISPmanager. Για να επεξεργαστείτε δικαιώματα, πρέπει να επιλέξετε έναν συγκεκριμένο χρήστη στον οποίο εκχωρείτε δικαιώματα και να μεταβείτε στο μενού Αλλαγή

    Μετά από αυτό θα δούμε όλα τα δικαιώματα που μπορούν να εκχωρηθούν σε αυτόν τον χρήστη:

    Από προεπιλογή, κατά τη δημιουργία χρήστη και βάσης δεδομένων, εκχωρούνται όλα τα δικαιώματα. Αλλάζουμε αυτά που χρειαζόμαστε και αποθηκεύουμε τα αποτελέσματα. Μετά από αυτό, θα επιστρέψετε στη σελίδα διαχείρισης χρηστών της βάσης δεδομένων.

    Webuzo

    Το Webuzo αποτελείται από 2 πίνακες: διαχειριστή και χρήστη. Μεταβείτε στον πίνακα χρήστη και επιλέξτε στην κεντρική σελίδα Διαχείριση βάσεων δεδομένων

    Στη σελίδα που ανοίγει μπορούμε:

    • δείτε μια λίστα με υπάρχουσες βάσεις δεδομένων [ Βάσεις δεδομένων];
    • δημιουργία νέας βάσης δεδομένων [ Δημιουργία βάσης δεδομένων];
    • δείτε μια λίστα με υπάρχοντες χρήστες βάσης δεδομένων [ Χρήστες βάσης δεδομένων];
    • δημιουργήστε έναν χρήστη βάσης δεδομένων και αντιστοιχίστε τον σε μια συγκεκριμένη βάση δεδομένων [ Προσθήκη χρήστη στη βάση δεδομένων]

    Εάν η βάση δεδομένων προορισμού δεν υπάρχει ακόμη, τότε μεταβείτε στο Create Database και δημιουργήστε μια νέα βάση δεδομένων:

    Εάν, ωστόσο, η βάση δεδομένων προορισμού υπάρχει ήδη, τότε στη διαχείριση βάσης δεδομένων πρέπει να πάμε Προσθήκη χρήστη στη βάση δεδομένωνκαι δημιουργήστε έναν νέο χρήστη βάσης δεδομένων ή καθορίστε έναν υπάρχοντα για να τον συνδέσετε στη βάση δεδομένων:

    Όταν προσθέτετε έναν χρήστη στη βάση δεδομένων, θα ανοίξει ένα νέο παράθυρο που σας ζητά να εκχωρήσετε δικαιώματα σε αυτόν τον χρήστη. Επιλέξτε τα δικαιώματα που χρειαζόμαστε και επιβεβαιώστε τις αλλαγές με το κουμπί Υποβολή Αλλαγών.

    Εάν τα δικαιώματα έχουν αλλάξει με επιτυχία, θα εμφανιστεί το ακόλουθο μήνυμα στο τρέχον παράθυρο: Ενημερώθηκαν τα δικαιώματα βάσης δεδομένων. Η εργασία ολοκληρώθηκε.

    Λαμβάνεται υπόψη το σύστημα ασφαλείας που υιοθετήθηκε στη γλώσσα SQL. Περιγράφονται οι γενικοί κανόνες για τον έλεγχο πρόσβασης. Περιγράφει τρόπους ελέγχου ταυτότητας και στοιχεία της δομής ασφαλείας (χρήστες, ρόλοι βάσης δεδομένων), διαχείριση του συστήματος ασφαλείας (δημιουργία και διαχείριση λογαριασμών, διαχείριση χρηστών και ρόλων). Δίνεται ένας ορισμός των δικαιωμάτων χρήστη για πρόσβαση σε αντικείμενα βάσης δεδομένων. Εξετάζονται έμμεσα δικαιώματα, ζητήματα άρνησης πρόσβασης και σιωπηρής άρνησης πρόσβασης, καθώς και διενέξεις πρόσβασης.

    Διαχείριση χρηστών βάσης δεδομένων

    Σταθερό σύστημα διαχείριση χρηστών– προαπαιτούμενο ασφάλεια δεδομένων, αποθηκευμένο σε οποιοδήποτε σχεσιακό DBMS. Δεν υπάρχει ενιαία τυπική εντολή στο SQL to δημιουργία χρηστώνβάσεις δεδομένων - κάθε υλοποίηση το κάνει αυτό διαφορετικά. Σε ορισμένες υλοποιήσεις αυτές οι ειδικές εντολές έχουν ορισμένες ομοιότητες, ενώ σε άλλες η σύνταξή τους διαφέρει σημαντικά. Ωστόσο, ανεξάρτητα από τη συγκεκριμένη εφαρμογή, όλες οι βασικές αρχές είναι ίδιες.

    Διαχείριση χρηστών σε περιβάλλον MS SQL Server

    Ας εξετάσουμε την ερώτηση δημιουργία χρηστώνσε περιβάλλον MS SQL Server.

    Μετά το σχεδιασμό της λογικής δομής της βάσης δεδομένων, των σχέσεων μεταξύ πινάκων, των περιορισμών ακεραιότητας και άλλων δομών, είναι απαραίτητο να προσδιοριστεί το εύρος των χρηστών που θα έχουν πρόσβαση στη βάση δεδομένων.

    Το σύστημα διακομιστή SQL έχει μια διαμόρφωση δύο επιπέδων περιορισμών πρόσβασης δεδομένων. Σε πρώτο επίπεδο είναι απαραίτητο να δημιουργηθεί το λεγόμενο λογαριασμό χρήστη(σύνδεση), που του επιτρέπει να συνδεθεί με τον ίδιο τον διακομιστή, αλλά δεν του δίνει αυτόματα πρόσβαση στις βάσεις δεδομένων. Στο δεύτερο επίπεδο, πρέπει να δημιουργηθεί μια εγγραφή χρήστη για κάθε βάση δεδομένων διακομιστή SQL βάσει του λογαριασμού. Με βάση τα δικαιώματα που παρέχονται στον χρήστη ως χρήστης βάσης δεδομένων (χρήστης), το όνομα σύνδεσής του (σύνδεση) αποκτά πρόσβαση στην αντίστοιχη βάση δεδομένων. Σε διαφορετικές βάσεις δεδομένων, η σύνδεση του ίδιου χρήστη μπορεί να έχει τα ίδια ή διαφορετικά ονόματα χρήστη με διαφορετικά δικαιώματα πρόσβασης. Με άλλα λόγια, με τη βοήθεια λογαριασμό χρήστηπραγματοποιείται μια σύνδεση με τον διακομιστή SQL, μετά την οποία προσδιορίζονται τα επίπεδα πρόσβασής του για κάθε βάση δεδομένων ξεχωριστά.

    Στο σύστημα διακομιστή SQL, υπάρχουν επιπλέον αντικείμενα - ρόλοι, που καθορίζουν το επίπεδο πρόσβασης σε αντικείμενα διακομιστή SQL. Χωρίζονται σε δύο ομάδες: σε αυτές που έχουν ανατεθεί λογαριασμούς χρηστώνδιακομιστές και χρησιμοποιείται για τον περιορισμό της πρόσβασης σε αντικείμενα βάσης δεδομένων.

    Έτσι, σε επίπεδο διακομιστή, το σύστημα ασφαλείας λειτουργεί με τις ακόλουθες έννοιες:

    • έλεγχος ταυτότητας ;
    • λογαριασμός ;
    • ενσωματωμένους ρόλους διακομιστή.

    Σε επίπεδο βάσης δεδομένων ισχύουν οι ακόλουθες έννοιες.

    • χρήστης βάσης δεδομένων·
    • Σταθερός ρόλος βάσης δεδομένων?
    • έθιμορόλο της βάσης δεδομένων.

    Λειτουργίες ελέγχου ταυτότητας

    Ο SQL Server προσφέρει δύο λειτουργίες έλεγχο ταυτότητας χρήστη:

    • λειτουργία ελέγχου ταυτότητας με χρήση Windows NT/2000.
    • έλεγχος ταυτότητας μεικτού τρόπου λειτουργίας (Πιστοποίηση ταυτότητας Windows NT και έλεγχος ταυτότητας διακομιστή SQL).

    Διαχείριση συστημάτων ασφαλείας

    Για δημιουργία χρήστηΣτο περιβάλλον MS SQL Server θα πρέπει να γίνουν τα ακόλουθα βήματα:

    1. Δημιουργία στη βάση δεδομένων λογαριασμό χρήστηκαθορίζοντας έναν κωδικό πρόσβασης και το προεπιλεγμένο όνομα βάσης δεδομένων (sp_addlogin).
    2. Προσθέστε αυτόν τον χρήστη σε όλες τις απαιτούμενες βάσεις δεδομένων (sp_adduser).
    3. Εκχωρήστε του τα κατάλληλα δικαιώματα σε κάθε βάση δεδομένων (εντολή GRANT).

    Δημιουργία νέου λογαριασμούμπορεί να γίνει χρησιμοποιώντας μια αποθηκευμένη διαδικασία συστήματος:

    sp_addlogin [@login=] "λογαριασμός" [, [@password=] "password"] [, [@defdb=] "default_database"]

    Μετά την ολοκλήρωση του ελέγχου ταυτότητας και τη λήψη χρήστης ταυτότητας σύνδεσηςθεωρείται εγγεγραμμένο και του παρέχεται πρόσβαση στον διακομιστή. Για κάθε βάση δεδομένων στα αντικείμενα της οποίας σκοπεύει να έχει πρόσβαση, λογαριασμό χρήστη(login) συνδέεται με τον χρήστη (χρήστη) συγκεκριμένης βάσης δεδομένων, η οποία γίνεται με τη διαδικασία:

    sp_adduser [@loginame=] "λογαριασμός" [, [@name_in_db=] "όνομα χρήστη"] [, [@grpname=] "όνομα ρόλου"]

    Η αποθηκευμένη διαδικασία σάς επιτρέπει να αντιστοιχίσετε έναν λογαριασμό Windows NT σε ένα όνομα χρήστη:

    sp_grantdbaccess [@login=] 'λογαριασμός' [, [@name_in_db=]'όνομα χρήστη']

    Ο χρήστης που δημιουργεί ένα αντικείμενο στη βάση δεδομένων (πίνακας, αποθηκευμένη διαδικασία, προβολή) γίνεται ο ιδιοκτήτης του. Κάτοχος αντικειμένου(κάτοχος αντικειμένου βάσης δεδομένων dbo) έχει όλα τα δικαιώματα πρόσβασης στο αντικείμενο που δημιούργησε. Προκειμένου ένας χρήστης να δημιουργήσει ένα αντικείμενο, ο κάτοχος της βάσης δεδομένων (dbo) πρέπει να εκχωρήσει στον χρήστη τα κατάλληλα δικαιώματα. Το πλήρες όνομα του αντικειμένου που δημιουργείται περιλαμβάνει το όνομα του χρήστη που το δημιούργησε.

    Κάτοχος αντικειμένουδεν διαθέτει ειδικό κωδικό πρόσβασης ή ειδικά δικαιώματα πρόσβασης. Έχει έμμεσα τον πλήρη έλεγχο, αλλά πρέπει να παραχωρήσει ρητά πρόσβαση σε άλλους χρήστες.

    Ο SQL Server σάς επιτρέπει να μεταφέρετε την ιδιοκτησία από έναν χρήστη σε άλλο χρησιμοποιώντας τη διαδικασία:

    sp_changeobjectowner [@objname=] 'object_name' [@newowner=] 'owner_name'

    Ένας ρόλος σάς επιτρέπει να συνδυάσετε χρήστες που εκτελούν τις ίδιες λειτουργίες σε μία ομάδα.

    Ο SQL Server υλοποιεί δύο τύπους τυπικών ρόλων: σε επίπεδο διακομιστή και σε επίπεδο βάσης δεδομένων. Κατά την εγκατάσταση του SQL Server, δημιουργούνται σταθεροί ρόλοι διακομιστή (για παράδειγμα, sysadmin με το δικαίωμα εκτέλεσης οποιωνδήποτε λειτουργιών του διακομιστή SQL) και σταθεροί ρόλοι βάσης δεδομένων (για παράδειγμα, db_owner με πλήρη πρόσβαση στη βάση δεδομένων ή db_accessadmin με δικαίωμα προσθήκης και κατάργηση χρηστών). Μεταξύ των σταθερών ρόλων βάσης δεδομένων, υπάρχει ο δημόσιος ρόλος, ο οποίος έχει ειδικό σκοπό γιατί μέλη του είναι όλοι οι χρήστες που έχουν πρόσβαση στη βάση δεδομένων.

    Μπορείτε να συμπεριλάβετε οποιονδήποτε λογαριασμό SQL Server (σύνδεση) ή λογαριασμό Windows NT σε οποιονδήποτε ρόλο διακομιστή.

    Οι ρόλοι βάσης δεδομένων σάς επιτρέπουν να συνδυάζετε χρήστες σε μια διαχειριστική μονάδα και να εργάζεστε μαζί της ως τακτικός χρήστης. Μπορείτε να εκχωρήσετε δικαιώματα πρόσβασης σε αντικείμενα βάσης δεδομένων σε έναν συγκεκριμένο ρόλο, ο οποίος εκχωρεί αυτόματα σε όλα τα μέλη αυτού του ρόλου τα ίδια δικαιώματα.

    Ο ρόλος της βάσης δεδομένων μπορεί να περιλαμβάνει χρήστες SQL Server, ρόλους SQL Server και χρήστες Windows NT.

    Διάφορες ενέργειες σε σχέση με τον ρόλο εκτελούνται χρησιμοποιώντας ειδικές διαδικασίες:

    • δημιουργώντας έναν νέο ρόλο:

      sp_addrole [@rolename=] "role_name" [, [@ownername=] "owner_name"]

    • προσθήκη χρήστη σε ρόλο:

      sp_addrolemember [@rolename=] "role_name", [@membername=] "user_name"

    • κατάργηση χρήστη από έναν ρόλο:

      sp_droprolemember [@rolename=] "role_name", [@membername=] "user_name"

    • αφαίρεση ρόλου:

      sp_droprole [@rolename=] "role_name"

    Έλεγχος πρόσβασης δεδομένων

    Καθορισμός προνομίων σε ένα γλωσσικό πρότυπο

    Κάθε DBMS πρέπει να υποστηρίζει έναν μηχανισμό που να διασφαλίζει ότι μόνο οι χρήστες που έχουν την κατάλληλη άδεια μπορούν να έχουν πρόσβαση στη βάση δεδομένων. Η γλώσσα SQL περιλαμβάνει δηλώσεις GRANT και REVOKE που έχουν σχεδιαστεί για την προστασία των πινάκων σε μια βάση δεδομένων. Ο μηχανισμός προστασίας βασίζεται στη χρήση αναγνωριστικά χρηστών, δικαιώματα ιδιοκτησίας και προνόμια που τους παραχωρούνται.

    Αναγνωριστικό χρήστηείναι ένα κοινό αναγνωριστικό SQL που χρησιμοποιείται για την αναγνώριση ενός χρήστη βάσης δεδομένων. Σε κάθε χρήστη πρέπει να εκχωρηθεί το δικό του αναγνωριστικό, που θα εκχωρηθεί από τον διαχειριστή της βάσης δεδομένων. Για προφανείς λόγους ασφαλείας αναγνωριστικό χρήστησυνήθως σχετίζεται με κάποιο κωδικό πρόσβασης. Κάθε πρόταση SQL που εκτελείται από το DBMS εκτελείται για λογαριασμό ενός χρήστη. Αναγνωριστικό χρήστηκαθορίζει ποια αντικείμενα βάσης δεδομένων μπορεί να αναφέρει ένας χρήστης και ποιες λειτουργίες σε αυτά τα αντικείμενα είναι εξουσιοδοτημένο να εκτελεί.

    Κάθε αντικείμενο που δημιουργείται στο περιβάλλον SQL έχει τον δικό του ιδιοκτήτη, ο οποίος είναι αρχικά το μόνο άτομο που γνωρίζει την ύπαρξη αυτού του αντικειμένου και έχει το δικαίωμα να εκτελέσει οποιεσδήποτε λειτουργίες με αυτό.

    Τα δικαιώματα ή τα δικαιώματα είναι ενέργειες που έχει το δικαίωμα να εκτελέσει ένας χρήστης σε σχέση με έναν δεδομένο πίνακα ή προβολή βάσης δεδομένων. Το πρότυπο SQL ορίζει το ακόλουθο σύνολο προνομίων:

    • ΕΠΙΛΟΓΗ – το δικαίωμα επιλογής δεδομένων από τον πίνακα.
    • INSERT – το δικαίωμα εισαγωγής νέων σειρών στον πίνακα.
    • ΕΝΗΜΕΡΩΣΗ – το δικαίωμα αλλαγής δεδομένων στον πίνακα.
    • ΔΙΑΓΡΑΦΗ – το δικαίωμα διαγραφής σειρών από τον πίνακα.
    • ΑΝΑΦΟΡΕΣ – το δικαίωμα αναφοράς σε στήλες του καθορισμένου πίνακα στις περιγραφές των απαιτήσεων υποστήριξης ακεραιότητας δεδομένων.
    • ΧΡΗΣΗ – το δικαίωμα χρήσης τομέων, επικυρώσεων και συνόλων χαρακτήρων.

    Τα δικαιώματα INSERT και UPDATE μπορούν να περιοριστούν σε συγκεκριμένες στήλες σε έναν πίνακα, οπότε ο χρήστης επιτρέπεται να τροποποιήσει μόνο τις τιμές αυτών των στηλών. Ομοίως, το προνόμιο REFERENCES μπορεί να εφαρμοστεί αποκλειστικά σε μεμονωμένες στήλες ενός πίνακα, επιτρέποντας τη χρήση των ονομάτων τους σε δηλώσεις ακεραιότητας δεδομένων, όπως οι όροι CHECK και FOREIGN KEY που περιλαμβάνονται στον ορισμό άλλων πινάκων, ενώ άλλες στήλες θα απαγορεύεται να χρησιμοποιούνται για παρόμοιους σκοπούς.

    Όταν ένας χρήστης δημιουργεί έναν νέο πίνακα χρησιμοποιώντας τη δήλωση CREATE TABLE, γίνεται αυτόματα ο κάτοχός του και λαμβάνει ένα πλήρες σύνολο προνομίων σε αυτόν που οι άλλοι χρήστες δεν έχουν αρχικά. Για να τους παραχωρήσει πρόσβαση, ο ιδιοκτήτης πρέπει να παραχωρήσει ρητά τα απαραίτητα δικαιώματα, κάτι που γίνεται με τη χρήση της δήλωσης GRANT.

    Δημιουργώντας μια αναλυτική προβολή χρησιμοποιώντας τη δήλωση ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΒΟΛΗ, ο χρήστης γίνεται αυτόματα ο κάτοχος αυτής της προβολής και έχει επίσης πλήρη δικαιώματα. Για να δημιουργήσει μια προβολή, ο χρήστης χρειάζεται μόνο να έχει το δικαίωμα SELECT σε όλους τους πίνακες που περιλαμβάνονται σε αυτήν και το δικαίωμα REFERENCES σε όλες τις στήλες που αναφέρονται στον ορισμό αυτής της προβολής. Ο χρήστης θα λάβει δικαιώματα INSERT, UPDATE και DELETE στην προβολή που δημιουργήθηκε μόνο εάν έχει τα αντίστοιχα δικαιώματα σε όλους τους πίνακες που χρησιμοποιούνται στην προβολή.

    Παροχή προνομίων στους χρήστες

    Η δήλωση GRANT χρησιμοποιείται για παραχώρηση προνομίωνέναντι ονομασμένων αντικειμένων βάσης δεδομένων σε συγκεκριμένους χρήστες. Συνήθως χρησιμοποιείται από τον ιδιοκτήτη του τραπεζιού παρέχοντας πρόσβασησε άλλους χρήστες. Η δήλωση GRANT έχει την ακόλουθη μορφή:

    <предоставление_привилегий>::= ΧΟΡΗΓΗΣΗ (<привилегия>[,...n] | ALL PRIVILEGES) ON object_name TO (<идентификатор_пользователя>[,...n]| ΔΗΜΟΣΙΟ) [ΜΕ ΕΠΙΛΟΓΗ ΕΠΙΧΟΡΗΓΗΣΗΣ]

    Παράμετρος<привилегия>αντιπροσωπεύει:

    <привилегия>::= (ΕΠΙΛΟΓΗ | ΔΙΑΓΡΑΦΗ | ΕΙΣΑΓΩΓΗ [(όνομα_στήλης[,...n])] | ΕΝΗΜΕΡΩΣΗ [(όνομα_στήλης[,...n])]) | ΑΝΑΦΟΡΕΣ [(όνομα_στήλης[,...n])] | ΧΡΗΣΗ)

    Για απλότητα, μπορείτε να καθορίσετε τη λέξη-κλειδί ALL PRIVILEGES στη δήλωση GRANT, η οποία θα εκχωρήσει στον καθορισμένο χρήστη όλα τα υπάρχοντα δικαιώματα χωρίς να χρειάζεται να τα καταχωρίσει. Επιπλέον, αυτή η δήλωση μπορεί να περιλαμβάνει τη λέξη-κλειδί ΔΗΜΟΣΙΑ, έννοια παραχώρηση πρόσβασηςτου καθορισμένου τύπου όχι μόνο σε όλους τους υπάρχοντες χρήστες, αλλά και σε όλους εκείνους που θα οριστούν στη βάση στη συνέχεια.

    Η παράμετρος object_name μπορεί να χρησιμοποιηθεί ως όνομα πίνακα βάσης δεδομένων, προβολή, τομέα, σύνολο χαρακτήρων, έλεγχος.

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

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

    Σε γλώσσα SQL για ανάκληση προνομίων, παρέχεταιστους χρήστες μέσω της δήλωσης GRANT, χρησιμοποιείται η δήλωση REVOKE. Χρησιμοποιώντας αυτόν τον τελεστή, όλα ή ορισμένα από τα προνόμια που είχε αποκτήσει προηγουμένως ο καθορισμένος χρήστης μπορούν να ανακληθούν. Η δήλωση REVOKE έχει την ακόλουθη μορφή:

    <отмена_привилегий>::= ΑΝΑΚΛΗΣΗ (<привилегия>[,...n] | ALL PRIVILEGES) ON object_name FROM (<идентификатор_пользователя>[,...n]| ΚΟΙΝΟ)

    Η λέξη-κλειδί ALL PRIVILEGES σημαίνει ότι ανακαλούνται όλα τα δικαιώματα για τον καθορισμένο χρήστη. παρέχεταιείχε εισαχθεί προηγουμένως από τον χρήστη που εισήγαγε αυτόν τον τελεστή. Η προαιρετική ρήτρα GRANT OPTION FOR επιτρέπει την παράκαμψη όλων των προνομίων που μεταβιβάστηκαν στην αρχική δήλωση GRANT από το WITH GRANT OPTION, ανεξάρτητα από τα ίδια τα δικαιώματα.

    Εάν η λέξη-κλειδί RESTRICT καθορίζεται στη δήλωση, η εντολή ΑΝΑΚΛΗΣΗ μπορεί να επιτύχει μόνο εάν τα δικαιώματα που αναφέρονται στη δήλωση δεν προκαλούν σε άλλους χρήστες τα λεγόμενα "διατηρημένα" δικαιώματα. Η επιλογή CASCADE καταργεί τυχόν προνόμια που θα μπορούσαν διαφορετικά να παραμείνουν σε άλλους χρήστες.

    Τα δικαιώματα "Διατηρούνται" είναι εκείνα που διατηρούνται από τον χρήστη στον οποίο είχαν εκχωρηθεί κάποτε χρησιμοποιώντας την παράμετρο ΕΠΙΛΟΓΗ GRANT.

    Δεδομένου ότι η παρουσία ενός προνομίου είναι απαραίτητη για τη δημιουργία ορισμένων αντικειμένων, μαζί με τη διαγραφή του, μπορείτε να χάσετε το δικαίωμα μέσω της χρήσης του οποίου δημιουργήθηκε αυτό ή εκείνο το αντικείμενο (τέτοια αντικείμενα ονομάζονται "εγκαταλελειμμένα"). Εάν η δήλωση REVOKE μπορεί να οδηγήσει σε εγκαταλελειμμένα αντικείμενα (όπως προβολές), το δικαίωμα θα ανακληθεί εκτός εάν καθοριστεί η λέξη-κλειδί CASCADE. Εάν η λέξη-κλειδί CASCADE υπάρχει στη δήλωση, τότε οι δηλώσεις DROP θα εκδοθούν αυτόματα για τυχόν απορριπτόμενα αντικείμενα που προκύπτουν κατά την εκτέλεση της αρχικής δήλωσης REVOKE.

    Τα προνόμια που έχουν παραχωρηθεί στον συγκεκριμένο χρήστη από άλλους χρήστες δεν μπορούν να επηρεαστούν από τη δήλωση ΑΝΑΚΛΗΣΗ. Επομένως, εάν ένας άλλος χρήστης παραχώρησε επίσης σε έναν συγκεκριμένο χρήστη ένα αφαιρούμενο δικαίωμα, τότε ο καθορισμένος χρήστης θα διατηρήσει το δικαίωμα πρόσβασης στον αντίστοιχο πίνακα. Για παράδειγμα, ας υποθέσουμε ότι ο χρήστης Α και ο χρήστης Ε είχαν δικαίωμα INSERT στον πίνακα Προϊόν. Ο χρήστης Α παραχώρησε το δικαίωμα INSERT στον χρήστη Β για τον πίνακα Προϊόντων, προσδιορίζοντας ΜΕ ΕΠΙΛΟΓΗ ΧΟΡΗΓΗΣΗΣ (βήμα 1). Ο χρήστης Β μεταβίβασε αυτό το δικαίωμα στον χρήστη Γ (βήμα 2). Στη συνέχεια ο χρήστης C το έλαβε από τον χρήστη Ε (βήμα 3). Στη συνέχεια, ο χρήστης C παραχώρησε το εν λόγω δικαίωμα στον χρήστη D (βήμα 4). Όταν ο χρήστης Α ανακαλεί το προνόμιο INSERT για τον χρήστη Β, δεν μπορεί να αντιστραφεί για τον χρήστη Γ επειδή το έχει ήδη λάβει από τον χρήστη Ε. Εάν ο χρήστης Ε δεν είχε παραχωρήσει αυτό το δικαίωμα στον χρήστη C, τότε η κατάργηση του προνομίου του χρήστη Β θα είχε ως αποτέλεσμα τη διαδοχική κατάργηση των δικαιωμάτων για τους χρήστες C και D (βλ. Πίνακα 17.1).

    Υλοποίηση δικαιωμάτων πρόσβασης σε αντικείμενα βάσης δεδομένων στο περιβάλλον MS SQL Server

    Κατηγορίες δικαιωμάτων στο περιβάλλον MS SQL Server

    Κατά τη σύνδεση στον SQL Server, όλες οι πιθανές ενέργειες των χρηστών καθορίζονται από τα δικαιώματα (προνόμια, δικαιώματα) που εκχωρούνται στον λογαριασμό, την ομάδα ή τον ρόλο τους στον οποίο ανήκουν.

    Τα δικαιώματα μπορούν να χωριστούν σε τρεις κατηγορίες:

    • δικαιώματα πρόσβασης σε αντικείμενα;
    • δικαιώματα εκτέλεσης εντολών;
    • σιωπηρά δικαιώματα.
    Πίνακας 17.1.
    Χρήστης ΑΧρήστης ΒΧρήστης ΓΧρήστης ΔΧρήστης Ε
    ΕΝΘΕΤΟ ΧΟΡΗΓΗΣΗΣ ΣΤΟ Προϊόν ΣΤΟ Β ΜΕ ΕΠΙΛΟΓΗ ΧΟΡΗΓΗΣΗΣ Απόκτηση του δικαιώματος
    Λήψη δικαιωμάτων από τον Β. Λήψη δικαιώματος από την Ε GRANT INSERT ON Product TO C ΜΕ ΕΠΙΛΟΓΗ GRANT
    GRANT INSERT ON Product TO D Απόκτηση του δικαιώματος
    ΑΝΑΚΛΗΣΗ ΕΝΘΕΤΟΥ ΣΤΟ ΠΡΟΪΟΝ ΣΤΟ Β ΚΑΤΑΡΙΧΟ Ακύρωση δικαιωμάτωνΕπιφύλαξη δικαιωμάτωνΕπιφύλαξη δικαιωμάτωνΕπιφύλαξη δικαιωμάτων

    Η εργασία με δεδομένα και η εκτέλεση αποθηκευμένων διαδικασιών απαιτεί μια κλάση πρόσβασης που ονομάζεται δικαιώματα πρόσβασης σε αντικείμεναβάσεις δεδομένων. Αντικείμενα σημαίνουν πίνακες, στήλες πίνακα, προβολές, αποθηκευμένες διαδικασίες.

    Διαφορετικά αντικείμενα έχουν διαφορετικά σύνολα δικαιωμάτων πρόσβασης σε αυτά:

    • ΕΠΙΛΟΓΗ, ΕΙΣΑΓΩΓΗ, ΕΝΗΜΕΡΩΣΗ, ΔΙΑΓΡΑΦΗ, ΑΝΑΦΟΡΕΣ – για πίνακα ή προβολή.
    • ΕΠΙΛΟΓΗ , ΕΝΗΜΕΡΩΣΗ – για μια συγκεκριμένη στήλη ενός πίνακα ή προβολής.
    • EXECUTE – για αποθηκευμένες διαδικασίες και λειτουργίες.

    Το δικαίωμα INSERT σάς επιτρέπει να εισαγάγετε νέες σειρές σε έναν πίνακα ή μια προβολή και εκχωρείται μόνο σε επίπεδο πίνακα ή προβολής. δεν μπορεί να εκδοθεί σε επίπεδο στήλης.

    Το δικαίωμα ΕΝΗΜΕΡΩΣΗΣ εκδίδεται είτε σε επίπεδο πίνακα, που σας επιτρέπει να αλλάξετε όλα τα δεδομένα σε αυτόν, είτε σε επίπεδο μεμονωμένης στήλης, που σας επιτρέπει να αλλάξετε τα δεδομένα μόνο εντός των ορίων της.

    Το δικαίωμα ΔΙΑΓΡΑΦΗ σάς επιτρέπει να διαγράφετε σειρές από έναν πίνακα ή μια προβολή, εκχωρείται μόνο σε επίπεδο πίνακα ή προβολής, αλλά δεν μπορεί να εκχωρηθεί σε επίπεδο στήλης.

    Το δικαίωμα SELECT επιτρέπει την επιλογή δεδομένων και μπορεί να εκδοθεί τόσο σε επίπεδο πίνακα όσο και σε επίπεδο μεμονωμένης στήλης.

    Το δικαίωμα REFERENCES παρέχει τη δυνατότητα αναφοράς σε ένα συγκεκριμένο αντικείμενο. Όταν εφαρμόζεται σε πίνακες, επιτρέπει τη δημιουργία ξένων κλειδιών που αναφέρονται στο πρωτεύον κλειδί ή στη μοναδική στήλη αυτού του πίνακα.

    Χορήγηση Δικαιωμάτων

    Για διαχείριση άδεια χρήστη για πρόσβαση σε αντικείμεναΗ εντολή βάσης δεδομένων χρησιμοποιείται:

    <предоставление_привилегий>::= ΧΟΡΗΓΗΣΗ ( ΟΛΑ [ ΠΡΟΝΟΜΙΑ] |<привилегия>[,...n]) ( [(όνομα_στήλης [,...n])] ON (όνομα_πίνακα | όνομα_προβολής) | ΕΝΕΡΓΟ (όνομα_πίνακα | όνομα_προβολής ) ([όνομα_στήλης [,...n])] | ΕΝΕΡΓΟ (όνομα_διαδικασίας_αποθήκευσης |. external_procedure_name)) TO (όνομα_χρήστη | όνομα_ομάδας | όνομα_ρόλου) [,...n]

    Παράμετρος<привилегия>

    <привилегия>::= (ΕΠΙΛΟΓΗ | ΔΙΑΓΡΑΦΗ | ΕΙΣΑΓΩΓΗ | ΕΝΗΜΕΡΩΣΗ | ΕΚΤΕΛΕΣΗ | ΑΝΑΦΟΡΕΣ )

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

    Προαιρετική παράμετρος AS (όνομα_ομάδας | όνομα_ρόλου)σας επιτρέπει να καθορίσετε τη συμμετοχή του χρήστη σε έναν ρόλο που παρέχει παραχώρηση δικαιωμάτωνάλλους χρήστες.

    Το μόνο δικαίωμα πρόσβασης που μπορεί να εκχωρηθεί σε μια αποθηκευμένη διαδικασία είναι το δικαίωμα εκτέλεσής της (EXECUTE). Φυσικά, εκτός από αυτό, ο κάτοχος της αποθηκευμένης διαδικασίας μπορεί να δει και να αλλάξει τον κωδικό της.

    Μπορείτε να εκχωρήσετε σε μια συνάρτηση το δικαίωμα να την εκτελέσει και επίσης να εκχωρήσετε το δικαίωμα ΑΝΑΦΟΡΕΣ, που θα καταστήσει δυνατή τη συσχέτιση της συνάρτησης με τα αντικείμενα στα οποία αναφέρεται. Αυτό το δέσιμο θα αποτρέψει αλλαγές στη δομή των αντικειμένων που θα μπορούσαν να οδηγήσουν σε διακοπή της λειτουργίας.

    Δικαιώματα εκτέλεσης εντολών SQL

    Αυτή η κατηγορία δικαιωμάτων ελέγχει τη δυνατότητα δημιουργίας αντικειμένων στη βάση δεδομένων, της ίδιας της βάσης δεδομένων και εκτέλεσης διαδικασιών δημιουργίας αντιγράφων ασφαλείας. Μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για την παροχή δικαιώματα εκτέλεσης εντολών SQL:

    <предоставление_права_выполнения>::= ΕΠΙΧΟΡΗΓΗΣΗ (ΟΛΟΙ |<команда>

    Παράμετρος<команда>είναι η ακόλουθη δομή:

    <команда>::= (ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ | ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ | ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΒΟΛΗΣ | ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΕΠΙΛΟΓΗΣ | ΔΗΜΙΟΥΡΓΙΑ ΚΑΝΟΝΙΣΜΟΥ | ΔΗΜΙΟΥΡΓΙΑ ΔΙΑΔΙΚΑΣΙΑΣ | ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ ΔΕΔΟΜΕΝΩΝ ΔΗΜΙΟΥΡΓΙΑΣ ΑΝΤΙΓΡΑΦΩΝ | ΑΡΧΕΙΟ ΑΝΤΙΓΡΑΦΟΥ ΑΝΤΙΓΡΑΦΩΝ | ΟΛΑ )

    Έτσι, μπορείτε να εκχωρήσετε το δικαίωμα δημιουργίας βάσης δεδομένων, πίνακα, προβολής, προεπιλογής, κανόνα, αποθηκευμένης διαδικασίας, δημιουργίας αντιγράφων ασφαλείας βάσης δεδομένων και αρχείου καταγραφής συναλλαγών ή να εκχωρήσετε όλα τα παραπάνω δικαιώματα ταυτόχρονα.

    Σιωπηρά δικαιώματα

    Ορισμένες ενέργειες δεν απαιτούν ρητή άδεια και είναι διαθέσιμες από προεπιλογή. Αυτές οι ενέργειες μπορούν να εκτελεστούν μόνο από μέλη ρόλων διακομιστή ή κατόχους αντικειμένων στη βάση δεδομένων.

    Τα σιωπηρά δικαιώματα δεν παραχωρούνται απευθείας στον χρήστη, παραχωρούνται μόνο υπό ορισμένες συνθήκες. Για παράδειγμα, ένας χρήστης μπορεί να γίνει κάτοχος ενός αντικειμένου βάσης δεδομένων μόνο εάν το δημιουργήσει ο ίδιος ή εάν κάποιος άλλος του μεταβιβάσει την κυριότητα του αντικειμένου του. Έτσι, ο κάτοχος του αντικειμένου θα λάβει αυτόματα δικαιώματα για την εκτέλεση οποιωνδήποτε ενεργειών με το αντικείμενο, συμπεριλαμβανομένων παραχώρηση πρόσβασηςστο αντικείμενο σε άλλους χρήστες. Αυτά τα δικαιώματα δεν αναφέρονται πουθενά μόνο το γεγονός της κατοχής του αντικειμένου σάς επιτρέπει να εκτελέσετε οποιεσδήποτε ενέργειες.

    Άρνηση πρόσβασης

    Η ασφάλεια του SQL Server είναι ιεραρχική, επομένως οι ρόλοι της βάσης δεδομένων περιλαμβάνουν λογαριασμούς και ομάδες Windows NT, χρήστες SQL Server και ρόλους. Ο χρήστης, με τη σειρά του, μπορεί να συμμετέχει σε πολλούς ρόλους και ταυτόχρονα να έχει διαφορετικά δικαιώματα πρόσβασης για διαφορετικούς ρόλους. Όταν ένας από τους ρόλους του χρήστη έχει άδεια πρόσβασης σε δεδομένα, ο χρήστης έχει αυτόματα τα ίδια δικαιώματα. Ωστόσο, εάν προκύψει ανάγκη, ο χρήστης μπορεί να αρνηθεί την πρόσβαση σε δεδομένα ή εντολές, τότε ανακαλούνται όλα τα δικαιώματα πρόσβασης που του έχουν χορηγηθεί σε οποιοδήποτε επίπεδο της ιεραρχίας. Αυτό διασφαλίζει ότι η πρόσβαση παραμένει απαγορευμένη ανεξάρτητα από τις άδειες που έχουν χορηγηθεί σε υψηλότερο επίπεδο.

    Για άρνηση πρόσβασης

    <запрещение_доступа>::= ΑΡΝΗΣΗ (ΟΛΑ | |<привилегия>[,...n]) ( [(όνομα_στήλης [,...n])] ON (όνομα_πίνακα | όνομα_προβολής) | ΕΝΕΡΓΟ (όνομα_πίνακα | όνομα_προβολής ) [όνομα_στήλης [,...n])] | ΕΝΕΡΓΟΠΟΙΗΣΗ (όνομα_διαδικασίας_αποθήκευσης | όνομα_εξωτερικής_διαδικασίας)) ΠΡΟΣ (όνομα_χρήστη | όνομα_ομάδας | όνομα_ρόλου) [,...n]

    Η παράμετρος CASCADE σάς επιτρέπει να ανακαλείτε δικαιώματα όχι μόνο από έναν συγκεκριμένο χρήστη, αλλά και από όλους εκείνους στους οποίους έχει παραχωρήσει παρόμοια δικαιώματα.

    Για να απαγορεύσετε την εκτέλεση εντολών SQL, χρησιμοποιήστε τον ακόλουθο τελεστή:

    <запрещение_выполнения>::= ΑΡΝΗΣΗ (ΟΛΑ |<команда>[,...n]) ΠΡΟΣ (όνομα χρήστη | όνομα ομάδας | όνομα ρόλου) [,...n]

    Έμμεση άρνηση πρόσβασης

    Σιωπηρή Απόρριψησαν άρνηση πρόσβασηςμε τη διαφορά ότι λειτουργεί μόνο στο επίπεδο στο οποίο ορίζεται. Εάν ο χρήστης βρίσκεται σε ένα συγκεκριμένο επίπεδο η πρόσβαση απαγορεύεται σιωπηρά, μπορεί ακόμα να το αποκτήσει σε άλλο επίπεδο της ιεραρχίας μέσω της ιδιότητας μέλους σε έναν ρόλο που έχει δικαιώματα προβολής. Από προεπιλογή, η πρόσβαση στα δεδομένα χρήστη απαγορεύεται σιωπηρά. Για σιωπηρή άρνηση πρόσβασηςΗ εντολή που χρησιμοποιείται για τα αντικείμενα της βάσης δεδομένων είναι:

    <неявное_отклонение_доступа>::= ΑΝΑΚΛΗΣΗ (ΟΛΑ [ ΤΑ ΠΡΟΝΟΜΙΑ]| |<привилегия>[,...n]) ( [(όνομα_στήλης [,...n])] ON (όνομα_πίνακα | όνομα_προβολής) | ΕΝΕΡΓΟ (όνομα_πίνακα | όνομα_προβολής ) [όνομα_στήλης [,...n])] | ΕΝΕΡΓΟΠΟΙΗΣΗ (όνομα_διαδικασίας_αποθήκευσης | όνομα_εξωτερικού_διαδικασίας)) ΠΡΟΣ | FROM (όνομα χρήστη | όνομα ομάδας | όνομα ρόλου)[,...n]

    Για σιωπηρή απόκλισηδικαιώματα για την εκτέλεση εντολώνΗ εντολή SQL που χρησιμοποιείται είναι:

    <неявное_отклонение_разрешения>::= ΑΝΑΚΛΗΣΗ (ΟΛΕΣ |<команда>[,...n]) FROM (όνομα χρήστη | όνομα ομάδας | όνομα ρόλου)[,...n]

    Η σημασία των παραμέτρων είναι παρόμοια με τις παραμέτρους των εντολών GRANT και DENY. Η παράμετρος GRANT OPTION FOR χρησιμοποιείται όταν είναι απαραίτητο να ανακληθεί το δικαίωμα, παρέχεταιμε την παράμετρο WITH GRANT OPTION της εντολής GRANT. Ο χρήστης διατηρεί το δικαίωμα πρόσβασης στο αντικείμενο, αλλά χάνει τη δυνατότητα να παραχωρήσει αυτήν την άδεια σε άλλους χρήστες.

    Διένεξες πρόσβασης

    Άδειες, παρέχεταιρόλοι ή ομάδες κληρονομούνται από τα μέλη τους. Αν και ο χρήστης μπορεί παραχωρήθηκε πρόσβασηΜέσω της συμμετοχής σε έναν ρόλο, ένας ρόλος σε άλλο επίπεδο μπορεί να απαγορεύεται να ενεργεί σε ένα αντικείμενο. Σε αυτή την περίπτωση προκύπτει σύγκρουση πρόσβασης.

    Όταν επιλυθεί διενέξεις πρόσβασηςΟ SQL Server καθοδηγείται από την ακόλουθη αρχή: άδεια για παραχώρηση πρόσβασηςέχει τη χαμηλότερη προτεραιότητα, και άρνηση πρόσβασης- το υψηλότερο. Αυτό σημαίνει ότι τα δεδομένα είναι προσβάσιμα μόνο ρητά. χορήγησηστην απουσία άρνηση πρόσβασηςσε οποιοδήποτε άλλο επίπεδο της ιεραρχίας ασφαλείας. Εάν η πρόσβαση δεν παραχωρηθεί ρητά, ο χρήστης δεν θα μπορεί να εργαστεί με τα δεδομένα.

    Παράδειγμα 17.1.Δημιουργήστε μια νέα βάση δεδομένων, έναν νέο χρήστη για αυτήν τη βάση δεδομένων, δίνοντάς του όλα τα δικαιώματα.

    Δημιουργία από τον διαχειριστή μιας νέας -- βάσης δεδομένων CREATE DATABASE basa_user -- δημιουργία νέου χρήστη με -- όνομα UserA και κωδικό πρόσβασης '123' -- η προεπιλεγμένη βάση δεδομένων για -- userA UserA θα είναι μια βάση δεδομένων -- με το όνομα basa_user. sp_addlogin "UserA","123","basa_user" -- μεταβείτε στη βάση δεδομένων basa_user USE basa_user -- προσθήκη στην τρέχουσα βάση δεδομένων -- (basa_user) έναν χρήστη με όνομα -- userA sp_adduser "UserA" -- παρέχετε στο χρήστη userA -- στη βάση δεδομένων basa_user όλα τα δικαιώματα ΠΑΡΑΧΩΡΗΣΗ ΟΛΩΝ ΣΤΟΝ Χρήστη Α Παράδειγμα 17.1.

    Δημιουργία νέας βάσης δεδομένων, νέου χρήστη για αυτήν τη βάση δεδομένων, παραχωρώντας του όλα τα δικαιώματα.Παράδειγμα 17.2.

    Χρήση ρόλων.

    Ας δημιουργήσουμε τον ρόλο stud και ας συμπεριλάβουμε δύο χρήστες user1 και user2 σε αυτόν τον ρόλο:

    sp_addrole "stud" sp_addrolemember "stud","user1" sp_addrolemember "stud","user2"

    Ας εκχωρήσουμε δικαιώματα στον ρόλο του καρφιού και απευθείας στον χρήστη χρήστη2:

    GRANT SELECT, INSERT ON Product TO stud GRANT SELECT, INSERT ON Product TO user2

    Μετά την εκτέλεση αυτών των εντολών, οι χρήστες user1 και user2 μπορούν να εκτελέσουν τις εντολές για να επιλέξουν και να προσθέσουν μια εγγραφή στον πίνακα Product.

    Ας αναστείλουμε το δικαίωμα εισαγωγής στον πίνακα Προϊόντος για τον ρόλο του καρφιού:

    ΑΝΑΚΛΗΣΗ ΕΝΘΕΤΟΥ ΣΤΟ Προϊόν ΣΤΟ καρφί

    Μετά την εκτέλεση της προηγούμενης εντολής, ο χρήστης1 χάνει το δικαίωμα εισαγωγής μιας εγγραφής και ο χρήστης2 διατηρεί αυτό το δικαίωμα, αφού το δικαίωμα εισαγωγής του παραχωρείται ρητά.

    Ας εκτελέσουμε την εντολή

    ΑΠΟΡΡΙΨΗ ΕΙΣΑΓΩΓΗΣ ΣΤΟ Προϊόν TO stud.



Μετά την εκτέλεση αυτής της εντολής, και οι δύο χρήστες στερούνται του δικαιώματος εισαγωγής στον πίνακα Προϊόν.

Τα λειτουργικά συστήματα Windows που ξεκινούν με Vista χρησιμοποιούν ενσωματωμένο...