web-dev-qa-db-ja.com

NETWORKSERVICEとして実行されているWebアプリはSQLServerに接続できますが、LOCALSYSTEMとして実行されているWindowsサービスは接続できません

.netWebアプリケーションをWindowsServer 2003 IISサーバーにインストールし、アプリケーションプールでNETWORK SERVICEとして実行し、統合セキュリティを使用して別のマシンのSQLServerに接続しました。 SQLServerマシンもWindowsServer 2003を実行しています。したがって、WebアプリはIDDOMAIN\COMPUTER$として接続し、そのアカウントにはSQLのログインとユーザーがありますサーバーなので、すべてがうまく機能します。

また、同じSQLServerマシンに接続する同じIISサーバーに.netWindowsサービスをインストールしました。WindowsサービスはLOCAL SYSTEMとして実行されるため、IDとしても接続する必要がありますDOMAIN\COMPUTER$。私はこの同じ製品を12以上の異なる会社にインストールしました。通常はすべて期待どおりに機能しますが、最近の1つのケースではWindowsサービスがデータベースに接続できず、次のエラーが発生しました。

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'

これがローカルシステムに当てはまり、ネットワークサービスには当てはまらない理由はありますか?短期的にこれを回避するには、SQL Serverログインを使用するように切り替える必要がありましたが、簡単な解決策がある場合は統合セキュリティを使用することをお勧めします。追加のログを有効にするために何もしていませんが、セキュリティまたはシステムのイベントログにエラーメッセージはありませんでした。

通常、これはある種のKerberos/ADタイプの問題であると思いますが、 thisthis のような次の記事が役に立ちます。しかし、それがNETWORK SERVICEから機能するという事実は、私がチェックする通常のことはすでに問題がないことを示唆しています(たとえば、SPNが正しく設定され、マシンドメインアカウントが委任に対して有効になっていますか?)。では、どのような設定がうまくいかないのでしょうか。

クライアントのITチームの支援なしにサーバーにアクセスすることはできません。また、サーバーにインストールされている他のアプリケーションが中断しないように注意する必要があるため、トラブルシューティングが少し複雑になります。トラブルシューティングのための提案は大歓迎です!

4
Rory

セキュリティ接続がNTLMまたはKerberosのどちらであるかを確認することをお勧めします。 NTLMに戻る場合、接続は匿名になります。

NTLMを使用する場合にコンピューターIDを使用できるようにするグループポリシーがあります。

ネットワークセキュリティ:ローカルシステムがNTLMのコンピュータIDを使用できるようにします
http://technet.Microsoft.com/en-us/library/jj852275%28v=ws.10%29.aspx


SQLサーバーのKerberos認証を容易にするためにSPNを構成する方法の詳細については、以下を参照してください。

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

特に、次の点に注意してください。

SQL ServerのSPNは、次の要素で構成されています。

  • ServiceClass:これは一般的なサービスクラスを識別します。これは常にSQLServerのMSSQLSvcです。
  • ホスト:これは、SQLServerを実行しているコンピューターの完全修飾ドメイン名DNSです。
  • ポート:これは、サービスがリッスンしているポート番号です。

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

4
Greg Askew

私はまだSPNの問題を賭けています。彼らがそこにいると思い込まないでください。 SQLServerのSPNが適切に登録されているかどうかを確認します。また、重複がないか確認してください(setspn -x)。

Network Serviceは、SPNが存在しない場合でも、NTLM認証にフォールバックできるため機能します。

Local Systemは、Kerberosを使用できる場合にのみDOMAIN\Computer$としてネットワークリソースにアクセスするため、機能しません。それ以外の場合は、nullセッションにフォールバックします。そのため、Anonymous Logonが表示されます。

2
Ryan Ries