SQL Server 2016: Triggers, Stored Procedures und Funktionen

Sicherheitskontext von Prozeduren wechseln

LinkedIn Learning kostenlos und unverbindlich testen!

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

Transkript

Eine Stored Procedure kann für ihre Ausführung den Sicherheitskontext wechseln, der bestimmt, was in der Stored Procedure ausgeführt werden darf. Mit anderen Worten, Sie können einer Stored Procedure andere oder mehr Rechte geben, als derjenige hat, der die Stored Procedure ausführt. Dafür gibt es die EXECUTE AS-Klausel, der können Sie einige Werte angeben, drei wichtigen sind CALLER, was bedeutet, dass es exakt genau die gleichen Rechte sind, wie der Aufrufer. Das ist der Standard, da ändert sich an der Stelle nichts. Aber es gibt die Möglichkeit auch OWNER anzugeben. OWNER bedeutet, dass der Inhalt der Stored Procedure, die Anweisungen, genau die gleichen Rechte haben wie derjenige, der die Stored Procedure angelegt hat, also dem die Stored Procedure auch gehört. Das kann man zwar wechseln, aber normalerweise es ist gleichbedeutend derjenige, der ein Objekt anlegt, dem gehört dieses Objekt auch. Oder wenn es keinen direkte Besitzer gibt, es ist derjenige des Schemas, in dem die Stored Procedure liegt. Die dritte Option ist, dass Sie einen Usernamen angeben und entsprechend bekommt die Stored Procedure genau dann die Rechte, die entsprechend der User hat, den Sie da angeben. Das setzt allerdings voraus, dass die entsprechende Rechte besitzen, diesen Benutzer anzugeben, also es ist keine Sicherheitslücke, ich kann nicht hingehen und mir Stored Procedures ausdenken und einfach wahllos Benutzer angeben oder User angeben, die hohe Rechte haben um dann entsprechend unter deren Kontext Zugriffe zu machen, die ich sonst nicht tun dürfte. Um Ihnen das einmal zu zeigen, habe ich hier wieder in SQL Server Management Studio gewechselt. Ich lege zunächst die Datenbank an. Dann erzeuge ich einen User und zwar ohne Login. Das heißt, ich brauche ihn nur hier in der Datenbank User ohne Logins werden in der Regel benutzt als Container für Berechtigungen und das ist hier der Fall. Ich gebe ihn zwar keine expliziten Berechtigungen, aber ich möchte diesen User benutzen um ihn später bei EXECUTE AS angeben zu können. Das heißt, ich lege den User an und kann dann zum Beispiel diese Stored Procedure erzeugen und Sie sehen hier EXECUTE AS user1. Alternativ könnte ich auch OWNER oder CALLER angeben, oder auch SELF, das wäre das vierte, was ich gerade in den Folien nicht weiter erwähnt habe, weil es nur eine spezielle Nischenrolle hat. Wenn ich das Ausführe, dann kann ich die Stored Procedure aufrufen und Sie sehen hier, die User-Funktion, die mir den Sicherheitskontext bzw. den User liefert, der zurzeit zur Ausführung kommt, liefert, wie gewünscht, user1. Jetzt kann ich zum Beispiel statt user1 auch beispielsweise CALLER angeben, dann bekomme ich als Ergebnis dbo, weil ich selber entsprechend in der dbo-Rolle unterwegs bin. Ich könnte theoretisch auch OWNER nehmen, das würde aber in den speziellen Fall jetzt keinen Unterschied machen, das ist kein Video über SQL-Server- Sicherheit, dafür gibt es andere, aber Sie sehen mit EXECUTE AS können Sie sehr leicht den Sicherheitskontext ändern und ich kann auch, wenn ich möchte, zurück in den Wechseln für meinen user1 und das zeigt er an. Das heißt, so lange die Stored Procedure ausgeführt wird, wird ein User exakt genau diese Berechtigungen haben und damit kann ich entsprechend genau in der Stored Procedure das ausführen, was genau auch dieser User darf. Nicht mehr, nicht weniger.

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!