Поделиться через


Обеспечение безопасности агента SQL Server

Область применения: SQL Server Управляемый экземпляр SQL Azure

Внимание

В Управляемом экземпляре Azure SQL в настоящее время поддерживается большинство функций агента SQL Server (но не все). Подробные сведения см. в статье Различия в T-SQL между Управляемым экземпляром SQL Azure и SQL Server.

Агент SQL Server позволяет администратору базы данных выполнять каждый шаг задания в контексте безопасности, имеющем только те разрешения, которые необходимы для выполнения шага задания, что обеспечивается учетной записью-посредником агента SQL Server. Для установки разрешений для конкретного шага задания необходимо создать учетную запись-посредник, обладающую необходимыми разрешениями, а затем назначить ее шагу задания. Учетная запись-посредник может быть назначена нескольким этапам задания. Шагам задания, которым требуются одинаковые разрешения, назначают одну и ту же учетную запись-посредник.

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

Предоставление доступа к агенту SQL Server

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

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

Эти роли хранятся в базе данных msdb . По умолчанию ни один из пользователей ни в одну из этих ролей не входит. Членство в них должно быть предоставлено явным образом. Пользователи, являющиеся членами предопределенных ролей сервера sysadmin, имеют полный доступ к агент SQL Server и не должны быть членами этих предопределенных ролей базы данных для использования агент SQL Server. Если пользователь не является членом одной из этих ролей базы данных или роли sysadmin, узел агент SQL Server недоступен для них при подключении к SQL Server с помощью SQL Server Management Studio.

Члены указанных ролей базы данных могут просматривать и выполнять задания, владельцами которых они являются, а также создавать шаги задания, которые выполняются от имени существующих учетных записей-посредников. Дополнительные сведения о конкретных разрешениях, связанных с каждой из этих ролей, см. в разделе Предопределенные роли базы данных агента SQL Server.

Члены предопределенной роли сервера sysadmin имеют разрешение на создание, изменение и удаление учетных записей-посредников. Члены роли sysadmin имеют разрешение на создание шагов задания, которые не указывают прокси-сервер, а выполняются в качестве учетной записи службы агент SQL Server, которая является учетной записью, которая используется для запуска агент SQL Server.

Рекомендации

Чтобы повысить защищенность системы безопасности агента SQL Server, следуйте следующим правилам:

  • создавайте специально выделенные учетные записи-посредники, и для выполнения шагов заданий пользуйтесь только ими;

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

  • Не запускайте службу агент SQL Server в учетной записи Microsoft Windows, являющейся членом группы администраторов Windows.

  • Посредник не может быть безопаснее хранилища учетных данных SQL Server.

  • Если пользовательские операции записи могут создавать события в журнале событий NT, то они могут создавать предупреждения через агент SQL Server.

  • Не указывайте учетную запись администратора NT в качестве учетной записи службы или учетной записи-посредника.

  • SQL Server и агент SQL Server имеют доступ к ресурсам друг друга. Эти две службы разделяют пространство одного процесса, а агент SQL Server является пользователем sysadmin для службы SQL Server.

  • Когда TSX (целевой сервер) заверяет с MSX (главный сервер), системные администраторы MSX получают общий контроль над экземпляром TSX SQL Server.

  • ACE является расширением и не может вызывать себя. Цепочка ScenarioEngine.exe (также известная как Microsoft.SqlServer.Chainer.Setup.exe) может вызывать ACE. Другие процессы узла также могут вызывать ACE.

  • ACE зависит от следующих библиотек DLL конфигурации, принадлежащих SSDP, так как эти API библиотек DLL вызываются ACE:

    • SCO — Microsoft.SqlServer.Configuration.Sco.dll, содержащий новые проверки SCO для виртуальных учетных записей;

    • Кластер — Microsoft.SqlServer.Configuration.Cluster.dll;

    • SFC — Microsoft.SqlServer.Configuration.SqlConfigBase.dll;

    • Расширение — Microsoft.SqlServer.Configuration.ConfigExtension.dll.

Связанные серверы

В некоторых сценариях, таких как Управляемый экземпляр SQL Azure, для выполнения задания агента SQL, выполняющего запрос Transact-SQL (T-SQL) на удаленном сервере через связанный сервер, необходимо сопоставить локальное имя входа с именем входа на удаленном сервере.

Используйте sp_addlinkedsrvlogin для создания сопоставления между именем входа на локальном сервере с именем входа на удаленном сервере с необходимым разрешением для выполнения запроса T-SQL. Когда задание агента SQL подключается к удаленному серверу через связанный сервер, он выполняет запрос T-SQL в контексте удаленного входа.

В следующей таблице описывается сопоставление имени входа на основе владельца задания агента SQL в Управляемый экземпляр SQL Azure:

Владелец задания агента SQL Сопоставление имени входа
Пользователь, который не является sysadmin Сопоставить локального пользователя , которому принадлежит задание агента SQL, с удаленным именем входа.
sysadmin Сопоставить всех локальных пользователей с удаленным именем входа, задав @locallogin параметру NULLзначение .

Примечание.

При Управляемый экземпляр SQL Azure локального сервера требуется создание имен входа на удаленном сервере для заданий агента SQL. Не удается правильно сопоставить пользователей, могут привести к ошибкам, таким как следующие примеры:

  • Windows logins are not supported in this version of SQL Server
  • Linked servers cannot be used under impersonation without a mapping for the impersonated login