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

SQL Server 2016: Triggers, Stored Procedures und Funktionen

Sicherheitskontext von Triggern wechseln

Testen Sie unsere 2021 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Für die Dauer ihrer Ausführung kann ein Trigger seinen Sicherheitskontext mit EXECUTE AS wechseln und so über andere Rechte als der Aufrufer verfügen.
02:56

Transkript

Ähnlich wie zum Beispiel Stored Procedures können auch Trigger für ihre Ausführung den Sicherheitskontext wechseln, um mehr oder weniger Rechte als der Aufrufer, also derjenige, der die DML-Anweisung ausgeführt hat, zu erhalten. Mit EXECUTE AS kann ich zum Beispiel CALLER angeben, was in dem speziellen Fall genau bedeutet, die gleichen Rechte, wie der Aufrufer. Da ändert sich dann nichts, das ist auch der Standard. Dann kann ich sagen EXECUTE AS OWNER, was dem Trigger die Rechte gibt, desjenigen, der ihn angelegt hat, also wer quasi der Besitzer des Triggers ist. Wenn es keinen expliziten Besitzer gibt, dann entsprechend der Besitzer des Schemas, in dem der Trigger liegt, sprich die Tabelle. Ich kann einen User mit Namen angeben, dessen Rechte ich benutzen möchte. Allerdings muss ich um diesen Trigger dann entsprechend auch anlegen zu dürfen, auch dafür besondere Rechte haben. Das ist kein Sicherheitsloch, es ist nicht so, dass ich mir einen Trigger anlegen kann und einen User angeben, mit einem besonderen hohen Level an Berechtigungen und dann quasi auf die Art und Weise Anweisungen ausführen, die ich sonst selber nicht ausführen dürfte. Das ist keine Sicherheitslücke, sondern kann nur genutzt werden, wenn ich entsprechend die Berechtigung habe, mich auch als diesen Benutzer auszugeben, wenn ich den Trigger entsprechend anlege. Ich zeige Ihnen mal, wie das im Beispiel aussieht. Dafür habe ich ein neues Skript geladen. Das legt mir die Datenbank an, eine Tabelle, fügt ein paar Zeilen in der Tabelle ein, und legt einen User an ohne Login, damit ich nicht in irgendeiner Form mich darum kümmern muss, ob es das möglicherweise auf dem Server schon gibt dieses Login. Mit 'CREATE USER User1 WITHOUT LOGIN' erreiche ich genau das. Diesen 'User1' nehme ich dann hier in der Erstellung des Triggers, indem ich sage WITH EXECTE AS und gebe 'User1' an. Ich könnte auch angeben AS OWNER, AS CALLER oder SELF. SELF habe ich auf den Folien nicht erwähnt, es ist ein Spezialfall. Das steuert entsprechend den Sicherheitskontext des Triggers. Im Trigger gebe ich einfach nur den User an, der entsprechend zur Zeit dann aktiv ist, wenn der Trigger läuft. Damit habe ich alles in einem Rutsch ausgeführt. Wenn ich jetzt zum Beispiel ein paar Zeilen ändere, indem ich sie lösche, dann sehe ich, dass es hier an der Stelle 'User1' ist. Ich gehe zum Beispiel hin und ändere das und schreibe hier einfach OWNER hin, lasse das Ganze nochmal laufen, dann wird an der Stelle 'dbo' angezeigt, weil ich zur Zeit als Database-Owner in dieser Datenbank unterwegs bin. Standard ist AS CALLER. Das heißt, ich kann das anlegen, es wird mir das Gleiche anzeigen, als wenn ich das komplett rausnehmen würde. Im Zweifelsfall wird er immer EXECUTE AS CALLER verwenden. Damit können Sie den Sicherheitskontext ändern, das heißt, im Trigger können zum Beispiel Tabellen beschrieben werden, auf die der Benutzer, wenn er direkt es versuchen würde, keinen Zugriff hat.

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!