Sicurezza di pacchetti DTS archiviati in SQL Server

Per i pacchetti creati in Microsoft SQL Server 2000 Data Transformation Services (DTS) e archiviati nel database msdb, esiste un problema potenziale di sicurezza. Tale problematica riguarda le stored procedure di sistema che eseguono la maggior parte delle attività comuni per questi pacchetti DTS. Un esempio di una stored procedure di sistema che esegue un'attività comune è sp_enum_dtspackages che elenca i pacchetti DTS archiviati nel database msdb. Un altro esempio è la stored procedure di sistema sp_get_dtspackage che carica un pacchetto DTS in un'applicazione client. SQL Server 2000 Enterprise Manager, SQL Server Management Studio e l'API DTC utilizzano tutti queste stored procedure per eseguire le attività comuni.

Appena si comprende il problema potenziale di sicurezza associato alle stored procedure di sistema DTS, è quindi possibile intraprendere le azioni appropriate per ridurre tali rischi.

Nota importanteImportante

Data Transformation Services (DTS) rappresenta una funzionalità deprecata. Per ulteriori informazioni, vedere Data Transformation Services (DTS).

Informazioni sul problema potenziale di sicurezza

Nelle versioni di SQL Server precedenti a SQL Server 2008, l'autorizzazione Execute per alcune stored procedure di sistema DTS è impostata su PUBLIC. Con questa impostazione, chiunque possa accedere al database msdb può eseguire le attività seguenti:

  • Ottenere un elenco di pacchetti DTS.

  • Recuperare i pacchetti.

  • Salvare nuovi pacchetti.

Tuttavia, solo il proprietario di un pacchetto può modificare un pacchetto esistente salvando una nuova versione del pacchetto o eliminare un pacchetto esistente. In DTS un pacchetto viene modificato salvandone una nuova versione, senza sovrascrivere la versione corrente del pacchetto.

Il problema potenziale di sicurezza si verifica se un'applicazione si connette a SQL Server utilizzando un account di accesso proprietario dei pacchetti DTS. In questo scenario vi è il rischio che un attacco intrusivo nel codice SQL possa modificare o eliminare i pacchetti esistenti.

Stored procedure di sistema DTS interessate

Nell'elenco seguente sono incluse le stored procedure di sistema DTS la cui autorizzazione Execute è impostata su PUBLIC e che possono provocare un problema potenziale di sicurezza:

  • 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

Stored procedure di sistema DTS non interessate

Nell'elenco seguente sono incluse le stored procedure di sistema DTS la cui autorizzazione Execute non è impostata su PUBLIC:

  • sp_add_dtscategory

  • sp_drop_dtscategory

  • sp_enum_dtscategories

  • sp_modify_dtscategory

  • sp_reassign_dtspackagecategory

Anche se queste stored procedure di sistema contengono "dts" nel nome, non presentano il problema potenziale di sicurezza illustrato in questo argomento.

Riduzione del problema potenziale di sicurezza

Per aumentare la sicurezza di pacchetti DTS, in SQL Server 2008 sono state modificate le impostazioni predefinite nelle circostanze seguenti:

  • Nuova installazione. Durante una nuova installazione di SQL Server 2008 è stata revocata l'autorizzazione Execute per PUBLIC nelle stored procedure di sistema DTS. Le autorizzazioni per la gestione e l'esecuzione dei pacchetti DTS vengono concesse solo ai seguenti ruoli a livello di database di Integration Services o tramite essi:

    • db_ssisadmin

    • db_ssisltduser

    • db_ssisoperator

    Se successivamente si importano pacchetti DTS nel database msdb in questa istanza di SQL Server 2008, solo gli account che appartengono a questi ruoli di Integration Services saranno in grado di gestire ed eseguire correttamente i pacchetti DTS.

  • Aggiornamento. Durante l'aggiornamento di una versione precedente di SQL Server a SQL Server 2008 non è stata revocata l'autorizzazione Execute per PUBLIC nelle stored procedure di sistema DTS. In questo modo viene mantenuta la compatibilità con le applicazioni esistenti. L'aggiornamento concede inoltre le autorizzazioni Execute a tre ruoli a livello di database di Integration Services riportati precedentemente in questo argomento. L'amministratore di sistema deve eseguire non appena possibile la stored procedure descritta nella sezione seguente per revocare l'autorizzazione Execute da PUBLIC.

Per ulteriori informazioni sui ruoli di Integration Services, vedere Utilizzo dei ruoli di Integration Services.

Utilizzo della nuova stored procedure sp_dts_secure

SQL Server 2008 include una nuova stored procedure di sistema, sp_dts_secure, per la gestione della sicurezza dei pacchetti DTS. Questa procedura ha un parametro di input obbligatorio. Questo parametro revoca o concede le autorizzazioni Execute pubbliche sulle stored procedure di sistema DTS:

  • Per revocare le autorizzazioni Execute pubbliche e concedere l'accesso solo ai ruoli a livello di database di Integration Services o tramite essi, eseguire la stored procedure sp_dts_secure con il parametro impostato su 1:

    sp_dts_secure 1

    Per limitare l'accesso alle stored procedure DTS agli utenti autorizzati, eseguire questa stored procedure subito dopo l'aggiornamento e l'applicazione dei ruoli a livello di database di Integration Services.

    Nota

    Quando si esegue una nuova installazione di SQL Server 2008, vengono eseguite due azioni sulle stored procedure di sistema DTS. Viene innanzitutto revocata l'autorizzazione Execute per PUBLIC, quindi vengono concesse le autorizzazioni Execute ai ruoli a livello di database di Integration Services riportati precedentemente in questo argomento. Tuttavia, quando si esegue manualmente sp_dts_secure 1, questa stored procedure revoca solo l'autorizzazione Execute sulle stored procedure di sistema DTS per PUBLIC. È necessario applicare i ruoli a livello di database di Integration Services separatamente.

  • Per concedere le autorizzazioni Execute pubbliche sulla stored procedure DTS, eseguire sp_dts_secure con il parametro impostato su 0:

    sp_dts_secure 0

    È possibile utilizzare questa stored procedure nel caso di una nuova installazione se è necessario mantenere la compatibilità con le applicazioni esistenti mentre ci si prepara ad abilitare nuovamente le restrizioni di sicurezza.

Icona di Integration Services (piccola) Rimanere aggiornati con Integration Services

Per informazioni sui download, gli articoli, gli esempi e i video Microsoft più recenti, nonché sulle soluzioni selezionate dalla community, visitare la pagina Integration Services su MSDN o Technet:

Per ricevere notifica automatica su questi aggiornamenti, sottoscrivere i feed RSS disponibili nella pagina.