Защита пакетов служб DTS, сохраненных в SQL Server

Существует потенциальная проблема безопасности для пакетов, созданных в службах DTS Microsoft SQL Server 2000 и сохраненных в базе данных msdb. Эта проблема связана с системными хранимыми процедурами, которые выполняют наиболее типичные задачи для этих пакетов служб DTS. (Пример системной хранимой процедуры, которая выполняет типичную задачу, — хранимая процедура sp_enum_dtspackages, которая перечисляет пакеты служб DTS, сохраненные в базе данных msdb. Другой пример системной хранимой процедуры — хранимая процедура sp_get_dtspackage, которая загружает пакет служб DTS в клиентское приложение.) Программа SQL Server 2000 Enterprise Manager, среда Среда SQL Server Management Studio и API-интерфейс DTS используют эти хранимые процедуры для выполнения типичных задач.

Поняв потенциальные проблемы безопасности, связанные с системными хранимыми процедурами служб DTS, можно предпринять соответствующие меры для снижения опасности.

Важное примечаниеВажно!

Службы DTS являются устаревшими. Дополнительные сведения см. в разделе Службы DTS.

Основные сведения о потенциальной проблеме безопасности

В версиях SQL Server, предшествующих SQL Server 2008, право на выполнение некоторых системных хранимых процедур DTS предоставляется роли PUBLIC. Используя этот параметр, каждый, кто может осуществлять вход в базу данных msdb, может выполнить следующие задачи:

  • получить список пакетов служб DTS;

  • получить сами пакеты;

  • сохранить новые пакеты.

Однако только владелец пакета может изменить существующий пакет, сохранив новую версию пакета, или удалить существующий пакет. (Службы DTS изменяют пакет, сохраняя новую версию пакета. Службы DTS не перезаписывают текущую версию пакета.)

Потенциальная проблема безопасности возникает, если приложение подключается к SQL Server с использованием имени входа, которое владеет пакетами служб DTS. В этом случае существует опасность изменения или удаления существующих пакетов в результате атаки типа «инъекция SQL».

Затронутые системные хранимые процедуры служб DTS

Следующий список идентифицирует системные хранимые процедуры DTS, право на выполнение которых предоставлено роли PUBLIC и которые могут вызвать потенциальную проблему безопасности:

  • 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

Не затронутые системные хранимые процедуры служб DTS

Следующий список идентифицирует системные хранимые процедуры служб DTS, право на выполнение которых не предоставлено роли PUBLIC:

  • sp_add_dtscategory

  • sp_drop_dtscategory

  • sp_enum_dtscategories

  • sp_modify_dtscategory

  • sp_reassign_dtspackagecategory

Несмотря на наличие символов «dts» в имени, эти системные хранимые процедуры не несут потенциальной опасности, описанной в данном разделе.

Уменьшение потенциальной угрозы безопасности

Чтобы повысить безопасность пакетов служб DTS, в SQL Server 2008 изменены параметры по умолчанию в следующих обстоятельствах.

  • Новая установка. При выполнении новой установки SQL Server 2008 право на выполнение системных хранимых процедур DTS отменяется для роли PUBLIC. Разрешения на управление и запуск пакетов служб DTS предоставляются только следующим ролям Integration Services уровня базы данных или через них:

    • db_ssisadmin

    • db_ssisltduser

    • db_ssisoperator

    Если впоследствии импортировать пакеты служб DTS в базу данных msdb в этом экземпляре SQL Server 2008, только учетные записи, принадлежащие к этим ролям Integration Services, смогут успешно управлять и запускать пакеты служб DTS.

  • Обновление. При обновлении прежней версии SQL Server до SQL Server 2008 право на выполнение системных хранимых процедур DTS не отменяется для роли PUBLIC. Таким образом, сохраняется совместимость с существующими приложениями. Обновление также предоставляет разрешения на выполнение трем ролям служб Integration Services уровня базы данных, перечисленным ранее в данном разделе. Системный администратор должен безотлагательно запустить хранимую процедуру, описанную в следующем разделе, чтобы отменить право на выполнение для роли PUBLIC.

Сведения о ролях служб Integration Services см. в разделе Использование ролей служб Integration Services.

Использование новой хранимой процедуры sp_dts_secure

SQL Server 2008 располагает новой системной хранимой процедурой, sp_dts_secure, для управления безопасностью пакетов служб DTS. Эта процедура имеет один обязательный входной параметр. Этот параметр отменяет или предоставляет разрешения на выполнение системных хранимых процедур служб DTS для ролей PUBLIC.

  • Чтобы отменить разрешения на выполнение для ролей PUBLIC и предоставить доступ только ролям служб Integration Services уровня базы данных или через них, запустите процедуру sp_dts_secure с параметром 1:

    sp_dts_secure 1

    Чтобы предоставить доступ к хранимым процедурам DTS только зарегистрированным пользователям, запустите эту процедуру после обновления и примените роли служб Integration Services уровня базы данных.

    ПримечаниеПримечание

    При выполнении новой установки SQL Server 2008 программа установки выполняет два действия над системными хранимыми процедурами служб DTS. Программа установки отменяет право на выполнение для роли PUBLIC. Затем программа установки предоставляет права на выполнение ролям служб Integration Services уровня базы данных, перечисленным ранее в данном разделе. Однако при ручном запуске sp_dts_secure 1 эта хранимая процедура только отменяет право на выполнение системных хранимых процедур служб DTS для роли PUBLIC. Роли служб Integration Services уровня базы данных необходимо применить отдельно.

  • Чтобы предоставить разрешения на выполнение хранимых процедур служб DTS для роли PUBLIC, запустите процедуру sp_dts_secure с параметром 0:

    sp_dts_secure 0

    Можно использовать эту процедуру в новом сценарии установки, если нужно сохранить совместимость с существующими приложениями при подготовке к повторному введению ограничений безопасности.

Значок служб Integration Services (маленький) Будьте в курсе новых возможностей cлужб Integration Services

Чтобы загружать новейшую документацию, статьи, образцы и видеоматериалы от корпорации Майкрософт, а также лучшие решения от участников сообщества, посетите страницу служб Integration Services на сайтах MSDN или TechNet:

Чтобы получать автоматические уведомления об этих обновлениях, подпишитесь на RSS-каналы, предлагаемые на этой странице.