Showplansicherheit
Showplan-Ausführungsplaninformationen können auf verschiedene Arten erstellt werden. Sie können Optionen von Transact-SQL der SET-Anweisung oder SQL Server Profiler-Ereignisklassen verwenden, oder Sie können die dynamische Verwaltungsfunktion sys.dm_exec_query_plan abfragen. Jede Methode erfordert unterschiedliche Berechtigungen, die in den folgenden Abschnitten beschrieben werden. Weitere Informationen dazu, wie die SHOWPLAN-Berechtigung für Transact-SQL-Batches überprüft wird, finden Sie unter SHOWPLAN-Berechtigung und Transact-SQL-Batches.
Hinweis |
---|
Wenn der Kompatibilitätsgrad einer SQL Server-Datenbank mithilfe der gespeicherten Prozedur sp_dbcmptlevel auf 80 festgelegt wird, gilt weiterhin die aktuelle SHOWPLAN-Berechtigung. Das Festlegen des Kompatibilitätsgrades auf 80 bewirkt nicht, dass sich die SHOWPLAN-Berechtigungen wie in Microsoft SQL Server 2000 verhalten. |
Informationen zur SHOWPLAN-Berechtigung
Um Ausführungsplanausgaben mit den meisten Transact-SQL-SET-Optionen für Showplan erstellen zu können, müssen Benutzer über folgende Berechtigungen verfügen:
Die SHOWPLAN-Berechtigung für die Datenbanken, die Objekte enthalten, auf die in der Transact-SQL-Anweisung verwiesen wird, wie z. B. Sichten, gespeicherte Prozeduren oder benutzerdefinierte Funktionen.
Die erforderliche Berechtigung zum Ausführen der eigentlichen Transact-SQL-Anweisung.
Sicherheitshinweis Benutzer mit den Berechtigungen SHOWPLAN, ALTER TRACE oder VIEW SERVER STATE können Abfragen anzeigen, die in der Showplan-Ausgabe erfasst werden. Diese Abfragen enthalten möglicherweise vertrauliche Informationen wie Kennwörter. Daher wird empfohlen, diese Berechtigungen nur Benutzern zu gewähren, die zum Zugreifen auf vertrauliche Informationen berechtigt sind, z. B. Mitglieder der festen Datenbankrolle "db_owner" oder Mitglieder der festen Serverrolle "sysadmin". Darüber hinaus wird empfohlen, Showplan-Dateien oder Ablaufverfolgungsdateien, die Ereignisse mit Bezug zu Showplan enthalten, nur an einem Speicherort zu speichern, für den das NTFS-Dateisystem verwendet wird, und den Zugriff auf Benutzer zu beschränken, die zum Zugreifen auf vertrauliche Informationen berechtigt sind.
Als Beispiel wird von der folgenden Abfrage ausgegangen:
SELECT COUNT(*)
FROM table_1
WHERE column_1 < 10
Wenn ein Benutzer mit bösartigen Absichten eine Showplanausgabe für einen Satz von Abfragen wie in diesem Beispiel generiert und den Wert "10" im Prädikat jedes Mal durch unterschiedliche Konstanten ersetzt, könnte der Benutzer eine ungefähre Datenverteilung der Spaltenwerte für column_1 in table_1 ableiten, indem er die geschätzten Zeilenzählungen liest.
Die SHOWPLAN-Berechtigung ist eine Berechtigung auf Datenbankebene, für die Folgendes gilt:
Nur folgende Benutzer können diese erteilen, verweigern oder aufheben:
Mitglieder der festen Serverrolle sysadmin. Standardmäßig besitzen alle Mitglieder dieser festen Serverrolle die SHOWPLAN-Berechtigung für alle Datenbanken auf dem Server.
Mitglieder der festen Serverrolle dbcreator für Datenbanken, die sie erstellen und deren Besitzer sie sind. Standardmäßig verfügen alle Mitglieder dieser festen Serverrolle über die SHOWPLAN-Berechtigung für die Datenbanken, die sie erstellen und deren Besitzer sie sind.
Mitglieder der festen Datenbankrolle db_owners für Datenbanken, deren Besitzer sie sind. Standardmäßig verfügen alle Mitglieder dieser festen Datenbankrolle über die SHOWPLAN-Berechtigung für die Datenbanken, deren Besitzer sie sind.
Sie unterstützt die Besitzverkettung. Wenn die Besitzketten unterbrochen sind, wird die Berechtigung erneut an dem Knoten überprüft, an dem die Unterbrechung aufgetreten ist. Da die SHOWPLAN-Berechtigung jedoch eine Berechtigung auf Datenbankebene ist, tritt diese Überprüfung nur auf, wenn Abfragen auf Objekte in mindestens zwei Datenbanken verweisen. Weitere Informationen zur Besitzverkettung finden Sie unter Besitzketten.
Informationen zur Syntax zum Erteilen, Verweigern oder Aufheben der SHOWPLAN-Berechtigung finden Sie unter Syntax zum Erteilen, Verweigern und Aufheben der SHOWPLAN-Berechtigung.
Beispiel
Wenn User1 über CREATE TABLE-, INSERT- und SELECT-Berechtigungen verfügt und in der D-Datenbank eine T-Tabelle erstellt (er ist der Besitzer der Tabelle), Zeilen in die Tabelle einfügt und dann eine SELECT-Abfrage für die Tabelle schreibt, wird diese Abfrage erfolgreich ausgeführt. User1 ist jedoch nicht in der Lage, einen Showplan zu generieren, wenn ihm nicht die SHOWPLAN-Berechtigung für die D-Datenbank erteilt wird.
Vorsicht
Angenommen, im vorherigen Beispiel enthält die D-Datenbank die V-Sicht, für die User1 die SELECT-Berechtigung besitzt. Nachdem User1 die SHOWPLAN-Berechtigung für D erteilt wurde, kann er – obwohl er nicht Besitzer von V ist – trotzdem einen Showplan für eine Abfrage für V generieren. Dieser Showplan ermöglicht es ihm, die Sichtdefinition für V, anzuzeigen, einschließlich der Tabellen und Sichten, auf denen V basiert.. Enthält jedoch V ein Objekt, z. B. eine Tabelle, deren Besitzer User1 ist und die sich in einer anderen Datenbank D2 befindet, und ist User1 nicht der Besitzer von D2, wird die SHOWPLAN-Berechtigung für D2 überprüft und ist erforderlich.
Erforderliche Berechtigungen für die Verwendung von SET-Optionen für Showplan
In der folgenden Tabelle sind die erforderlichen Berechtigungen für die Verwendung der verschiedenen Optionen der SET-Anweisung für Showplan aufgeführt:
SET-Optionen für Showplan |
Erforderliche Berechtigungen |
---|---|
SET SHOWPLAN_XML ON SET SHOWPLAN_ALL ON SET SHOWPLAN_TEXT ON |
Für die Anweisungen SELECT, INSERT, UPDATE, DELETE, EXEC stored_prodedure und EXEC user_defined_function sind die folgenden Berechtigungen erforderlich, um einen Showplan zu erstellen:
Für alle anderen Anweisungen, wie DDL, USE database_name, SET, DECLARE, dynamisches Transact-SQL usw., sind nur die entsprechenden Berechtigungen zum Ausführen der Transact-SQL-Anweisung erforderlich. Weitere Informationen finden Sie unter SHOWPLAN-Berechtigung und Transact-SQL-Batches. |
SET STATISTICS XML ON SET STATISTICS PROFILE ON |
Für Transact-SQL-Anweisungen, die keine STATISTICS PROFILE- oder STATISTICS XML-Resultsets generieren, sind nur die entsprechenden Berechtigungen zum Ausführen der Transact-SQL-Anweisungen erforderlich. Für Transact-SQL-Anweisungen, die STATISTICS PROFILE- oder STATISTICS XML-Resultsets generieren, müssen die Überprüfungen für die Ausführungsberechtigung für die Transact-SQL-Anweisung und für die SHOWPLAN-Berechtigung erfolgreich verlaufen. Andernfalls wird die Ausführung der Transact-SQL-Anweisung unterbrochen, und es werden keine Showplaninformationen generiert. Informationen zu den Transact-SQL-Anweisungen, die Showplaninformationen generieren, finden Sie unter Showplans erstellende Transact-SQL-Anweisungen. |
SET STATISTICS TIME SET STATISTICS IO |
Keine dieser Optionen der SET-Anweisung prüft auf die SHOWPLAN-Berechtigung oder erfordert diese. |
Wann wird die SHOWPLAN-Berechtigung überprüft?
Die SHOWPLAN-Berechtigung wird überprüft, wenn eine Transact-SQL-Anweisung oder ein Batch ausgeführt wird und Showplaninformationen generiert werden. Die Überprüfung tritt nicht auf, wenn eine SET-Option für Showplan auf ON festgelegt wird.
Hinweis |
---|
Die Kontextdatenbank für einen Transact-SQL-Batch wird mithilfe der USE <database_name>-Anweisung festgelegt. Die SHOWPLAN-Berechtigung wird weder für USE <database_name>-Anweisungen noch für die Kontextdatenbank überprüft. |
Weitere Informationen zu den Optionen der SET-Anweisung für Showplan finden Sie in den folgenden Themen:
Erforderliche Berechtigungen zum Anzeigen grafischer Ausführungspläne mithilfe von SQL Server Management Studio
In der folgenden Tabelle sind die erforderlichen Berechtigungen zum Anzeigen grafischer Ausführungspläne in SQL Server Management Studio aufgeführt:
Option für Management Studio-Ausführungsplan |
Erforderliche Berechtigungen |
---|---|
Geschätzten Ausführungsplan anzeigen |
Erfordert dieselben Berechtigungen, die zum Verwenden der Option SHOWPLAN_XML der SET-Anweisung erforderlich sind. |
Tatsächlichen Ausführungsplan einschließen |
Erfordert dieselben Berechtigungen, die zum Verwenden der Option STATISTICS XML der SET-Anweisung erforderlich sind. |
Weitere Informationen finden Sie unter Anzeigen von grafischen Ausführungsplänen (SQL Server Management Studio).
Erforderliche Berechtigungen zum Anzeigen von Ausführungsplänen mithilfe von SQL Server Profiler-Ereignisklassen
Um Ausführungspläne mithilfe von SQL Server Profiler-Ereignisklassen anzeigen zu können, muss der Benutzer ein Mitglied der festen Serverrolle sysadmin sein oder über die ALTER TRACE-Berechtigung verfügen. Die SHOWPLAN-Berechtigung wird nicht überprüft und ist nicht erforderlich.
Weitere Informationen finden Sie unter Anzeigen von Ausführungsplänen mithilfe von SQL Server Profiler-Ereignisklassen.
Erforderliche Berechtigungen zum Anzeigen von Ausführungsplänen mithilfe der dynamischen Verwaltungsfunktion sys.dm_exec_query_plan
Zum Anzeigen von Ausführungsplänen mithilfe der dynamischen Verwaltungsfunktion sys.dm_exec_query_plan muss den Benutzern lediglich die VIEW SERVER STATE-Berechtigung erteilt werden.
Weitere Informationen finden Sie unter sys.dm_exec_query_plan (Transact-SQL).