Tôi đang tìm thông tin mâu thuẫn về cách định dạng chính xác SPN (Tên nguyên tắc dịch vụ) để có các kết nối Kerberos phù hợp và số lượng tôi cần cho mỗi phiên bản SQL.
Tài liệu MS 2017 này có chứa:
Bắt đầu với SQL Server 2008, định dạng SPN được thay đổi để hỗ trợ xác thực Kerberos trên TCP / IP, các đường dẫn có tên và bộ nhớ dùng chung. Các định dạng SPN được hỗ trợ cho các trường hợp được đặt tên và mặc định như sau.
- Ví dụ được đặt tên:
MSSQLSvc/FQDN:[port|instancename]
- Ví dụ mặc định:
MSSQLSvc/FQDN:port|MSSQLSvc/FQDN
Định dạng SPN mới không yêu cầu số cổng . Điều này có nghĩa là máy chủ nhiều cổng hoặc giao thức không sử dụng số cổng có thể sử dụng xác thực Kerberos.
Tôi lấy đoạn cuối này để nói rằng tôi chỉ cần một mục duy nhất, một trong những điều sau đây:
- Ví dụ được đặt tên:
MSSQLSvc/sqlbox1.mydomain.org/instance2
- Ví dụ mặc định:
MSSQLSvc/sqlbox1.mydomain.org
Điều đó dường như mâu thuẫn với tài liệu MS cũ hơn (2011) này , không chỉ về số cổng, mà còn liên quan đến việc sử dụng tên nào:
Để tạo SPN, bạn có thể sử dụng tên NetBIOS hoặc Tên miền đủ điều kiện (FQDN) của Máy chủ SQL. Tuy nhiên, bạn phải tạo SPN cho cả tên NetBIOS và FQDN .
Khi tôi nhìn vào các SPN đã tồn tại trong môi trường của tôi, tôi thấy rất nhiều kết hợp, một số máy chủ có tới 4 mục:
MSSQLSvc/sqlbox1
MSSQLSvc/sqlbox1:1433
MSSQLSvc/sqlbox1.mydomain.org
MSSQLSvc/sqlbox1.mydomain.org:1433
Ngay cả trình quản lý cấu hình Kerberos của MS dường như cũng muốn tạo hai phiên bản cuối cùng (với cách mã hóa phù hợp):
Tương tự như vậy đối với các trường hợp được đặt tên hiện có, tôi thấy một kết hợp kỳ lạ, một số trong đó gần như chắc chắn không hợp lệ:
MSSQLSvc/sqlbox1:1522
MSSQLSvc/sqlbox1:instance2
MSSQLSvc/sqlbox1.mydomain.org:1522
MSSQLSvc/sqlbox1.mydomain.org:instance2
MSSQLSvc/sqlbox1.mydomain.org/instance2
MSSQLSvc/sqlbox1.mydomain.org:1522:instance2
Vì vậy, DSN của tôi thực sự trông như thế nào, cho cả hai trường hợp mặc định và được đặt tên, nếu tôi chỉ sử dụng TCP trong môi trường của mình?
Tôi có nên bao gồm cổng, hay không? Hoặc bao gồm một với cổng và một không có?
Chỉ sử dụng FQDN hoặc tôi cần các mục chỉ có tên Netbios? Hay đó chỉ là nếu chúng ta đang sử dụng các đường ống có tên (mà chúng ta không phải)?
(Đối với ngữ cảnh, chúng tôi chạy SQL 2005 đến 2014, một số cụm, một số khác độc lập. Kết nối chỉ thông qua TCP, các ống có tên bị vô hiệu hóa trong trình quản lý cấu hình. Chúng tôi sẽ sửa / tạo chúng theo cách thủ công thay vì cho phép tài khoản dịch vụ SQL tạo chúng theo máy chủ bắt đầu.)