Ansichten sind berechnete Tabellen, die eine Auswahl von Zeilen und Spalten aus Basistabellen enthalten. Ansichten sind nützlich für die Sicherheit, wenn ein Benutzer Zugriff auf nur einen Teil einer Tabelle erhalten soll. Der Teil kann in Form von Zeilen oder Spalten angegeben werden. Es kann z.B. wünschenswert sein, einer Benutzergruppe den Einblick in die Salary-Spalte einer Mitarbeitertabelle zu verwehren oder einen Benutzer daran zu hindern, in einer Tabelle andere als die von ihm erstellten Zeilen einzusehen.
Der Sales Manager muss in der Datenbank Zugriff auf die Daten der Mitarbeiter seiner Abteilung haben. Jedoch gibt es keinen Grund, warum er Zugriff auf die Daten von Mitarbeitern in anderen Abteilungen haben sollte.
Mit diesem Beispiel wird beschrieben, wie eine Benutzer-ID für den Sales Manager erstellt wird, wie Ansichten eingerichtet werden, die die von ihm benötigten Daten enthalten, und wie der Benutzer-ID des Verkaufsleiters die geeigneten Berechtigungen erteilt werden.
Erstellen Sie die neue Benutzer-ID mit der Anweisung GRANT. Während Sie als Benutzer mit DBA-Berechtigung angemeldet sind, führen Sie folgende Anweisungen aus:
CONNECT DBA IDENTIFIED by sql; CREATE USER SalesManager IDENTIFIED BY sales; |
Richten Sie folgendermaßen eine Ansicht ein, mit der nur Mitarbeiter des Verkaufs angezeigt werden:
CREATE VIEW EmployeeSales AS SELECT EmployeeID, GivenName, Surname FROM Employees WHERE DepartmentID = 200; |
Der Bezug auf die Tabelle sollte mit dem Eigentümer qualifiziert sein, um eine mehrdeutige Referenzierung von Tabellen mit identischem Namen zu vermeiden.
Erteilen Sie "SalesManager" die Berechtigung, die Ansicht zu benutzen:
GRANT SELECT ON EmployeeSales TO SalesManager; |
Zum Erteilen von Berechtigungen für Ansichten und Tabellen wird genau derselbe Befehl verwendet.
Im nächsten Beispiel wird eine Ansicht erstellt, mit der der Sales Manager eine Zusammenfassung der Aufträge einsehen kann. Diese Ansicht benötigt Daten aus mehr als einer Tabelle:
Erstellen Sie die Ansicht.
CREATE VIEW OrderSummary AS SELECT OrderDate, Region, SalesRepresentative, CompanyName FROM SalesOrders KEY JOIN Customers; |
Erteilen Sie dem Sales Manager die Berechtigung, diese Ansicht einzusehen.
GRANT SELECT ON OrderSummary TO SalesManager; |
Um zu prüfen, ob der Vorgang ordnungsgemäß abgelaufen ist, stellen Sie eine Verbindung mit der Benutzer-ID "SalesManager" her und sehen sich die Ansichten an, die Sie erstellt haben:
CONNECT SalesManager IDENTIFIED BY sales; SELECT * FROM DBA.EmployeeSales; SELECT * FROM DBA.OrderSummary; |
Dem Sales Manager wurden keine Berechtigungen für die Einsicht in untergeordnete Tabellen erteilt. Die folgenden Befehle führen zu Berechtigungsfehlern.
SELECT * FROM GROUPO.Employees; SELECT * FROM GROUPO.SalesOrders; |
Das obige Beispiel zeigt, wie Ansichten dafür eingesetzt werden können, SELECT-Berechtigungen abzustimmen. INSERT-, DELETE- und UPDATE-Berechtigungen können auf dieselbe Weise erteilt werden.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |