Problema do Double Hop com o SQL Server 2008

6

Estou tentando configurar o seguinte cenário. Eu tenho 3 servidores, eles estão todos no mesmo domínio.

  • O servidor A possui um aplicativo da Web que é executado na conta de serviço (domínio), dom \ web.
  • O servidor B tem uma instância do SQL Server 2008 R2 que é executada na conta de serviço (domínio), dom \ sql.
  • O servidor C tem uma instância do SQL Server 2008 R2 que é executada na conta de serviço (domínio), dom \ sql.

Os servidores B e C estão no cluster SQL. Instâncias de B e C são servidores vinculados.

Quando executo o SQL Server Management Studio a partir de A e conecto a B usando minha conta de domínio (dom \ usr), tento executar a consulta que seleciona dados de B e C e funciona.

Quando eu tento o aplicativo da web que tenta o mesmo, recebo o erro:

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

Eu vejo que a conexão no SQL tem auth_scheme KERBEROS para o usuário dom \ web, portanto não é NTLM.

Além disso, a conta de domínio dom \ web não selecionou a opção "a conta é confidencial e não pode ser delegada" no AD.

Eu também acho que o SPN está configurado corretamente porque o salto duplo não funcionaria no primeiro caso.

Isso é um erro no servidor C:

Source Logon

Message Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. Reason: Token-based server access validation failed with an infrastructure error. Check for previous errors. [CLIENT: 10.65.10.53]

Source Logon

Message Error: 18456, Severity: 14, State: 11.

    
por dunno 26.05.2011 / 11:20

5 respostas

2

Acredito que o IIS tenha o site definido como "Anônimo" com a conta IUSR. Isso atravessa o domínio como LOGON ANÔNIMO.

Se você abrir o gerenciador do IIS, no lado esquerdo há uma árvore. Nesta árvore, expanda o servidor, expanda "Sites" e clique no site que você está usando para este projeto (por exemplo, Site padrão). No lado direito do gerenciador do IIS, clique duas vezes no ícone "Autenticação". Na próxima tela, clique com o botão direito do mouse em "Autenticação Anônima" e escolha "Editar" no menu de contexto. Verifique se "Usuário específico" é selecionado e clique no botão "Definir". Altere o usuário para dom \ web e digite a senha correta. Clique em OK.

Neste ponto, você pode ter um problema com o dom \ web não ter acesso ao servidor SQL. Você terá que criar um login SQL para dom \ web e, em seguida, criar um usuário no banco de dados ao qual você deseja que o dom \ web tenha acesso.

    
por 21.07.2011 / 17:48
1

Para adicionar aos outros - estive na situação em que a execução da consulta funciona a partir do SSMS, mas não do IIS por meio de um front-end de aplicativo.

Eu uso principalmente esses dois links apenas para resolver os problemas. Há tantas configurações diferentes para o Active Directory, arquivos de configuração, IIS e O / S a considerar e pode ser algo que você não espera. A chave é saber o que o sistema operacional / IIS / SQL Server acha que está acontecendo, veja o link DELEGCONFIG abaixo.

Portanto, o link para o que é a Bíblia Kerberos para configurar o SQL Server corretamente - link . Eu sei que é específico para o Reporting Services, mas ainda se aplica a um servidor de aplicativos, como você pode considerar o Reporting Services para ser outro aplicativo.

Descobri que a melhor maneira de solucionar problemas de autenticação é com uma ferramenta chamada DELEGCONFIG; Ele ajuda você a configurar os SPN corretos para que o Kerberos funcione. Você pode encontrar essa ferramenta aqui: link . Esse é um site do IIS que você instala no servidor e informa se os SPNs e a delegação estão configurados corretamente. Também pode fazer as alterações para você. Eu corro até que todas as verificações estejam verdes - você entenderá se você executar a ferramenta.

Eu não deixo o site DELEGCONFIG por perto na produção, mas ao configurar ou ter seus administradores de produção configurando os servidores db / app, eles podem usá-lo para descobrir as coisas. Depois de fazer isso corretamente, remova o site ou oculte-o e proteja-o.

HTH

    
por 27.09.2011 / 01:33
0

Crie um login para dom \ web nos servidores B e C e conceda acesso aos seus bancos de dados para o login recém-criado.

    
por 27.05.2011 / 22:08
0

Apenas para definir minhas suposições:

  • Você deseja que a identidade do usuário do aplicativo da Web seja usada no SQL
    • Isso faz com que você precise usar o Kerberos (para autenticação de salto duplo)
    • Limitando você a navegadores compatíveis com Kerberos (IE, Chrome, Firefox (com alterações de configurações))
    • Significa que você precisa configurar um Nome Principal de Serviço para o aplicativo da web contra o dom \ web
  • Você está usando o IIS 6 ou 7 como o servidor da web
  • O gerenciamento de identidades do seu aplicativo da web foi criado para oferecer suporte ao Kerberos, pois ele é um provedor de associação ASP .NET criado com base no Windows Auth

Então, como você mencionou o SPN, presumo que tenha registrado um usando algo semelhante a este:

setspn -S http/webapp.fqdn.tld dom\web

Você então ativou a delegação na conta de usuário dom \ web? Para que o salto duplo funcione, a conta do usuário que está executando o aplicativo da Web precisa ter permissão para passar essas credenciais novamente. Nas propriedades da conta de usuário no domínio, localize a guia Delegação e ative "Delegação de confiança para qualquer serviço (kerberos)".

Quando tudo estiver correto, verifique se o site do IIS está configurado para passar pelo Auth do Windows e não usar a conta NT USER \ Anonymous.

Neste ponto, você pode verificar se o Kerberos e o IIS estão todos configurados corretamente executando klist na linha de comando. Isso resultará em todos os problemas de tickets do Kerberos para o usuário atualmente conectado. Procure um que tenha Server: http/webapp.fqdn.tld e verifique se forwardable e ok_as_delegate estão definidos.

A seguir (como sugerido acima), adicione um grupo de usuários que provavelmente usarão o aplicativo no SQL e darão permissão ao banco de dados conforme necessário.

... é quase 01:00. Acho que posso dar um descanso às minhas sugestões por enquanto. Espero que algo aí te ajude, vou tentar adicionar mais amanhã no trabalho. (Estou na Nova Zelândia, daí o estranho fuso horário).

    
por 24.07.2011 / 14:42
0

Lembro-me de ter ocorrido um problema semelhante no passado com o salto duplo que alguns colegas resolveram tendo as contas de serviço SQL como membros do grupo Administradores de Domínio quando os serviços foram iniciados e, em seguida, removendo-os posteriormente. Foi algum problema com o SPN.

Esse provavelmente não era o jeito certo de corrigir o problema, mas tudo estava funcionando em um período crucial de tempo de inatividade não planejado.

    
por 30.11.2011 / 23:10