Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

SQL Server 2016: Triggers, Stored Procedures und Funktionen

Sicherheitskontext von Tabellenwertfunktionen wechseln

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

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:21

Transkript

Auch bei Tabellenwertfunktionen ist 'EXECUTE AS' wieder mit von der Partie, allerdings nur für solche, die mit der Multistatement-Variante erzeugt werden, für Inline steht sie nicht zur Debatte. Allerdings solche Tabellenwertfunktionen können während der Ausführung ihren Sicherheitskontext wechseln, um mehr oder weniger oder vielleicht auch schlicht andere Rechte als der Aufrufer zu haben. Möglich sind 'EXECUTE AS CALLER', was allerdings bedeutet, dass sie genau die Rechte hat, die auch die Aufrufer hat. Wenn Sie nichts angeben, also kein 'EXECUTE AS', dann ist das auch der Standard, der SQL-Server geht dann davon aus, dass die Funktion die gleichen Rechte haben soll wie auch der Aufrufer, was durchaus sinnvoll ist. Dann gibt es 'EXECUTE AS OWNER'. Dann hat die Funktion während Ihrer Ausführung die Rechte desjenigen, der der Besitzer dieser Funktion ist. Wenn der nicht vorhanden ist, oder nicht explizit angegeben, dann ist es der Besitzer des Schemas. Das heißt, dieser User legt dann fest, was die Funktion während ihrer Ausführung darf. Und es gibt die Möglichkeit zu sagen 'EXECUTE AS user_name' und dann einen speziellen User anzugeben. Das heißt, dass während der Ausführung genau der Sicherheitskontext dieses Users verwendet wird, was allerdings auch keine Sicherheitslücke darstellt, weil um eine entsprechende Funktion anzulegen und einen anderen User als sich selber mit 'EXECUTE AS' anzugeben, dafür benötige ich entsprechende Rechte. Insofern ich kann mir nicht einfach Funktionen anlegen und mir quasi einen User mit höheren Rechte raussuchen und dann die Funktion mit dem ausführen, das funktioniert nicht. Zurück im SQL Server Management Studio zeige ich Ihnen hier kurz, wie das 'EXECUTE AS' für Tabellenwertfunktionen funktioniert. Ich lege zunächst die Datenbank an. Dann erzeuge ich einen User ohne Login. Das bedeutet, hiermit kann sich keiner anmelden. Ich muss mir keine Gedanken darüber machen, dass ich möglicherweise ein Login bereits in der Master-Datenbank habe. Ich muss es in dem Skript nicht einlegen, mich darum gar nicht kümmern. Solche User werden in der Regel benutzt um Rechte zu bündeln. Ich habe damit also die Möglichkeit diesem User Rechte zu geben, ohne dass sich wirklich jemand damit anmelden kann. Ich kann aber dann genau diesem User zum Beispiel für Tabellenwertfunktionen verwenden, indem ich einfach nach der Definition der Rückgabetabelle sage: 'WITH EXECUTE AS user1'. Die Funktion gibt mir nichts anderes zurück, als den Usernamen, in dessen Sicherheitskontext sie sich gerade befindet. Das heißt, ich kann hingehen, die Funktion anlegen und hier unten einmal aufrufen und Sie sehen, er zeigt mir an entsprechend 'User1'. Ich kann darüber hinaus auch sagen 'EXECUTE AS OWNER'. Das heißt, ich habe die Möglichkeit das zu nehmen und entsprechend die Funktion so zu definieren. Dann taucht hier unten nicht mehr 'User1' auf, sondern 'dbo'. Database Owner hat entsprechend die Funktion hier angelegt. Ich könnte auch 'CALLER' sagen, was genau den gleichen Effekt hat. Ich könnte sogar 'SELF' benutzen. Das habe ich Ihnen auf den Folien nicht gezeigt, das wird für spezielle Situationen nur benötigt. Sie haben die Möglichkeit, wenn Sie Multistatement- Tabellenwertfunktionen haben, diese entsprechend für Ihre Ausführung in einem anderen Benutzerkontext zu schalten und damit hat diese Funktion andere Rechte als der Aufrufer.

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!