Sécurisation des packages DTS stockés dans SQL Server

Pour les packages créés dans DTS (Microsoft SQL Server 2000 Data Transformation Services) et stockés dans la base de données msdb, il existe un problème de sécurité potentiel. Ce problème concerne les procédures stockées système qui accomplissent la plupart des tâches courantes pour ces packages DTS. (L'une de ces procédures stockées système est sp_enum_dtspackages qui répertorie les packages DTS stockés dans la base de données msdb. Un autre exemple est la procédure stockée système sp_get_dtspackage qui charge un package DTS dans une application cliente.) SQL Server 2000 Enterprise Manager, SQL Server Management Studio et l'API DTS utilisent tous ces procédures stockées pour accomplir des tâches courantes.

Dès que vous comprendrez le problème de sécurité potentiel associé aux procédures stockées système DTS, vous pourrez alors prendre les mesures appropriées pour le limiter.

Important

DTS (Data Transformation Services) est déconseillé. Pour plus d'informations, consultez DTS (Data Transformation Services).

Présentation du problème de sécurité potentiel

Dans les versions de SQL Server antérieures à SQL Server 2008, le droit Execute sur certaines des procédures stockées système DTS est accordé à PUBLIC. Ce paramètre permet à toute personne qui peut se connecter à la base de données msdb d'effectuer les tâches suivantes :

  • Obtenir une liste de packages DTS.

  • Récupérer les packages eux-mêmes.

  • Enregistrer de nouveaux packages

Toutefois, seul le propriétaire d'un package peut le supprimer ou le modifier en enregistrant une nouvelle version de celui-ci. (DTS modifie un package en enregistrant une nouvelle version de celui-ci, mais ne remplace pas sa version actuelle.)

Le problème de sécurité potentiel se produit si une application se connecte à SQL Server en utilisant une connexion qui possède des packages DTS. Dans ce scénario, il y a le risque qu'une attaque par injection de code SQL modifie ou supprime les packages existants.

Procédures stockées système DTS concernées

La liste suivante identifie les procédures stockées système DTS dont le droit Execute est accordé à PUBLIC et qui peut provoquer un problème de sécurité potentiel :

  • 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

Procédures stockées système DTS non concernées

La liste suivante identifie les procédures stockées système DTS dont le droit Execute n'est pas accordé à PUBLIC :

  • sp_add_dtscategory

  • sp_drop_dtscategory

  • sp_enum_dtscategories

  • sp_modify_dtscategory

  • sp_reassign_dtspackagecategory

Bien que ces procédures stockées système aient « dts » dans leur nom, elles ne posent pas le problème de sécurité potentiel décrit dans cette rubrique.

Limitation du problème de sécurité potentiel

Pour augmenter la sécurité des packages DTS, SQL Server 2008 a modifié les paramètres par défaut dans les cas suivants :

  • Nouvelle installation. Lorsque vous procédez à une nouvelle installation de SQL Server 2008, le droit Execute sur les procédures stockées système DTS est révoqué pour PUBLIC. Les autorisations de gérer et d'exécuter les packages DTS sont uniquement accordées à et par l'intermédiaire des rôles au niveau de la base de données Integration Services suivants :

    • db_ssisadmin

    • db_ssisltduser

    • db_ssisoperator

    Si vous importez ultérieurement des packages DTS dans la base de données msdb dans cette instance de SQL Server 2008, seuls les comptes qui appartiennent à ces rôles Integration Services seront en mesure de gérer et d'exécuter les packages DTS avec succès.

  • Mise à niveau. Lorsque vous mettez à niveau une version antérieure de SQL Server à SQL Server 2008, le droit Execute sur les procédures stockées système DTS n'est pas révoqué pour PUBLIC. Cela préserve la compatibilité avec les applications existantes. La mise à niveau accorde également des autorisations Execute aux trois rôles au niveau de la base de données Integration Services précédemment répertoriés dans cette rubrique. Dès que possible, un administrateur système doit exécuter la procédure stockée décrite dans la section suivante pour révoquer le droit Execute de PUBLIC.

Pour plus d'informations sur les rôles Integration Services, consultez Utilisation des rôles Integration Services.

Utilisation de la nouvelle procédure stockée sp_dts_secure

SQL Server 2008 inclut la nouvelle procédure stockée système sp_dts_secure qui permet de gérer la sécurité des packages DTS. Cette procédure à un paramètre d'entrée requis qui révoque ou accorde des autorisations Execute publiques sur les procédures stockées DTS :

  • Pour révoquer les autorisations Execute publiques, et accorder uniquement l'accès à et par l'intermédiaire des rôles au niveau de la base de données Integration Services, exécutez la procédure sp_dts_secure avec le paramètre à la valeur 1 :

    sp_dts_secure 1

    Pour restreindre l'accès aux procédures stockées DTS aux utilisateurs autorisés, exécutez cette procédure peu après la mise à niveau et appliquez les rôles au niveau de la base de données Integration Services.

    Notes

    Lorsque vous effectuez une nouvelle installation de SQL Server 2008, le programme d'installation effectue deux actions sur les procédures stockées système DTS. Il révoque tout d'abord le droit Execute pour PUBLIC. Puis, il accorde des droits Execute aux rôles au niveau de la base de données Integration Services précédemment répertoriés dans cette rubrique. Toutefois, lorsque vous exécutez sp_dts_secure 1manuellement, cette procédure stockée révoque uniquement le droit Execute sur les procédures stockées système DTS pour PUBLIC. Vous devez appliquer les rôles au niveau de la base de données Integration Services séparément.

  • Pour accorder des autorisations Execute sur la procédure stockée DTS, exécutez la procédure sp_dts_secure avec le paramètre à la valeur 0 :

    sp_dts_secure 0

    Vous pouvez utiliser cette procédure dans le scénario d'une nouvelle installation si vous devez préserver la compatibilité avec les applications existantes lorsque vous vous préparez à réactiver les restrictions de sécurité.

Icône Integration Services (petite) Rester à jour avec Integration Services

Pour obtenir les derniers téléchargements, articles, exemples et vidéos de Microsoft, ainsi que des solutions sélectionnées par la communauté, visitez la page Integration Services sur MSDN ou TechNet :

Pour recevoir une notification automatique de ces mises à jour, abonnez-vous aux flux RSS disponibles sur la page.