4 votes

Une application Web exécutée en tant que NETWORK SERVICE peut se connecter au serveur SQL, mais le service Windows exécuté en tant que LOCAL SYSTEM ne le peut pas.

J'ai installé une application web .net sur un serveur Windows Server 2003 IIS, fonctionnant dans un pool d'applications en tant qu'application de base. NETWORK SERVICE et se connecter à SQL Server sur une autre machine en utilisant la sécurité intégrée. La machine SQL Server fonctionne également sous Windows Server 2003. L'application Web se connecte donc en tant qu'identité DOMAIN\COMPUTER$ et ce compte a un login et un utilisateur dans SQL Server, donc tout fonctionne bien.

J'ai également installé un service Windows .net sur le même serveur IIS qui se connecte à cette même machine SQL Server. Le service Windows fonctionne en tant que LOCAL SYSTEM et devrait donc également se connecter en tant qu'identité DOMAIN\COMPUTER$ . J'ai installé ce même produit dans plus d'une douzaine de sociétés différentes. Normalement, tout fonctionne comme prévu, mais dans un cas récent, le service Windows n'a pas pu se connecter à la base de données et a obtenu l'erreur suivante :

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'

Avez-vous une idée de la raison pour laquelle ce serait le cas pour LOCAL SYSTEM et non pour NETWORK SERVICE ? Pour contourner ce problème à court terme, j'ai dû utiliser un login SQL Server, mais je préférerais utiliser la sécurité intégrée s'il existe une solution simple. Il n'y avait aucun message d'erreur dans le journal des événements de la sécurité ou du système, bien que je n'aie rien fait pour activer une journalisation supplémentaire.

Normalement, je devrais supposer qu'il s'agit d'un problème de type Kerberos/AD, et en suivant des articles tels que こん y こん aiderait. Mais le fait que cela fonctionne à partir du SERVICE RÉSEAU suggère que les éléments normaux que je vérifierais sont déjà en ordre (par exemple, les SPN ont été configurés correctement et le compte de domaine de la machine est activé pour la délégation). Quel est donc le paramètre qui ne fonctionne pas ?

Je n'ai pas accès aux serveurs sans l'aide de l'équipe informatique de mon client et il y a d'autres applications installées sur le serveur que je dois veiller à ne pas perturber, ce qui rend le dépannage un peu plus délicat. Toute suggestion de dépannage est la bienvenue !

4voto

Thecamelcoder Points 11

Vous voudrez peut-être confirmer si la connexion de sécurité est NTLM ou Kerberos. S'il s'agit de NTLM, la connexion sera anonyme.

Il existe une stratégie de groupe qui permet d'utiliser l'identité de l'ordinateur lorsque NTLM est utilisé.

La sécurité des réseaux : Autoriser le Système Local à utiliser l'identité de l'ordinateur pour NTLM
http://technet.microsoft.com/en-us/library/jj852275%28v=ws.10%29.aspx


Pour plus d'informations sur la façon de configurer le SPN pour faciliter l'authentification Kerberos pour votre serveur SQL :

http://blogs.msdn.com/b/sql_protocols/archive/2006/12/02/understanding-kerberos-and-ntlm-authentication-in-sql-server-connections.aspx

En particulier, notez ce qui suit :

Un SPN pour SQL Server est composé des éléments suivants :

  • ServiceClass : Identifie la classe générale du service. Il s'agit toujours de MSSQLSvc pour SQL Server.
  • Hôte : Il s'agit du nom de domaine pleinement qualifié DNS de l'ordinateur qui exécute le serveur SQL.
  • Port : Il s'agit du numéro du port sur lequel le service écoute.

    ex : MSSQLSvc/myserver.corp.mycomany.com:1433

2voto

Ryan Ries Points 54671

Je parie toujours sur un problème de SPN. Ne supposez pas simplement qu'ils sont là. Vérifiez l'enregistrement correct des SPN pour SQL Server. Vérifiez également l'absence de doublons ( setspn -x ).

Network Service fonctionne parce que lorsque le SPN n'est pas présent, il peut toujours se rabattre sur l'authentification NTLM.

Local System ne fonctionne pas car il n'accède aux ressources du réseau qu'en tant que DOMAIN\Computer$ s'il est capable d'utiliser Kerberos. Sinon, il se rabat sur une session nulle, ce qui explique pourquoi vous voyez Anonymous Logon .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X