SQL Server 2016: Triggers, Stored Procedures und Funktionen

Sicherheitskontext von Skalarfunktionen wechseln

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Für die Dauer ihrer Ausführung kann eine Funktion ihren Sicherheitskontext mit EXECUTE AS wechseln und so über andere Rechte als der Aufrufer verfügen.
03:17

Transkript

Skalarfunktionen können genau wie Trigger und gespeicherte Prozeduren für die Ausführung einen anderen Sicherheitskontext annehmen und damit mehr oder weniger Rechte haben, als der, der die Funktion aufgerufen hat. In der Regel sind es mehr Rechte, aber damit habe ich die Möglichkeit zu steuern, dass beispielsweise die Funktion auf Tabellen zugreift, die dem Benutzer sonst beim direkten Zugriff verwehrt blieben. Möglich ist es, dass ich angebe EXECUTE AS CALLER, was aber genau gar nichts macht, nämlich auf den Sicherheitskontext nimmt es diejenigen, der die Funktion aufgerufen hat, also da ändert sich nichts. Dann kann ich sagen EXECUTE AS OWNER. Damit wird der Sicherheitskontext verwendet desjenigen, der die Funktion angelegt hat. Ich kann auch sagen EXECUTE AS und dann einen Usernamen angeben. Damit wird entsprechend in genau diesen Kontext gewechselt. Es ist keine Sicherheitslücke, ich kann nicht irgendwelche Funktionen anlegen und dann hoch berechtigte User angeben und in der Funktion über deren Rechte dann auf Daten zugreifen oder auf Information zugreifen, die ich sonst nicht erhalten könnte. Ich muss ein spezielles Recht haben, dass ich quasi die Identität dieses Benutzers annehmen darf, damit ich überhaupt dann die Funktion erzeugen kann. Ich zeige Ihnen mal, wie das im TSQL aussieht. Hier im SQL Server Management Studio habe ich dann auch schon das Skript geladen. Entsprechende Datenbank an um in dieser Datenbank zunächst einen User anzulegen, ein User ohne Login. Damit muss ich mir keine Gedanken machen, ob entsprechend in der Master- Datenbank das Login vorhanden ist und muss das auch nicht erzeugen oder Ähnliches, sondern kann einfach sagen CREATE USER User1 WITHOUT LOGIN. Solche User ohne Login sind häufig verwendet um genau in solchen Szenarien mit EXECUTE AS Rechte zu bündeln und ich kann diesem User ganz normal Rechte geben, ohne dass sich wirklich jemand damit anmelden kann. So diesen User lege ich dann auch einmal an. Dann erzeuge ich die Funktion und nach der Rückgabe sage ich dann WITH EXECUTE AS und benenne genau diesen User, so wie ich ihn da oben genannt habe. Die Funktion selber liefert mir lediglich den Userkontext zurück, der gültig ist, während der Block ausgeführt wird dieser Skalarfuntkion. Und wenn ich zum Beispiel hier auf der Funktion zugreife, bekomme ich hier User1 angezeigt. Hätte ich hier zum Beispiel stehen AS CALLER, was eine Option ist, dann bekomme ich dbo, weil ich hier gerade als Database-Owner unterwegs bin. Ich hätte auch sagen können AS OWNER, was jetzt in dem speziellen Fall das Gleiche ist, weil der Database- Owner jetzt auch derjenige ist, der sowohl die ganze Datenbank als auch diese Funktion angelegt hat. Ich könnte theoretisch SELF benutzen, das habe ich in den Folien nicht gezeigt. Das wird nur für spezielle Szenarien benötigt. Sie sehen also, mit EXECUTE AS können Sie den Sicherheitskontext für die Dauer der Ausführung der Funktion wechseln um möglicherweise über höhere Rechte an Information zu kommen, die der User sonst nicht verwenden kann.

SQL Server 2016: Triggers, Stored Procedures und Funktionen

Nutzen Sie in SQL Server Trigger, gespeicherte Prozeduren, Late Binding, Fehlerbehandlung sowie Scalar- und Tabellenwertfunktionen.

3 Std. 12 min (44 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:08.08.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!