J'ai commencé à poser cette question sur DBA StackExchange, mais j'ai décidé qu'il s'agirait probablement d'une question de type sécurité Windows Server.
SQL Server 2016 SP1 + CU sur Server 2012 R2.
J'essaie d'exécuter une étape PowerShell dans un travail d'agent SQL en utilisant un utilisateur proxy et je rencontre un problème avec SQL qui tente de faire le ménage avant d'exécuter du code.
Ainsi, l'utilisateur proxy est inclus dans le sous-système PowerShell de l'agent SQL. Je peux créer un exemple de travail en une seule étape, pour exécuter "Get-Date". Les erreurs de travail sur:
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 et LocalMachine sont tous définis sur RemoteSigned. Il ne s'agit donc pas d'un problème de portée et cela produirait de toute façon une erreur différente.
Si je mets l'utilisateur proxy dans les administrateurs locaux sur la machine, le problème disparaît et le script s'exécute normalement. Je vois cet accès dans les journaux de sécurité Windows sur le système:
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
Il semble que ce soit fondamentalement le même problème que celui de @MaddHatter il y a quatre ans:
Echec du travail Powershell de l'agent SQL avec un proxy non-administrateur
Est-ce que le seul choix est de mettre cet utilisateur dans les administrateurs locaux? Cela ressemble à une approche assez complexe du problème. Comment puis-je adapter au mieux les autorisations pour ces utilisateurs proxy afin que le travail puisse être exécuté?