Data Control Language (DCL) für Datenbankberechtigungen
Die Datenkontrollsprache ist eine Teilmenge der strukturierten Abfragesprache. Datenbankadministratoren verwenden DCL, um den Sicherheitszugriff auf relationale Datenbanken zu konfigurieren. Es ergänzt die Datendefinitionssprache, das Datenbankobjekte hinzufügt und löscht, und die Datenmanipulierungssprache, die den Inhalt einer Datenbank abruft, einfügt und ändert.
DCL ist die einfachste SQL-Untermenge, da sie nur aus drei Befehlen besteht: GRANT, REVOKE und DENY. In Kombination bieten diese drei Befehle Administratoren die Flexibilität, Datenbankberechtigungen granular festzulegen und zu entfernen.
Hinzufügen von Berechtigungen mit dem GRANT-Befehl
Der GRANT-Befehl fügt einem Datenbankbenutzer neue Berechtigungen hinzu. Es hat eine sehr einfache Syntax, die wie folgt definiert ist:
GEWÄHRLEISTUNG [Privileg]
EIN [Objekt]
AN [Benutzer]
[MIT GRANT-OPTION]
Hier ist der Überblick über jeden der Parameter, die Sie mit diesem Befehl angeben können:
-
Privileg — kann entweder das Schlüsselwort ALL (um eine Vielzahl von Berechtigungen zu erteilen) oder eine bestimmte Datenbankberechtigung oder ein Satz von Berechtigungen sein. Beispiele sind CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE und CREATE VIEW.
- Objekt — kann ein beliebiges Datenbankobjekt sein. Die gültigen Berechtigungsoptionen variieren je nach Typ des Datenbankobjekts, das Sie in diese Klausel aufnehmen. Normalerweise ist das Objekt entweder eine Datenbank, Funktion, gespeicherte Prozedur, Tabelle oder Ansicht.
- Benutzer — kann ein beliebiger Datenbankbenutzer sein. Sie können den Benutzer in dieser Klausel auch durch eine Rolle ersetzen, wenn Sie die rollenbasierte Datenbanksicherheit nutzen möchten.
- Wenn Sie das optionale einschließen MIT FÖRDEROPTION -Klausel am Ende des GRANT-Befehls erteilen Sie dem angegebenen Benutzer nicht nur die Berechtigungen in der SQL-Anweisung definiert, sondern erteilen Sie dem Benutzer auch die Berechtigung, diese weiter zu erteilen Berechtigungen für Sonstiges Datenbankbenutzer. Verwenden Sie diese Klausel daher mit Vorsicht.
Angenommen, Sie möchten dem Benutzer Joe die Fähigkeit, Informationen aus dem Angestellter Tisch in a Datenbank namens HR. Verwenden Sie den folgenden SQL-Befehl:
GRANT SELECT
ON HR.Mitarbeiter
ZU Joe.
Joe kann Informationen aus der Mitarbeitertabelle abrufen. Er kann jedoch anderen Benutzern nicht die Berechtigung zum Abrufen von Informationen aus dieser Tabelle erteilen, da das DCL-Skript die WITH GRANT OPTION-Klausel nicht enthält.
Datenbankzugriff widerrufen
Der Befehl REVOKE entfernt den Datenbankzugriff von einem Benutzer, dem zuvor ein solcher Zugriff gewährt wurde. Die Syntax für diesen Befehl ist wie folgt definiert:
WIDERRUFEN [OPTION GEWÄHREN FÜR] [Berechtigung]
EIN [Objekt]
VON [Benutzer]
[KASKADE]
Hier ist der Überblick über die Parameter für den REVOKE-Befehl:
- Erlaubnis — Gibt die Datenbankberechtigungen an, die vom identifizierten Benutzer entfernt werden sollen. Der Befehl widerruft sowohl die GRANT- als auch die DENY-Behauptung, die zuvor für die identifizierte Berechtigung erstellt wurden.
- Objekt — kann ein beliebiges Datenbankobjekt sein. Die gültigen Berechtigungsoptionen variieren je nach Typ des Datenbankobjekts, das Sie in diese Klausel aufnehmen. Normalerweise handelt es sich bei dem Objekt entweder um eine Datenbank, eine Funktion, eine gespeicherte Prozedur, eine Tabelle oder eine Ansicht.
- Benutzer — kann ein beliebiger Datenbankbenutzer sein. Sie können den Benutzer in dieser Klausel auch durch eine Rolle ersetzen, wenn Sie die rollenbasierte Datenbanksicherheit nutzen möchten.
- Die FÖRDEROPTION FÜR -Klausel entfernt die Möglichkeit des angegebenen Benutzers, anderen Benutzern die angegebene Berechtigung zu erteilen. Wenn Sie die FÖRDEROPTION FÜR -Klausel in einer REVOKE-Anweisung wird die primäre Berechtigung nicht widerrufen. Diese Klausel entzieht nur die Gewährungsfähigkeit.
- Die KASKADE -Option entzieht auch allen Benutzern, denen der angegebene Benutzer die Berechtigung erteilt hat, die angegebene Berechtigung.
Der folgende Befehl widerruft die Berechtigung, die Joe im vorherigen Beispiel erteilt wurde:
AUSWAHL AUFHEBEN
ON HR.Mitarbeiter
VON Joe.
Datenbankzugriff explizit verweigern
Der Befehl DENY verhindert explizit, dass ein Benutzer eine bestimmte Berechtigung erhält. Diese Funktion ist hilfreich, wenn ein Benutzer Mitglied einer Rolle oder Gruppe ist, der eine Berechtigung erteilt wurde, und Sie möchten, dass dieser einzelne Benutzer die Berechtigung erbt, indem Sie eine Ausnahme erstellen. Die Syntax für diesen Befehl lautet wie folgt:
VERWEIGERN [Erlaubnis]
EIN [Objekt]
AN [Benutzer]
Die Parameter für den DENY-Befehl sind identisch mit denen für den GRANT-Befehl. Wenn Sie beispielsweise sicherstellen möchten, dass Matthew niemals die Möglichkeit erhält, Informationen aus der Mitarbeitertabelle zu löschen, geben Sie den folgenden Befehl ein:
LÖSCHEN VERWEIGERN
ON HR.Mitarbeiter
ZU Matthäus.