Zugriffskontrollen für Benutzer und Rollen in SQL

Alles relational Datenbankmanagementsystem bieten eine Art intrinsischer Sicherheitsmechanismen, die die Bedrohungen durch Datenverlust, Datenbeschädigung oder Datendiebstahl minimieren sollen. Sie reichen vom einfachen Passwortschutz von Microsoft Access an die komplexe Benutzer-/Rollenstruktur, die von fortschrittlichen relationalen Datenbanken unterstützt wird, wie Orakel undMicrosoft SQL Server. Einige Sicherheitsmechanismen sind allen Datenbanken gemeinsam, die dieStrukturierte Abfragesprache.

Sicherheit auf Benutzerebene

Serverbasierte Datenbanken unterstützen a Benutzer Konzept ähnlich dem in Computerbetriebssystemen verwendeten. Wenn Sie mit der Benutzer-/Gruppenhierarchie in vertraut sind Microsoft Windows NT und Windows 2000 werden Sie feststellen, dass die von SQL Server und Oracle unterstützten Benutzer-/Rollengruppierungen ähnlich sind.

Erstellen Sie für jede Person mit Zugriff auf Ihre Datenbank individuelle Datenbankbenutzerkonten.

Vermeiden Sie die Bereitstellung allgemeiner Konten, auf die mehrere unterschiedliche Personen zugreifen können. Erstens eliminiert diese Praxis die individuelle Verantwortlichkeit – wenn ein Benutzer eine Änderung an Ihrer Datenbank vornimmt (sagen wir durch sich selbst eine Gehaltserhöhung in Höhe von 5.000 US-Dollar geben), können Sie dies mithilfe von Audits nicht auf eine bestimmte Person zurückführen Protokolle. Zweitens, wenn ein bestimmter Benutzer Ihre Organisation verlässt und Sie seinen Zugriff aus der Datenbank entfernen möchten, müssen Sie das Kennwort ändern, auf das sich alle Benutzer verlassen.

watch instagram stories

Ein Webentwickler
OstapenkoOlena/Getty Images

Die Methoden zum Erstellen von Benutzerkonten variieren von Plattform zu Plattform und Sie müssen Ihre DBMS-spezifische Dokumentation für das genaue Verfahren konsultieren. Benutzer von Microsoft SQL Server sollten die Verwendung der sp_adduser gespeicherte Prozedur. Oracle-Datenbankadministratoren finden die BENUTZER ERSTELLEN Befehl nützlich. Möglicherweise möchten Sie auch alternative Authentifizierungsschemata untersuchen. Microsoft SQL Server unterstützt beispielsweise die Verwendung von Windows NT Integrated Security. Bei diesem Schema werden Benutzer gegenüber der Datenbank durch ihre Windows NT-Benutzerkonten identifiziert und müssen keine zusätzliche Benutzer-ID und kein zusätzliches Kennwort eingeben, um auf die Datenbank zuzugreifen. Dieser Ansatz ist bei Datenbankadministratoren beliebt, da er die Belastung des Kontos verlagert Verwaltung an die Mitarbeiter der Netzwerkadministration und ermöglicht die einfache Anmeldung bei den Netzwerkadministratoren Endbenutzer.

Sicherheit auf Rollenebene

Wenn Sie sich in einer Umgebung mit einer kleinen Anzahl von Benutzern befinden, werden Sie wahrscheinlich feststellen, dass das Erstellen von Benutzerkonten und das direkte Zuweisen von Berechtigungen für Ihre Anforderungen ausreicht. Wenn Sie jedoch eine große Anzahl von Benutzern haben, werden Sie von der Verwaltung von Konten und den richtigen Berechtigungen überfordert. Um diese Belastung zu verringern, unterstützen relationale Datenbanken Rollen. Datenbankrollen funktionieren ähnlich wie Windows NT-Gruppen. Benutzerkonten werden Rolle(n) zugewiesen und Berechtigungen werden dann der Rolle als Ganzes und nicht den einzelnen Benutzerkonten zugewiesen. Sie können beispielsweise eine DBA-Rolle erstellen und dieser Rolle dann die Benutzerkonten Ihrer Verwaltungsmitarbeiter hinzufügen. Danach können Sie allen derzeitigen (und zukünftigen) Administratoren eine bestimmte Berechtigung zuweisen, indem Sie einfach der Rolle die Berechtigung zuweisen. Auch hier unterscheiden sich die Verfahren zum Erstellen von Rollen von Plattform zu Plattform. MS SQL Server-Administratoren sollten die sp_addrole gespeicherte Prozedur, während Oracle DBAs die ROLLE ERSTELLEN Syntax.

Berechtigungen erteilen

