web-dev-qa-db-ja.com

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に接続します。

enter image description here

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

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

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

13
Ryan Ries

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

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

SQL Server Protocols Blog からのこの投稿は、日付が付けられていますが、同じことを言っています。

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

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

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

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

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

17
Ryan Ries