Защита пакетов служб 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
Можно использовать эту процедуру в новом сценарии установки, если нужно сохранить совместимость с существующими приложениями при подготовке к повторному введению ограничений безопасности.
|
См. также