Protegendo pacotes DTS armazenados no SQL Server

Para pacotes criados no Microsoft SQL Server 2000 Data Transformation Services (DTS) e armazenados no banco de dados msdb, há uma problema de segurança potencial. Essa preocupação enfatiza os procedimentos armazenados de sistema que realizam as tarefas mais comuns para esses pacotes DTS. (Um exemplo de um procedimento armazenado de sistema que executa uma tarefa comum é sp_enum_dtspackages, que lista os pacotes DTS armazenados no banco de dados msdb. Outro exemplo é o procedimento armazenado de sistema de sp_get_dtspackage que carrega um pacote DTS em um aplicativo cliente.) O SQL Server 2000 Enterprise Manager, o SQL Server Management Studio e a API do DTS usam esses procedimentos armazenados para realizar as tarefas comuns.

Assim que você entender o problema de segurança potencial associado aos procedimentos armazenados de sistema DTS, poderá executar as ações adequadas para reduzir essa preocupação.

Observação importanteImportante

O Data Transformation Services (DTS) foi preterido. Para obter mais informações, consulte DTS (Data Transformation Services).

Entendendo o problema de segurança potencial

Nas versões do SQL Server anteriores ao SQL Server 2008, o direito Executar em alguns dos procedimentos armazenados do sistema DTS são concedidos a PUBLIC. Com essa configuração, qualquer um que possa fazer logon no banco de dados msdb pode fazer as seguintes tarefas:

  • Obtenha uma lista de pacotes DTS.

  • Recupere os próprios pacotes.

  • Salve os novos pacotes.

No entanto, somente o proprietário de um pacote pode modificar um pacote existente salvando uma nova versão dele ou excluir um pacote existente. (O DTS modifica um pacote salvando uma versão nova dele. O DTS não substitui a versão atual do pacote.)

O problema de segurança potencial ocorrerá se um aplicativo se conectar ao SQL Server usando um logon que tenha pacotes DTS. Neste cenário, há o risco de um ataque de injeção SQL modificar ou excluir os pacotes existentes.

Procedimentos armazenados de sistema do DTS afetados

A lista a seguir identifica os procedimentos armazenados de sistema do DTS cujo direito Executar não é concedido a PUBLIC e que podem causar um problema de segurança potencial:

  • 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

Procedimentos armazenados de sistema do DTS que não são afetados

A lista a seguir identifica os procedimentos armazenados de sistema do DTS cujo direito Executar não é concedido a PUBLIC:

  • sp_add_dtscategory

  • sp_drop_dtscategory

  • sp_enum_dtscategories

  • sp_modify_dtscategory

  • sp_reassign_dtspackagecategory

Embora esses procedimentos armazenados de sistema tenham "dts" em seu nome, eles não representam o problema de segurança potencial descrito por este tópico.

Reduzindo o problema de segurança potencial

Para aumentar a segurança de pacotes do DTS, o SQL Server 2008 alterou as configurações padrão nas seguintes circunstâncias:

  • Nova instalação Quando você executa uma nova instalação do SQL Server 2008, o direito Executar nos procedimentos armazenados de sistema do DTS é revogado para PUBLIC. Permissões para gerenciar e executar pacotes DTS somente são concedidas às seguintes funções de nível de banco de dados do Integration Services e por meio delas:

    • db_ssisadmin

    • db_ssisltduser

    • db_ssisoperator

    Se depois você importar pacotes do DTS para o banco de dados msdb nesta instância do SQL Server 2008, somente contas que pertencem a essas funções do Integration Services poderão gerenciar e executar os pacotes DTS com êxito.

  • Atualização. Quando você atualiza uma versão anterior do SQL Server para o SQL Server 2008, o direito Executar nos procedimentos armazenados de sistema do DTS não é revogado para PUBLIC. Isso preserva a compatibilidade com os aplicativos existentes. A atualização também concede permissões para Executar às funções de nível de banco de dados do Integration Services listadas anteriormente neste tópico. Assim que possível, um administrador de sistema deve executar o procedimento armazenado descrito na seção a seguir para revogar o direito Executar de PUBLIC.

Para obter informações sobre funções do Integration Services, consulte Usando funções do Integration Services.

Usando o novo procedimento armazenado sp_dts_secure

O SQL Server 2008 inclui um novo procedimento armazenado de sistema, sp_dts_secure, para gerenciar a segurança de pacotes do DTS. Este procedimento tem um parâmetro de entrada obrigatório. Este parâmetro revoga ou concede permissões Executar públicas nos procedimentos armazenados de sistema do DTS:

  • Para revogar permissões Executar públicas e conceder acesso apenas às funções de nível de banco de dados do Integration Services, e por meio delas, execute o procedimento armazenado sp_dts_secure com o parâmetro de 1:

    sp_dts_secure 1

    Para restringir o acesso aos procedimentos armazenados do DTS aos usuários autorizados, execute este procedimento logo após a atualização e aplique as funções de nível de banco de dados do Integration Services.

    ObservaçãoObservação

    Quando você executar uma nova instalação do SQL Server 2008, a Instalação executará duas ações nos procedimentos armazenados de sistema do DTS. Primeiro, a Instalação revoga o direito Executar para PUBLIC. Em seguida, a Instalação concede direitos Executar às funções de nível de banco de dados do Integration Services listadas anteriormente neste tópico. No entanto, quando você executa manualmente sp_dts_secure 1, esse procedimento armazenado revoga apenas o direito Executar nos procedimentos armazenados de sistema do DTS para PUBLIC. Você deve aplicar as funções de nível de banco de dados do Integration Services separadamente.

  • Para conceder as permissões Executar públicas no procedimento armazenado DTS, execute o procedimento sp_dts_secure com o parâmetro definido para 0:

    sp_dts_secure 0

    Você poderá usar esse procedimento em um novo cenário de instalação se tiver que preservar a compatibilidade com os aplicativos existentes enquanto se prepara para habilitar as restrições de segurança novamente.

Ícone do Integration Services (pequeno) Fique atualizado com o Integration Services

Para obter os mais recentes downloads, artigos, exemplos e vídeos da Microsoft, bem como soluções selecionadas da comunidade, visite a página do Integration Services no MSDN ou TechNet:

Para receber uma notificação automática das atualizações, assine os feeds RSS disponíveis na página.