Feste Datenbankrollen des SQL Server-Agents
SQL Server 2005 führt die folgenden festen msdb-Datenbankrollen ein, mit denen Administratoren den Zugriff auf den SQL Server-Agent besser steuern können. In der folgenden Auflistung sind die Rollen von den niedrigsten bis hin zu den höchsten Zugriffsberechtigungen enthalten:
SQLAgentUserRole
SQLAgentReaderRole
SQLAgentOperatorRole
Wenn Benutzer, die nicht Mitglied einer dieser Rollen sind, mit SQL Server in SQL Server Management Studio verbunden sind, ist der SQL Server-Agent-Knoten in Objekt-Explorer nicht sichtbar. Ein Benutzer muss Mitglied einer dieser festen Datenbankrollen oder der festen sysadmin-Serverrolle sein, um den SQL Server-Agent verwenden zu können.
Berechtigungen der festen Datenbankrollen des SQL Server-Agents
Die Datenbankrollen-Berechtigungen des SQL Server-Agents stehen konzentrisch zueinander in Beziehung: Rollen mit höheren Berechtigungen erben die Berechtigungen der Rollen mit niedrigeren Berechtigungen für SQL Server-Agent-Objekte (einschließlich Warnungen, Operatoren, Aufträge, Zeitpläne und Proxys). Wenn z. B. Mitglieder der Rolle SQLAgentUserRole mit den niedrigsten Berechtigungen Zugriff auf proxy_A haben, haben die Mitglieder von SQLAgentReaderRole und SQLAgentOperatorRole automatisch Zugriff auf diesen Proxy, selbst wenn ihnen der Zugriff auf proxy_A nicht ausdrücklich erteilt wurde. Dies kann zu Sicherheitsrisiken führen, die in den folgenden Abschnitten zu den einzelnen Rollen erläutert werden.
SQLAgentUserRole-Berechtigungen
SQLAgentUserRole ist die feste Datenbankrolle des SQL Server-Agents mit den niedrigsten Berechtigungen. Sie hat lediglich Berechtigungen für Operatoren, lokale Aufträge und Auftragszeitpläne. Die Mitglieder von SQLAgentUserRole haben lediglich Berechtigungen für lokale Aufträge und Auftragszeitpläne, deren Besitzer sie sind. Sie können keine Multiserveraufträge (Master- und Zielserveraufträge) verwenden, und sie können den Auftragsbesitz nicht ändern, um Zugriff auf Aufträge zu erhalten, deren Besitzer sie nicht bereits sind. Die Mitglieder von SQLAgentUserRole können lediglich im Dialogfeld Auftragsschritt-Eigenschaften von SQL Server Management Studio eine Liste mit vorhandenen Proxys anzeigen. Nur der Knoten Aufträge in Objekt-Explorer von SQL Server Management Studio ist für die Mitglieder von SQLAgentUserRole sichtbar.
Sicherheitshinweis |
---|
Beachten Sie die Sicherheitsaspekte, bevor Sie den Mitgliedern der SQL Server-Agent -Datenbankrollen Proxyzugriff erteilen. SQLAgentReaderRole und SQLAgentOperatorRole sind automatisch Mitglieder von SQLAgentUserRole. Dies bedeutet, dass die Mitglieder von SQLAgentReaderRole und SQLAgentOperatorRole Zugriff auf alle SQL Server-Agent-Proxys haben, die SQLAgentUserRole erteilt wurden und diese Proxys verwenden können. |
Die folgende Tabelle enthält einen Überblick über die SQLAgentUserRole-Berechtigungen für SQL Server-Agent-Objekte.
Aktion |
Operatoren |
Lokale Aufträge (nur Aufträge mit Besitzern) |
Auftragszeitpläne (nur Zeitpläne mit Besitzern) |
Proxys |
---|---|---|---|---|
Erstellen/Ändern/Löschen |
Nein |
Ja1 |
Ja |
Nein |
Liste anzeigen (aufzählen) |
Ja2 |
Ja |
Ja |
Ja3 |
Aktivieren/Deaktivieren |
Nein |
Ja |
Ja |
Nicht verfügbar |
Eigenschaften anzeigen |
Nein |
Ja |
Ja |
Nein |
Ausführen/Beenden/Starten |
Nicht verfügbar |
Ja |
Nicht verfügbar |
Nicht verfügbar |
Auftragsverlauf anzeigen |
Nicht verfügbar |
Ja |
Nicht verfügbar |
Nicht verfügbar |
Auftragsverlauf löschen |
Nicht verfügbar |
Nein 4 |
Nicht verfügbar |
Nicht verfügbar |
Anfügen/Trennen |
Nicht verfügbar |
Nicht verfügbar |
Ja |
Nicht verfügbar |
1 Der Auftragsbesitz kann nicht geändert werden.
2 Liste mit verfügbaren Operatoren kann zum Verwenden in sp_notify_operator und im Dialogfeld Auftragseigenschaften von Management Studio abgerufen werden.
3 Liste der Proxys steht nur im Dialogfeld Auftragsschritt-Eigenschaften von Management Studio zur Verfügung.
4 Den Mitgliedern von SQLAgentUserRole muss die EXECUTE-Berechtigung für sp_purge_jobhistory zum Löschen des Auftragsverlaufs für Aufträge, deren Besitzer sie sind, ausdrücklich erteilt werden. Sie können den Auftragsverlauf für keine anderen Aufträge löschen.
SQLAgentReaderRole-Berechtigungen
SQLAgentReaderRole enthält alle SQLAgentUserRole-Berechtigungen sowie die Berechtigungen zum Anzeigen der Liste verfügbarer Multiserveraufträge, ihrer Eigenschaften und ihres Verlaufs. Die Mitglieder dieser Rolle können auch die Liste aller verfügbaren Aufträge und Auftragszeitpläne sowie ihre Eigenschaften anzeigen, nicht nur die Aufträge und Auftragszeitpläne, deren Besitzer sie sind. Die Mitglieder von SQLAgentReaderRole können den Auftragsbesitz nicht ändern, um Zugriff auf Aufträge zu erhalten, deren Besitzer sie nicht bereits sind. Nur der Knoten Aufträge in Objekt-Explorer von SQL Server Management Studio ist für die Mitglieder von SQLAgentReaderRole sichtbar.
Sicherheitshinweis |
---|
Beachten Sie die Sicherheitsrisiken, bevor Sie den Mitgliedern der SQL Server-Agent -Datenbankrollen Proxyzugriff erteilen. Die Mitglieder von SQLAgentReaderRole sind automatisch auch Mitglieder von SQLAgentUserRole. Dies bedeutet, dass die Mitglieder von SQLAgentReaderRole Zugriff auf alle SQL Server-Agent-Proxys haben, die SQLAgentUserRole erteilt wurden und diese Proxys verwenden können. |
Die folgende Tabelle enthält einen Überblick über die SQLAgentReaderRole-Berechtigungen für SQL Server-Agent-Objekte.
Aktion |
Operatoren |
Lokale Aufträge |
Multiserveraufträge |
Auftragszeitpläne |
Proxys |
---|---|---|---|---|---|
Erstellen/Ändern/Löschen |
Nein |
Ja 1 (nur Aufträge mit Besitzer) |
Nein |
Ja (nur Zeitpläne mit Besitzer) |
Nein |
Liste anzeigen (aufzählen) |
Ja2 |
Ja |
Ja |
Ja |
Ja3 |
Aktivieren/Deaktivieren |
Nein |
Ja (nur Aufträge mit Besitzer) |
Nein |
Ja (nur Zeitpläne mit Besitzer) |
Nicht verfügbar |
Eigenschaften anzeigen |
Nein |
Ja |
Ja |
Ja |
Nein |
Eigenschaften bearbeiten |
Nein |
Ja (nur Aufträge mit Besitzer) |
Nein |
Ja (nur Zeitpläne mit Besitzer) |
Nein |
Ausführen/Beenden/Starten |
Nicht verfügbar |
Ja (nur Aufträge mit Besitzer) |
Nein |
Nicht verfügbar |
Nicht verfügbar |
Auftragsverlauf anzeigen |
Nicht verfügbar |
Ja |
Ja |
Nicht verfügbar |
Nicht verfügbar |
Auftragsverlauf löschen |
Nicht verfügbar |
Nein 4 |
Nein |
Nicht verfügbar |
Nicht verfügbar |
Anfügen/Trennen |
Nicht verfügbar |
Nicht verfügbar |
Nicht verfügbar |
Ja (nur Zeitpläne mit Besitzer) |
Nicht verfügbar |
1 Auftragsbesitz kann nicht geändert werden.
2 Die Liste mit verfügbaren Operatoren kann zum Verwenden in sp_notify_operator und im Dialogfeld Auftragseigenschaften von Management Studio abgerufen werden.
3 Die Liste der Proxys steht nur im Dialogfeld Auftragsschritt-Eigenschaften von Management Studio zur Verfügung.
4 Den Mitgliedern von SQLAgentReaderRole muss die EXECUTE-Berechtigung für sp_purge_jobhistory zum Löschen des Auftragsverlaufs für Aufträge, deren Besitzer sie sind, ausdrücklich erteilt werden. Sie können den Auftragsverlauf für keine anderen Aufträge löschen.
SQLAgentOperatorRole-Berechtigungen
SQLAgentOperatorRole ist die feste Datenbankrolle des SQL Server-Agents mit den höchsten Berechtigungen. Sie enthält alle Berechtigungen von SQLAgentUserRole und SQLAgentReaderRole. Die Mitglieder dieser Rolle können auch die Eigenschaften für Operatoren und Proxys anzeigen und die verfügbaren Proxys und Warnungen auf dem Server aufzählen.
Die Mitglieder von SQLAgentOperatorRole haben zusätzliche Berechtigungen für lokale Aufträge und Zeitpläne. Sie können alle lokalen Aufträge ausführen, beenden oder starten, und sie können den Auftragsverlauf eines lokalen Auftrags auf dem Server löschen. Sie können auch alle lokalen Aufträge und Zeitpläne auf dem Server aktivieren und deaktivieren. Um lokale Aufträge oder Zeitpläne zu aktivieren oder zu deaktivieren, müssen die Mitglieder dieser Rolle die gespeicherten Prozeduren sp_update_job und sp_update_schedule verwenden. Nur die Parameter, die den Namen oder den Bezeichner des Auftrags oder Zeitplans sowie den @enabled-Parameter angeben, können von den Mitgliedern von SQLAgentOperatorRole angegeben werden. Wenn sie andere Parameter angeben, erzeugt die Ausführung dieser gespeicherten Prozeduren einen Fehler. Die Mitglieder von SQLAgentOperatorRole können den Auftragsbesitz nicht ändern, um Zugriff auf Aufträge zu erhalten, deren Besitzer sie nicht bereits sind.
Die Knoten Aufträge, Warnungen, Operatoren und Proxys in Objekt-Explorer von SQL Server Management Studio sind für die Mitglieder von SQLAgentOperatorRole sichtbar. Nur der Knoten Fehlerprotokolle ist für die Mitglieder dieser Rolle nicht sichtbar.
Sicherheitshinweis |
---|
Beachten Sie die Sicherheitsrisiken, bevor Sie den Mitgliedern der SQL Server-Agent-Datenbankrollen Proxyzugriff erteilen. Die Mitglieder von SQLAgentOperatorRole sind automatisch auch Mitglieder von SQLAgentUserRole und SQLAgentReaderRole. Dies bedeutet, dass die Mitglieder von SQLAgentOperatorRole Zugriff auf alle SQL Server-Agent-Proxys haben, die SQLAgentUserRole oder SQLAgentReaderRole erteilt wurden und diese Proxys verwenden können. |
Die folgende Tabelle enthält einen Überblick über die SQLAgentOperatorRole-Berechtigungen für SQL Server-Agent-Objekte.
Aktion |
Warnungen |
Operatoren |
Lokale Aufträge |
Multiserveraufträge |
Auftragszeitpläne |
Proxys |
---|---|---|---|---|---|---|
Erstellen/Ändern/Löschen |
Nein |
Nein |
Ja 2 (nur Aufträge mit Besitzer) |
Nein |
Ja (nur Zeitpläne mit Besitzer) |
Nein |
Liste anzeigen (aufzählen) |
Ja |
Ja1 |
Ja |
Ja |
Ja |
Ja |
Aktivieren/Deaktivieren |
Nein |
Nein |
Ja3 |
Nein |
Ja4 |
Nicht verfügbar |
Eigenschaften anzeigen |
Ja |
Ja |
Ja |
Ja |
Ja |
Ja |
Eigenschaften bearbeiten |
Nein |
Nein |
Ja (nur Aufträge mit Besitzer) |
Nein |
Ja (nur Zeitpläne mit Besitzer) |
Nein |
Ausführen/Beenden/Starten |
Nicht verfügbar |
Nicht verfügbar |
Ja |
Nein |
Nicht verfügbar |
Nicht verfügbar |
Auftragsverlauf anzeigen |
Nicht verfügbar |
Nicht verfügbar |
Ja |
Ja |
Nicht verfügbar |
Nicht verfügbar |
Auftragsverlauf löschen |
Nicht verfügbar |
Nicht verfügbar |
Ja |
Nein |
Nicht verfügbar |
Nicht verfügbar |
Anfügen/Trennen |
Nicht verfügbar |
Nicht verfügbar |
Nicht verfügbar |
Nicht verfügbar |
Ja (nur Zeitpläne mit Besitzer) |
Nicht verfügbar |
1 Die Liste mit verfügbaren Operatoren kann zum Verwenden in sp_notify_operator und im Dialogfeld Auftragseigenschaften von Management Studio abgerufen werden.
2 Der Auftragsbesitz kann nicht geändert werden.
3 Die Mitglieder von SQLAgentOperatorRole können lokale Aufträge, deren Besitzer sie nicht sind, aktivieren oder deaktivieren, indem sie die gespeicherte Prozedur sp_update_job verwenden und Werte für die @enabled- und die @job_id-Parameter (oder @job_name) angeben. Wenn ein Mitglied dieser Rolle einen anderen Parameter für diese gespeicherte Prozedur angibt, erzeugt die Ausführung der Prozedur einen Fehler.
4 Die Mitglieder von SQLAgentOperatorRole können Zeitpläne, deren Besitzer sie nicht sind, aktivieren oder deaktivieren, indem sie die gespeicherte Prozedur sp_update_schedule verwenden und Werte für die @enabled- und die @schedule_id-Parameter (oder @name) angeben. Wenn ein Mitglied dieser Rolle einen anderen Parameter für diese gespeicherte Prozedur angibt, erzeugt die Ausführung der Prozedur einen Fehler.
Zuweisen von mehreren Rollen an Benutzer
Die Mitglieder der festen Serverrolle sysadmin haben Zugriff auf alle SQL Server-Agent-Funktionen. Wenn ein Benutzer nicht Mitglied der sysadmin-Rolle ist, sondern von mehr als einer festen Datenbankrolle des SQL Server-Agents, sollten Sie das konzentrische Berechtigungsmodell dieser Rollen berücksichtigen. Da die Rollen mit höheren Berechtigungen immer alle Berechtigungen der Rollen mit niedrigeren Berechtigungen enthalten, hat ein Benutzer, der Mitglied von mehreren Rollen ist, automatisch die Berechtigungen der Rolle mit den höchsten Berechtigungen, deren Mitglied der Benutzer ist.
Siehe auch
Verweis
sp_update_schedule (Transact-SQL)
sp_notify_operator (Transact-SQL)
sp_purge_jobhistory (Transact-SQL)