Tại sao MS SQL Server sử dụng xác thực NTLM?


12

Máy chủ Windows 2008 R2.

Đã cài đặt SQL Server 2008 R2.

Dịch vụ MSSQL chạy như Hệ thống cục bộ.

Máy chủ FQDN là SQL01.domain.com.

SQL01 được tham gia vào một miền Active Directory có tên miền.com.

Sau đây là đầu ra của 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

Sau đó, tôi khởi chạy SQL Server Management studio và kết nối với SQL01:

nhập mô tả hình ảnh ở đây

Sau đó tôi chạy truy vấn sau:

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

Và kết quả là NTLM. Tại sao kết quả không phải là Kerberos? SPN dường như là chính xác để sử dụng tài khoản Hệ thống cục bộ. Máy chủ không nằm trong cụm hoặc sử dụng CNAME.


Làm thế nào về việc chỉ trả lời câu hỏi để cộng đồng có thể hưởng lợi.
mdpc

Câu trả lời:


15

Đó là bởi vì tôi đã kết nối với Máy chủ SQL cục bộ, từ cùng một máy chủ lưu trữ SQL Server. Khi tôi kết nối từ một máy khác trên mạng, cơ chế xác thực được sử dụng là Kerberos, như mong đợi.

SQL Server sẽ luôn sử dụng NTLM nếu kết nối cục bộ. Kerberos chỉ được sử dụng nếu kết nối từ xa.

Bài đăng này từ Blog Giao thức SQL Server , trong khi đề ngày, cũng nói điều tương tự:

1) Kerberos được sử dụng khi thực hiện kết nối từ xa qua TCP / IP nếu SPN xuất hiện.

2) Kerberos được sử dụng khi thực hiện kết nối tcp cục bộ trên XP nếu SPN xuất hiện.

3) NTLM được sử dụng khi thực hiện kết nối cục bộ trên WIN 2K3.

4) NTLM được sử dụng qua kết nối NP.

5) NTLM được sử dụng qua kết nối TCP nếu không tìm thấy SPN.


3
wow tất cả công việc này (nghiên cứu) Tôi đã làm hàng giờ với SPN và phân định, và đây là nhờ! :)
wchoward
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.