Sichern von in SQL Server gespeicherten DTS-Paketen
Bei Paketen, die in MicrosoftSQL Server 2000 Data Transformation Services (DTS) erstellt wurden und in der msdb-Datenbank gespeichert sind, liegen potenzielle Sicherheitsprobleme vor. Dieser Aspekt bezieht sich vor allem auf die gespeicherten Systemprozeduren, die die meisten häufigen Tasks für diese DTS-Pakete ausführen. (Ein Beispiel für eine gespeicherte Systemprozedur, die einen häufigen Task ausführt, ist die gespeicherte Prozedur sp_enum_dtspackages, die die in der msdb-Datenbank gespeicherten DTS-Pakete auflistet. Ein weiteres Beispiel ist die gespeicherte Systemprozedur sp_get_dtspackage, die ein DTS-Paket in eine Clientanwendung lädt). SQL Server 2000 Enterprise Manager, SQL Server Management Studio und die DTS-API verwenden alle diese gespeicherten Prozeduren, um häufige Tasks auszuführen.
Wenn Sie das potenzielle Sicherheitsproblem im Zusammenhang mit den gespeicherten DTS-Systemprozeduren kennen, können Sie angemessene Schritte zur Minimierung des Risikos einleiten.
Wichtig |
---|
Data Transformation Services (DTS) ist als veraltet markiert. Weitere Informationen finden Sie unter Data Transformation Services (DTS). |
Grundlegendes zum potenziellen Sicherheitsproblem
In SQL Server-Versionen vor Version SQL Server 2008 wird die Berechtigung zum Ausführen für einige der gespeicherten DTS-Systemprozeduren der Rolle PUBLIC erteilt. Mit dieser Einstellung kann jeder Benutzer, der sich bei der msdb-Datenbank anmelden kann, folgende Tasks ausführen:
Eine Liste von DTS-Paketen abrufen
Die Pakete selbst abrufen
Neue Pakete speichern
Jedoch kann nur der Besitzer eines vorhandenen Pakets dieses Paket bearbeiten, indem er eine neue Version des Pakets speichert oder das vorhandene Paket löscht. (DTS ändert ein Paket, indem eine neue Version des Pakets gespeichert wird. DTS überschreibt die aktuelle Version des Pakets nicht.)
Das potenzielle Sicherheitsproblem tritt auf, wenn eine Anwendung unter Verwendung einer Anmeldung, die DTS-Pakete besitzt, eine Verbindung zu SQL Server herstellt. In einem solchen Fall besteht das Risiko, dass ein SQL Injection-Angriff vorhandene Pakete ändert oder löscht.
Betroffene gespeicherte DTS-Systemprozeduren
Die folgende Liste enthält die gespeicherten DTS-Systemprozeduren, für die die Berechtigung zum Ausführen der Rolle PUBLIC erteilt wird, wodurch ein potenzielles Sicherheitsproblem entsteht.
sp_add_dtspackage
sp_drop_dtspackage
sp_dump_dtslog_all
sp_dump_dtspackagelog
sp_dump_dtssteplog
sp_dump_dtstasklog
sp_enum_dtspackagelog
sp_enum_dtspackages
sp_enum_dtssteplog
sp_enum_dtstasklog
sp_get_dtspackage
sp_get_dtsversion
sp_log_dtspackage_begin
sp_log_dtspackage_end
sp_log_dtsstep_begin
sp_log_dtsstep_end
sp_log_dtstask
sp_make_dtspackagename
sp_reassign_dtspackageowner
Nicht betroffene gespeicherte DTS-Systemprozeduren
Die folgende Liste enthält die gespeicherten DTS-Systemprozeduren, für die die Berechtigung zum Ausführen nicht der Rolle PUBLIC erteilt wird:
sp_add_dtscategory
sp_drop_dtscategory
sp_enum_dtscategories
sp_modify_dtscategory
sp_reassign_dtspackagecategory
Obwohl diese gespeicherten Systemprozeduren "dts" im Namen aufweisen, tritt bei Ihnen nicht das in diesem Thema beschriebene potenzielle Sicherheitsproblem auf.
Minimieren des potenziellen Sicherheitsproblems
Um die Sicherheit von DTS-Paketen zu erhöhen, hat SQL Server 2008 die Standardeinstellungen in den folgenden Fällen geändert:
Neue Installation. Wenn Sie SQL Server 2008 neu installieren, wird die Berechtigung zum Ausführen für die gespeicherten DTS-Systemprozeduren für die Rolle PUBLIC aufgehoben. Berechtigungen zum Verwalten und Ausführen von DTS-Paketen werden nur an und über die folgenden Integration Services-Rollen auf Datenbankebene vergeben:
db_ssisadmin
db_ssisltduser
db_ssisoperator
Wenn Sie später DTS-Pakete in die msdb-Datenbank in dieser Instanz von SQL Server 2008 importieren, können nur Konten, die zu diesen Integration Services-Rollen gehören, die DTS-Pakete erfolgreich verwalten und ausführen.
Aktualisieren. Wenn Sie eine frühere Version von SQL Server auf SQL Server 2008 aktualisieren, wird die Berechtigung zum Ausführen für die gespeicherten DTS-Systemprozeduren für die Rolle PUBLIC nicht aufgehoben. Dadurch wird die Kompatibilität mit vorhandenen Anwendungen beibehalten. Durch das Update wird die Berechtigung zum Ausführen auch den drei Integration Services-Rollen auf Datenbankebene erteilt, die weiter oben in diesem Thema genannt wurden. Die gespeicherte Prozedur, die im folgenden Abschnitt beschrieben wird, sollte so schnell wie möglich von einem Systemadministrator ausgeführt werden, damit die Zuordnung der Berechtigung zum Ausführen zur Rolle PUBLIC aufgehoben wird.
Weitere Informationen zu Integration Services-Rollen finden Sie unter Verwenden von Integration Services-Rollen.
Verwenden der neuen gespeicherten Prozedur sp_dts_secure
SQL Server 2008 umfasst eine neue gespeicherte Systemprozedur, sp_dts_secure, die zum Verwalten der Sicherheit von DTS-Paketen dient. Diese Prozedur verfügt über einen erforderlichen Eingabeparameter. Dieser Parameter widerruft entweder öffentliche Berechtigungen zum Ausführen für die gespeicherten DTS-Systemprozeduren oder gewährt diese:
Wenn Sie öffentliche Berechtigungen zum Ausführen aufheben und den Zugriff nur für und über die Integration Services-Rollen auf Datenbankebene gewähren möchten, führen Sie die Prozedur sp_dts_secure mit dem Parameter 1 aus:
sp_dts_secure 1
Wenn Sie den Zugriff auf gespeicherte DTS-Systemprozeduren einschränken möchten, führen Sie diese Prozedur kurz nach dem Update aus, und wenden Sie die Integration Services-Rollen auf Datenbankebene an.
Hinweis Wenn Sie SQL Server 2008 neu installieren, werden beim Setup zwei Aktionen für die gespeicherten DTS-Systemprozeduren ausgeführt. Das Setup hebt zuerst die Berechtigung zum Ausführen für PUBLIC auf. Anschließend werden die Berechtigung zum Ausführen den drei Integration Services-Rollen auf Datenbankebene erteilt, die weiter oben in diesem Thema genannt wurden. Wenn Sie jedoch sp_dts_secure 1 manuell ausführen, hebt diese gespeicherte Prozedur die Berechtigung zum Ausführen nur für die gespeicherten DTS-Systemprozeduren für PUBLIC auf. Sie müssen die Integration Services-Rollen auf Datenbankebene separat anwenden.
Wenn Sie öffentliche Berechtigungen zum Ausführen für die gespeicherte DTS-Prozedur erteilen möchten, führen Sie die Prozedur sp_dts_secure mit dem Parameter 0 aus:
sp_dts_secure 0
Sie können diese Prozedur in einem neuen Installationsszenario verwenden, wenn Sie die Kompatibilität mit vorhandenen Anwendungen beibehalten möchten, während Sie die Reaktivierung der Sicherheitseinschränkungen vorbereiten.
|