Sichern von in SQL Server gespeicherten DTS-Paketen

Bei Paketen, die in Microsoft SQL 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.

Wichtiger HinweisWichtig

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.

    HinweisHinweis

    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.

Integration Services (kleines Symbol) Bleiben Sie mit Integration Services auf dem neuesten Stand

Die neuesten Downloads, Artikel, Beispiele und Videos von Microsoft sowie ausgewählte Lösungen aus der Community finden Sie auf der Integration Services-Seite von MSDN oder TechNet:

Abonnieren Sie die auf der Seite verfügbaren RSS-Newsfeeds, um automatische Benachrichtigungen zu diesen Aktualisierungen zu erhalten.