SQL Server: Sicherheit mit Schema

Die älteren SQL Server-Versionen haben einen Nachteil: Sie benötigen hier einen Benutzer, dem eine neu erstellte Datenbank gehört. Genauso gibt es auch für alle weiteren Objekte wie Tabellen, Sichten, gespeicherte Prozeduren und so weiter einen Besitzer – nämlich den Benutzer, der das Objekt erstellt hat. Meist legt man diese Elemente im Kontext eines Windows-Benutzers an, was zum Beispiel dazu führt, dass Sie diesen Benutzer nicht einfach löschen können, ohne zuvor alle Elemente dieses Benutzers an einen anderen Benutzer übertragen zu haben. Aus diesem Grund hat Microsoft mit SQL Server 2005 den Typ namens „Schema“ eingeführt. Diesem werden nun nicht nur neu erstellte Objekte zugeordnet, sondern Sie können auch mehrere Schemas pro Datenbank verwenden, um beispielsweise Elemente nach verschiedenen Gruppen zu sortieren.

Schemas sind also grundsätzlich eine Art Namensraum für Datenbankobjekte wie Tabellen, Sichten, gespeicherte Prozeduren et cetera. Der Zweck ist dabei, wie oben bereits erwähnt, die direkte Zuordnung von Windows-Benutzern oder -Benutzergruppen als Besitzer der Datenbankobjekte zu unterbrechen, da sonst, wenn der Benutzer oder die Benutzergruppe entfernt werden soll, die Besitzer aller betroffenen Datenbankobjekte geändert werden müssten.

Wenn Sie hingegen mit Schemas arbeiten, erhalten Sie eine Zwischenschicht. Es gibt zwar nun immer noch einen Besitzer des Schemas, das wiederum die Datenbankobjekte enthält, aber Sie brauchen nur noch den Besitzer des Schemas zu wechseln, wenn Sie den alten Besitzer in Form eines Benutzers oder einer Benutzergruppe nicht mehr verwenden können.

Fachliche Gruppierung

Mit einem Schema können Sie die Objekte einer Datenbank nach dem fachlichen Zusammenhang gruppieren oder auch nach den gewünschten Berechtigungen. Damit können wir, um beim Beispiel der Suedsturm_SQL-Datenbank zu bleiben, etwa für die beiden Benutzergruppen Management und Bestellannahme zwei geeignete Schemas erstellen und diesen die relevanten Datenbankobjekte zuordnen.

Schemas für die Sicherheit

Außerdem können Sie natürlich auch Schemas einrichten, um über diese dann die Berechtigungen an den verschiedenen Elementen der Datenbank zu definieren. Die fachliche Gruppierung und die Gruppierung der Elemente nach Sicherheits- beziehungsweise Berechtigungsaspekten schließt sich ja nicht aus. Wenn Sie etwa, wie soeben vorgeschlagen, ein Schema namens Management und eines namens Bestellannahme erstellen, könnten Sie alle Elemente, die nur von den Mitarbeitern der Bestellannahme benötigt werden, im Kontext eines Schemas namens Bestellannahme speichern. Die Elemente, auf welche die Mitarbeiter der Bestellannahme keinen Zugriff haben sollen, aber das Management, erstellen Sie im Kontext eines Schemas namens Management. Wenn ein Mitarbeiter des Managements nun Zugriff nicht nur auf die Elemente des Schemas Management haben soll, sondern auch auf die Elemente des Schemas Bestellannahme, weisen Sie einen Windows-Benutzer einfach den Windows-Benutzergruppen Management und Bestellannahme zu.

Anlegen eines Schemas

Wir legen nun in unserer Beispieldatenbank Suedsturm_SQL zunächst ein neues Schema namens Bestellannahme an. Dazu navigieren Sie im Objekt-Explorer des SQL Server Management Studios zunächst zu dieser Datenbank und dann zum Eintrag Sicherheit|Schemas. Wenn Sie diesen Eintrag öffnen, erkennen Sie, dass es dort schon eine Reihe vorgefertigter Schemas gibt, zum Beispiel db_accessadmin, db_datareader, db_datawriter und so weiter (siehe Bild 1). Einige dieser Schemas können Sie auch entfernen, wenn Sie verhindern wollen, dass diese versehentlich für Benutzer festgelegt werden.

Schemas im Objekt-Explorer

Bild 1: Schemas im Objekt-Explorer

Klicken Sie nun mit der rechten Maustaste auf den Eintrag Schemas, erscheint ein Kontextmenü, das unter anderem den Befehl Neues Schema… anbietet. Damit öffnen Sie nun den Dialog zum Anlegen eines neuen Schemas namens Schema – Neu. Hier geben Sie im Bereich Allgemein nun zunächst den Namen des Schemas ein, also Bestellannahme, und als Schemabesitzer dbo (siehe Bild 2). Das bedeutet, dass der Besitzer des Schemas identisch ist mit dem Besitzer der Datenbank.

Anlegen eines neuen Schemas

Bild 2: Anlegen eines neuen Schemas

Danach wechseln Sie zum Bereich Berechtigungen. Hier finden Sie die Schaltfläche Suchen…, mit der Sie einen weiteren Dialog namens Benutzer oder Rollen auswählen öffnen. Dieser bietet wiederum eine Schaltfläche namens Durchsuchen… an, mit der Sie den Dialog Nach Objekten suchen öffnen können. Hier werden alle Anmeldungen aufgeführt, die für den aktuellen SQL Server angelegt wurden (siehe auch Beitrag Berechtigungen für Access-Objekte per SQL Server III: Anwenden, www.access-im-unternehmen.de/1185).

Darunter finden Sie auch die Anmeldung []\\Bestellannahme, die wir durch das Setzen eines Hakens zum Hinzufügen markieren (siehe Bild 3).

Auswählen der Benutzer des Schemas

Bild 3: Auswählen der Benutzer des Schemas

Danach finden Sie im Dialog Schema – Neu den gewählten Datenbankbenutzer, also die Gruppe Bestellannahme, in der Liste der Benutzer oder Rollen.

Im Bereich darunter werden die expliziten Berechtigungen für diese Anmeldung angezeigt. Aktuell sind noch keine Berechtigungen markiert, aber das holen wir nun nach – dazu setzen Sie einen Haken in der Spalte Erteilen für die folgenden Berechtigungen:

  • Aktualisieren (UPDATE),
  • Ausführen (EXECUTE)
  • Auswählen (SELECT),
  • Einfügen (INSERT) und
  • Löschen (DELETE).

Vielleicht fällt Ihnen in der Liste noch der Eintrag ändern auf, dies bezieht sich aber nicht auf das ändern von Daten – hierzu verwenden wir die Berechtigung Aktualisieren (siehe Bild 4).

Festlegen der Berechtigungen für das Schema Bestellannahme

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar