Xác thực Kerberos không hoạt động với Máy chủ được liên kết trong SQL Server 2012


8

Tôi đang thiết lập môi trường DEV / TEST bằng 2 Máy chủ SQL chạy SQL Server 2012 trên Windows Server 2012. Chúng tôi đang chuyển từ SQL Server 2005 trên Windows Server 2008, nơi chúng tôi đã có tính năng này hoạt động chính xác.

Trong SQL Server 2012, xác thực Kerberos không hoạt động.

Mỗi máy chủ có tài khoản Active Directory riêng có quyền "Viết tên hiệu trưởng dịch vụ" và "Đọc tên hiệu trưởng dịch vụ" được cấp thông qua người dùng và máy tính của Active Directory. Bất cứ khi nào tôi kết nối với máy chủ SQL Server 2005 và chạy:

SELECT net_transport, auth_scheme 
FROM sys.dm_exec_connections 
WHERE session_id = @@SPID;

Tôi hiểu rồi:

net_transport    auth_scheme
TCP              KERBEROS 

Khi tôi thực hiện cùng một truy vấn đối với các phiên bản SQL Server 2012 mới của mình, tôi thấy:

net_transport    auth_scheme
TCP              NTLM 

Nếu tôi sử dụng SetSPN -Q MSSQLSvc/*để truy vấn Tên miền hoạt động cho Tên chính của dịch vụ, tôi sẽ thấy cả máy chủ năm 2005 và 2012 được liệt kê, chính xác theo cùng một cách khác với tên của máy chủ.

Ví dụ:

MSSQLSvc/SERVERa2005.domain.inet
MSSQLSvc/SERVERa2005domain.inet:1433
MSSQLSvc/SERVERb2005.domain.inet
MSSQLSvc/SERVERb2005domain.inet:1433
MSSQLSvc/SERVERa2012.domain.inet
MSSQLSvc/SERVERa2012domain.inet:1433
MSSQLSvc/SERVERb2012.domain.inet
MSSQLSvc/SERVERb2012domain.inet:1433

Tôi cần làm gì khác để kích hoạt Xác thực Kerberos cho SQL Server 2012? Sách trực tuyến dường như không có gì khác để nói, ngoại trừ việc SPN phải được thiết lập. Mà rõ ràng, họ là. Nhật ký lỗi máy chủ SQL trên cả hai máy 2012 cho biết:

2012-12-10 14:55:47.630 The SQL Server Network Interface library 
                            successfully registered the Service Principal Name (SPN)
                            [ MSSQLSvc/SERVERa2012.domain.inet ] for the SQL Server
                            service. 

2012-12-10 14:55:47.630 The SQL Server Network Interface library 
                            successfully registered the Service Principal Name (SPN) 
                            [ MSSQLSvc/SERVERa2012.domain.inet:1433 ] for the SQL 
                            Server service. 

2012-12-10 14:55:47.590 SQL Server is attempting to register a Service 
                            Principal Name (SPN) for the SQL Server service. 
                            Kerberos authentication will not be possible until a 
                            SPN is registered for the SQL Server service. This is an
                            informational message. No user action is required.

2
Thất bại Kerberos yêu thích của tôi là do các máy tính có đồng hồ bị trôi quá xa nhau. Đảm bảo rằng chúng được đồng bộ hóa với thời gian chính thức của tên miền.
eo biển darin

1
Cũng đảm bảo múi giờ là chính xác.
Dave Markle

Câu trả lời:


8

Đối phó với Active Directory luôn rất nhiều niềm vui. Điều quan trọng nhất ở đây là nhận ra bạn đang xử lý dữ liệu phân tán có thể mất thời gian để truyền bá trên mạng của bạn.

Các máy chủ SQL được đề cập đã thay đổi tên của chúng như là một phần của quy trình nâng cấp; chúng tôi đã thay thế một máy hiện có (SQL01) chạy SQL Server 2005 bằng máy mới (SQL03) chạy SQL Server 2012. SQL03 là tên của máy mới khi tôi thiết lập ban đầu trong miền. SQL01 đã có SPN hiện có được liên kết với một tài khoản miền mà chúng tôi đã sử dụng cho một số Máy chủ SQL chạy năm 2005. Vì đó là cách tốt nhất để chỉ chạy một máy trong bất kỳ tài khoản miền cụ thể nào, tôi đã tạo một tài khoản mới và cấu hình SQL03 để chạy với điều đó tên tài khoản. Sau khi lấy SQL01 ban đầu ra khỏi dịch vụ và đổi tên SQL03 thành SQL01, đã xảy ra xung đột SPN.

Tôi đã sử dụng tiện ích SetSPN.exe để xóa SPN xung đột (trên tài khoản miền cũ) - và nó vẫn không hoạt động. Tại thời điểm này, tôi không làm gì thêm và chuyển sang các mặt hàng khác. Khi tôi quay lại khoảng 30 phút sau, xác thực KERBEROS đã hoạt động. Tôi chỉ cần chờ đợi thay đổi SPN lan truyền giữa các bộ điều khiển miền của chúng tôi.

Tôi đã sử dụng SetSPN -L DOMAIN\Accountvà so sánh đầu ra đó SetSPN -Q MSSQLSvc/Machine.domain.inet:1433để tìm các SPN trùng lặp, và sau đó được sử dụng SetSPN -D MSSQLSvc/Machine.domain.inet:1433 DOMAIN\Accountđể loại bỏ các SPN cũ.


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.