Windows Server 2003 IIS サーバーに .net Web アプリケーションをインストールし、アプリケーション プールで実行してNETWORK SERVICE
、統合セキュリティを使用して別のマシンの SQL Server に接続しています。SQL Server マシンも Windows Server 2003 を実行しています。したがって、Web アプリケーションは ID として接続します。DOMAIN\COMPUTER$
そのアカウントには SQL Server のログインとユーザーがあるため、すべて正常に動作します。
また、同じSQL Serverマシンに接続する同じIISサーバーに.net Windowsサービスをインストールしました。WindowsサービスはLOCAL SYSTEM
IDとして実行され、IDとしても接続する必要があります。DOMAIN\COMPUTER$
私はこの同じ製品を 12 社以上の異なる企業にインストールしましたが、通常はすべて期待どおりに動作しますが、最近 1 つのケースでは、Windows サービスがデータベースに接続できず、次のエラーが発生しました。
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'
なぜ LOCAL SYSTEM ではそうなのに、NETWORK SERVICE ではそうならないのか、何か考えはありますか? 短期的にこの問題を回避するには、SQL Server ログインを使用するように切り替える必要がありましたが、簡単な解決策があれば統合セキュリティを使用することをお勧めします。追加のログ記録を有効にするために何も行っていませんが、セキュリティまたはシステム イベント ログにはエラー メッセージはありませんでした。
通常、これはKerberos/ADタイプの問題であると考えますが、次のような記事があります。これそしてこれ役立つでしょう。しかし、ネットワーク サービスから機能するという事実は、私がチェックする通常の事項がすでに正常であることを示しています (たとえば、SPN が正しく設定され、マシン ドメイン アカウントが委任に対して有効になっているなど)。では、どの設定が間違っているのでしょうか?
クライアントの IT チームの支援がなければサーバーにアクセスできません。また、サーバーには他のアプリケーションもインストールされており、中断しないように注意する必要があります。そのため、トラブルシューティングが少し難しくなります。トラブルシューティングに関するご提案があれば、ぜひお聞かせください。
答え1
セキュリティ接続が NTLM か Kerberos かを確認することをお勧めします。NTLM に戻る場合、接続は匿名になります。
NTLM が使用されるときにコンピューター ID を使用できるようにするグループ ポリシーがあります。
ネットワーク セキュリティ: ローカル システムが NTLM のコンピュータ ID を使用できるようにする
http://technet.microsoft.com/en-us/library/jj852275%28v=ws.10%29.aspx
SQL サーバーの Kerberos 認証を容易にするために SPN を構成する方法の詳細については、次を参照してください。
特に、次の点に注意してください。
SQL Server の SPN は次の要素で構成されます。
- ServiceClass: 一般的なサービス クラスを識別します。SQL Server の場合は常に MSSQLSvc になります。
- ホスト: これは、SQL Server を実行しているコンピューターの完全修飾ドメイン名 DNS です。
ポート: これはサービスがリッスンしているポート番号です。
例: MSSQLSvc/myserver.corp.mycomany.com:1433
答え2
私はまだ SPN の問題に賭けています。SPN が存在すると想定しないでください。SQL Server の SPN が適切に登録されているかどうかを確認してください。また、重複 ( setspn -x
) も確認してください。
Network Service
SPN が存在しない場合でも、NTLM 認証にフォールバックできるため機能します。
Local System
DOMAIN\Computer$
は、Kerberos を使用できる場合と同様にネットワーク リソースにのみアクセスするため、機能しません。それ以外の場合は、null セッションにフォールバックするため、 が表示されますAnonymous Logon
。