Nachdem wir unserer Datenbank nun Benutzer hinzugefügt haben, ist es an der Zeit, die Sicherheit durch Hinzufügen von Berechtigungen zu erhöhen. Unser erster Schritt besteht darin, unseren Benutzern entsprechende Datenbankberechtigungen zu erteilen. Dies erreichen wir durch die Verwendung der SQL-Anweisung GRANT.

Hier ist die Syntax der Anweisung:

GEWÄHREN. 
[AUF. 
ZU. 
[MIT GRANT-OPTION]

Sehen wir uns nun diese Anweisung Zeile für Zeile an. Die erste Zeile, GEWÄHREN , ermöglicht es uns, die spezifischen Tabellenberechtigungen anzugeben, die wir erteilen. Dies können entweder Berechtigungen auf Tabellenebene (wie SELECT, INSERT, UPDATE und DELETE) oder Datenbankberechtigungen (wie CREATE TABLE, ALTER DATABASE und GRANT) sein. In einer einzelnen GRANT-Anweisung können mehrere Berechtigungen erteilt werden, Berechtigungen auf Tabellenebene und Berechtigungen auf Datenbankebene dürfen jedoch nicht in einer einzigen Anweisung kombiniert werden.

Die zweite Zeile, AUF

Schließlich die vierte Zeile, MIT FÖRDEROPTION, es ist optional. Wird diese Zeile in die Anweisung aufgenommen, darf der betroffene Benutzer diese Rechte auch anderen Benutzern erteilen. Beachten Sie, dass WITH GRANT OPTION nicht angegeben werden kann, wenn die Berechtigungen einer Rolle zugewiesen sind.

Beispiel-Datenbankzuschüsse

Schauen wir uns einige Beispiele an. In unserem ersten Szenario haben wir vor kurzem eine Gruppe von 42 Dateneingabe-Mitarbeitern eingestellt, die Kundendatensätze hinzufügen und pflegen. Sie müssen auf Informationen in der Customers-Tabelle zugreifen, diese Informationen ändern und der Tabelle neue Datensätze hinzufügen. Sie sollten nicht in der Lage sein, einen Datensatz vollständig aus der Datenbank zu löschen.

Zuerst sollten wir für jeden Operator Benutzerkonten erstellen und sie dann alle zu einer neuen Rolle hinzufügen. Dateneingabe. Als Nächstes sollten wir die folgende SQL-Anweisung verwenden, um ihnen die entsprechenden Berechtigungen zu erteilen:

GRANT AUSWÄHLEN, EINFÜGEN, AKTUALISIEREN. 
ON-Kunden. 
TO Dateneingabe. 

Lassen Sie uns nun einen Fall untersuchen, in dem wir Berechtigungen auf Datenbankebene zuweisen. Wir möchten Mitgliedern der DBA-Rolle erlauben, unserer Datenbank neue Tabellen hinzuzufügen. Darüber hinaus möchten wir, dass sie anderen Benutzern die Erlaubnis erteilen können, dasselbe zu tun. Hier ist die SQL-Anweisung:

GRANT CREATE TABELLE. 
ZUM DBA. 
MIT GRANT-OPTION. 

Beachten Sie, dass wir die Zeile WITH GRANT OPTION eingefügt haben, um sicherzustellen, dass unsere DBAs diese Berechtigung anderen Benutzern zuweisen können.

Berechtigungen entfernen

SQL enthält den Befehl REVOKE, um zuvor erteilte Berechtigungen zu entfernen. Hier ist die Syntax:

WIDERRUFEN [GEWÄHRUNGSOPTION FÜR]
AUF. 
VON. 

Sie werden feststellen, dass die Syntax dieses Befehls der des GRANT-Befehls ähnelt. Der einzige Unterschied besteht darin, dass WITH GRANT OPTION in der REVOKE-Befehlszeile und nicht am Ende des Befehls angegeben wird. Nehmen wir als Beispiel an, wir möchten Marys zuvor erteilte Erlaubnis zum Entfernen von Datensätzen aus der Kundendatenbank widerrufen. Wir würden den folgenden Befehl verwenden:

LÖSCHEN AUFHEBEN. 
ON-Kunden. 
VON Maria. 

Es gibt einen zusätzlichen Mechanismus, der von Microsoft SQL Server unterstützt wird, der erwähnenswert ist – der DENY-Befehl. Dieser Befehl kann verwendet werden, um einem Benutzer explizit eine Berechtigung zu verweigern, die er ansonsten durch eine aktuelle oder zukünftige Rollenmitgliedschaft hätte. Hier ist die Syntax:

VERWEIGERN. 
AUF. 
ZU. 
instagram story viewer