Ansichten und Prozeduren können auf untergeordnete Objekte zugreifen, die andere Eigentümer haben. Wenn z.B. BenutzerA, BenutzerB, BenutzerC und BenutzerD vier verschiedene Benutzer sind, könnte BenutzerD.AnsichtD auf BenutzerC.AnsichtC basieren, die auf BenutzerB.AnsichtB basiert und die wiederum auf BenutzerA.TabelleA basiert. Ähnliches gilt für diese Prozeduren: BenutzerD.ProzedurD könnte BenutzerC.ProzedurC aufrufen, die wiederum BenutzerB.ProzedurB aufrufen könnte, die in BenutzerA.TabelleA einfügen könnte.
Die folgenden Regeln für Discretionary Access Control (DAC - beliebig bestimmbare Zugriffssteuerung) betreffen verschachtelte Ansichten und Tabellen:
Um eine Ansicht erstellen zu können, muss der Benutzer über SELECT-Berechtigungen für alle Basisobjekte in der Ansicht verfügen (z.B. Tabellen und Ansichten).
Um auf eine Ansicht zugreifen zu können, müssen dem Eigentümer der Ansicht mit der GRANT OPTION die geeigneten Berechtigungen für die untergeordneten Tabellen oder Ansichten erteilt werden. Der Benutzer muss die geeigneten Berechtigungen für die Ansicht erhalten haben.
Das Aktualisieren mit der WHERE-Klausel erfordert SELECT- und UPDATE-Berechtigungen.
Wenn ein Benutzer Eigentümer der Tabellen in einer Ansichtsdefinition ist, kann der Benutzer über eine Ansicht auf die Tabellen zugreifen, auch wenn der Benutzer nicht der Eigentümer der Ansicht ist und ihm keine Zugriffsrechte für die Ansicht zugewiesen wurden.
Die folgenden DAC-Regeln betreffen verschachtelte Prozeduren:
Ein Benutzer braucht keinerlei Berechtigungen für die untergeordneten Objekte (z.B. Tabellen, Ansichten oder Prozeduren), um eine Prozedur zu erstellen.
Damit eine Prozedur ausgeführt werden kann, muss der Eigentümer der Prozedur über die geeigneten Berechtigungen für die Objekte verfügen, auf die sich die Prozedur bezieht.
Auch wenn ein Benutzer Eigentümer aller von der Prozedur referenzierten Tabellen ist, kann der Benutzer die Prozedur nicht ausführen, um auf die Tabellen zuzugreifen, es sei denn, dem Benutzer wurde die Berechtigung EXECUTE für die Prozedur erteilt.
Es folgen einige Beispiele, die dieses Verhalten beschreiben.
Beispiel 1: Benutzer1 erstellt Tabelle1 und Benutzer2 erstellt Ansicht2 für Tabelle1
Beispiel 2: Benutzer2 erstellt Prozedur2, die auf Tabelle1 zugreift
Beispiel 3: Benutzer1 erstellt Tabelle1, Benutzer2 erstellt Tabelle2 und Benutzer3 erstellt Ansicht3, die Tabelle1 und Tabelle2
verbindet
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |