Como habilitar o Remoting do PowerShell e o SPN para o SQL Server Reporting?

1

Eu tentei essa pergunta no Stack Exchange - Database Administrator ( link ), mas não consigo qualquer resposta, então vou tentar aqui.

Estou lutando com servidores remotos com o SQL Server Reporting Services. Meus Serviços de Relatório estão sendo executados com contas de domínio individuais, e eu configurei SPNs para eles ( HTTP/<Machine> <domain>\<user> ). Tanto quanto eu posso ver, isso efetivamente desativa o uso de comunicação remota do PowerShell, uma vez que o SPN que WinRM deve usar aponta para a conta de domínio usada pelo Reporting Services.

Não tenho nenhum problema em executar, por ex. Get-Service -ComputerName <Machine> , mas se eu tentar Get-CimInstance Win32_Service -ComputerName <machine> ou Enter-PsSession <machine> , recebo um erro semelhante a este:

Get-CimInstance : WinRM cannot process the request. The following error with errorcode 0x80090322 occurred while using Kerberos authentication: An unknown security error occurred.
Possible causes are:
-The user name or password specified are invalid.
-Kerberos is used when no authentication method and no user name are specified.
-Kerberos accepts domain user names, but not local user names.
-The Service Principal Name (SPN) for the remote computer name and port does not exist.
-The client and remote computers are in different domains and there is no trust between the two domains.
After checking for the above issues, try the following:
-Check the Event Viewer for events related to authentication.
-Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
Note that computers in the TrustedHosts list might not be authenticated.
-For more information about WinRM configuration, run the following command: winrm help config. At line:1 char:1
+ Get-CimInstance win32_service -ComputerName <machine>
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: AuthenticationError: (root\cimv2:win32_service:String) [Get-CimInstance], CimException
+ FullyQualifiedErrorId : HRESULT 0x8033809d,Microsoft.Management.Infrastructure.CimCmdlets.GetCimInstanceCommand
+ PSComputerName : <machine>

Se eu excluir o SPN em um dos meus servidores, depois de alguns segundos (um pouco rápido para a replicação do AD?), posso usar os comandos acima, mas se eu redefinir o SPN, os comandos falharão novamente após algum tempo.

Alguns dos meus serviços de relatórios precisam ser capazes de encaminhar credenciais, então espero que alguém possa me ajudar a resolver esse dilema.

Um bom dia para todos.

Hynne

    
por Carsten Hynne 16.02.2016 / 16:37

2 respostas

2

Eu acredito que encontramos a solução. Para evitar que o Reporting Services e o WinRM disputem o HTTP SPN, você pode definir um SPN específico da porta para o WinRM assim:

setspn -S HTTP/<Machine>:<port> <Machine>

É uma boa ideia criar SPNs para o nome abreviado da máquina e o FQDN.
A porta padrão é 5985 para HTTP e 5986 para HTTPS, mas acredito que ela possa ser configurada para usar portas diferentes.

Ao usar o WinRM, acabei de configurar uma sessão assim:

$CimSessionOption = New-CimSessionOption -EncodePortInServicePrincipalName
$CimSession = New-CimSession -Name ServiceSession -SessionOption $CimSessionOption -ComputerName <Machine>
Get-CimInstance Win32_Service -CimSession $CimSession

Tenha um bom dia

Hynne

    
por 18.02.2016 / 11:07
1

Além da resposta @ carsten-hynne, para criar uma sessão do PowerShell usando a porta que você usa:

$option = New-PSSessionOption -IncludePortInSPN
$pssession = New-PSSession -ComputerName MYMACHINE -SessionOption $option

Nota: Certifique-se de ter adicionado o PORT SPN da resposta do @ carsten-hynne!

    
por 24.10.2017 / 10:30