MS SQL Server が NTLM 認証を使用するのはなぜですか?

MS SQL Server が NTLM 認証を使用するのはなぜですか?

Windows Server 2008 R2 です。

SQL Server 2008 R2 がインストールされています。

MSSQL サービスはローカル システムとして実行されます。

サーバーの FQDN は SQL01.domain.com です。

SQL01 は、domain.com という名前の Active Directory ドメインに参加しています。

以下は setspn の出力です。

C:\> setspn -L sql01
...
MSSQLSvc/SQL01.domain.com:1433
MSSQLSvc/SQL01.domain.com
WSMAN/SQL01.domain.com
WSMAN/SQL01
TERMSRV/SQL01.domain.com
TERMSRV/SQL01
RestrictedKrbHost/SQL01    
RestrictedKrbHost/SQL01.domain.com
HOST/SQL01.domain.com
HOST/SQL01

次に、SQL Server Management Studio を起動し、次のように SQL01 に接続します。

ここに画像の説明を入力してください

次に、次のクエリを実行します。

SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid 

結果は NTLM です。なぜ結果が Kerberos ではないのですか? ローカル システム アカウントを使用する場合、SPN は正しいようです。サーバーはクラスター内になく、CNAME を使用していません。

答え1

これは、SQL Server をホストしている同じサーバーから、SQL Server にローカルで接続していたためです。ネットワーク上の別のマシンから接続する場合、使用される認証メカニズムは予想どおり Kerberos です。

SQL Server は、ローカルに接続する場合は常に NTLM を使用します。Kerberos はリモートに接続する場合にのみ使用されます。

この投稿はSQL Server プロトコル ブログは古いものですが、同じことを言っています。

1) SPN が存在する場合、TCP/IP 経由でリモート接続を行うときに Kerberos が使用されます。

2) SPN が存在する場合、XP 上でローカル TCP 接続を行うときに Kerberos が使用されます。

3) WIN 2K3 でローカル接続を行う場合は NTLM が使用されます。

4) NP 接続では NTLM が使用されます。

5) SPN が見つからない場合は、TCP 接続経由で NTLM が使用されます。

関連情報