Otentikasi Kerberos tidak bekerja dengan Server Tertaut di SQL Server 2012

8

Saya menyiapkan lingkungan DEV / TEST menggunakan 2 Server SQL yang menjalankan SQL Server 2012 pada Windows Server 2012. Kami sedang beralih dari SQL Server 2005 pada Windows Server 2008, di mana kami telah menjalankan dan menjalankannya dengan benar.

Di SQL Server 2012, otentikasi Kerberos tidak berfungsi.

Setiap server memiliki akun Active Directory miliknya sendiri yang memiliki hak "Nama Pokok Layanan Menulis" dan "Nama Pokok Layanan Baca" yang diberikan melalui Pengguna dan Komputer Direktori Aktif. Setiap kali saya terhubung ke server SQL Server 2005, dan jalankan:

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

Saya melihat:

net_transport    auth_scheme
TCP              KERBEROS 

Ketika saya melakukan permintaan yang sama terhadap contoh SQL Server 2012 baru saya, saya melihat:

net_transport    auth_scheme
TCP              NTLM 

Jika saya menggunakan SetSPN -Q MSSQLSvc/*kueri Domain Aktif untuk Nama-nama Utama Layanan, saya melihat server 2005 dan 2012 terdaftar, dengan cara yang persis sama selain nama server.

Contohnya:

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

Apa lagi yang harus saya lakukan untuk mengaktifkan Otentikasi Kerberos ke SQL Server 2012? Buku Daring sepertinya tidak memiliki hal lain untuk dikatakan, kecuali bahwa SPN harus disiapkan. Yang jelas, mereka. Log SQL Server Error pada kedua mesin 2012 mengatakan:

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.
Max Vernon
sumber
2
Kegagalan Kerberos favorit saya disebabkan oleh komputer yang jamnya telah melayang "terlalu jauh". Pastikan bahwa mereka disinkronkan dengan waktu resmi domain.
Selat darin
1
Pastikan juga zona waktu sudah benar.
Dave Markle

Jawaban:

8

Berurusan dengan Active Directory selalu sangat menyenangkan. Satu-satunya hal terpenting di sini adalah untuk menyadari bahwa Anda berurusan dengan data terdistribusi yang dapat memakan waktu untuk disebarkan di seluruh jaringan Anda.

SQL Server yang dipertanyakan mengubah nama mereka sebagai bagian dari prosedur pemutakhiran; kami mengganti mesin yang sudah ada (SQL01) yang menjalankan SQL Server 2005 dengan mesin baru (SQL03) yang menjalankan SQL Server 2012. SQL03 adalah nama dari mesin baru ketika saya awalnya mengaturnya di domain. SQL01 memiliki SPN yang ada yang terkait dengan satu akun domain yang kami gunakan untuk beberapa SQL Server yang berjalan pada tahun 2005. Karena ini adalah praktik terbaik untuk hanya menjalankan mesin tunggal di bawah akun domain mana pun, saya membuat akun baru dan mengonfigurasi SQL03 untuk dijalankan dengan itu nama akun. Setelah mengeluarkan SQL01 asli dari layanan, dan mengubah nama SQL03 ke SQL01, ada konflik SPN.

Saya menggunakan utilitas SetSPN.exe untuk menghapus SPN yang bertentangan (pada akun domain lama) - dan masih tidak berfungsi. Pada titik ini, saya tidak melakukan apa-apa lagi dan pindah ke item lain. Ketika saya kembali sekitar 30 menit kemudian, otentikasi KERBEROS berfungsi. Saya hanya perlu menunggu perubahan SPN untuk menyebar di antara pengontrol domain kami.

Saya menggunakan SetSPN -L DOMAIN\Accountdan membandingkan output dengan SetSPN -Q MSSQLSvc/Machine.domain.inet:1433untuk menemukan duplikat SPN, dan kemudian digunakan SetSPN -D MSSQLSvc/Machine.domain.inet:1433 DOMAIN\Accountuntuk menghapus SPN lama.

Max Vernon
sumber