Назад | Перейти на главную страницу

Системные разрешения прокси-сервера MSSQL, необходимые для выполнения шагов PowerShell

Я начал задавать этот вопрос администратору баз данных StackExchange, но решил, что это, вероятно, будет скорее вопрос безопасности Windows Server.

SQL Server 2016 SP1 + CU на Server 2012 R2.

Я пытаюсь выполнить шаг PowerShell в задании агента SQL с использованием прокси-пользователя, и у меня возникает проблема с SQL, пытающимся выполнить уборку перед выполнением любого кода.

Итак, прокси-пользователь включен в подсистему SQL Agent PowerShell. Я могу сделать образец задания всего за один шаг, чтобы запустить «Get-Date». Ошибки работы:

Executed as user: Domain\ProxyUser. A job step received an error at line 1 in a PowerShell script. The corresponding line is 'set-executionpolicy RemoteSigned -scope process -Force'. Correct the script and reschedule the job. The error information returned by PowerShell is: 'Access denied   '.  Process Exit Code -1.  The step failed.

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

Если я помещу прокси-пользователя в локальных администраторов на машине, проблема исчезнет, ​​и сценарий будет работать нормально. Я вижу этот доступ в журналах безопасности Windows в системе:

Object:
    Object Server:  Security
    Object Type:    File
    Object Name:    \Device\ConDrv
    Object Handle:  0x4

Process Information:
    Process ID: 0x6350
    Process Name:   C:\Windows\System32\conhost.exe

Requested Operation:
    Desired Access: DELETE
            READ_CONTROL
            WRITE_DAC
            WRITE_OWNER
            SYNCHRONIZE
            ReadData (or ListDirectory)
            WriteData (or AddFile)
            AppendData (or AddSubdirectory or CreatePipeInstance)
            ReadEA
            WriteEA
            Execute/Traverse
            DeleteChild
            ReadAttributes
            WriteAttributes

Privileges:     SeTakeOwnershipPrivilege

Похоже, это в основном та же проблема, что и у @MaddHatter четыре года назад по этой ссылке:

Сбой задания Powershell агента SQL с прокси без прав администратора

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

Вы можете попытаться увидеть, что происходит с процессом SQLAgent (или, возможно, PowerShell), используя Sysinternals Process Monitor:
https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx
С помощью этого инструмента вы сможете увидеть, откуда приходит сообщение «Доступ запрещен».

Другой вариант - использовать шаг «Операционная система (CmdExec)» вместо powershell и вызвать сценарий powershell следующим образом:

powershell.exe -File "C:\Path\To\File.ps"