L'autenticazione Kerberos non funziona con i server collegati in SQL Server 2012


8

Sto configurando un ambiente DEV / TEST utilizzando 2 server SQL che eseguono SQL Server 2012 su Windows Server 2012. Ci stiamo spostando da SQL Server 2005 su Windows Server 2008, dove abbiamo già installato e funzionante correttamente.

In SQL Server 2012, l'autenticazione Kerberos non funziona.

Ogni server ha il proprio account di Active Directory che dispone dei diritti "Scrivi nomi principali di servizio" e "Leggi nomi principali di servizio" concessi tramite Utenti e computer di Active Directory. Ogni volta che mi collego ai server SQL Server 2005 ed eseguo:

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

Vedo:

net_transport    auth_scheme
TCP              KERBEROS 

Quando eseguo la stessa query con le mie nuove istanze di SQL Server 2012, vedo:

net_transport    auth_scheme
TCP              NTLM 

Se utilizzo SetSPN -Q MSSQLSvc/*per interrogare Active Domain per i nomi principali del servizio, vedo elencati entrambi i server 2005 e 2012, esattamente allo stesso modo del nome del server.

Per esempio:

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

Cos'altro devo fare per abilitare l'autenticazione Kerberos su SQL Server 2012? La documentazione in linea sembra non avere nient'altro da dire, tranne che gli SPN devono essere impostati. Che chiaramente lo sono. I log degli errori di SQL Server su entrambi i computer 2012 dicono:

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
I miei errori Kerberos preferiti sono causati da computer i cui orologi si sono allontanati "troppo". Assicurati che siano sincronizzati con l'ora ufficiale del dominio.
darin strait

1
Assicurati anche che il fuso orario sia corretto.
Dave Markle l'

Risposte:


8

Trattare con Active Directory è sempre molto divertente. L'unica cosa più importante qui è rendersi conto che hai a che fare con dati distribuiti che possono richiedere del tempo per propagarsi attraverso la tua rete.

Ai server SQL in questione è stato modificato il nome come parte di una procedura di aggiornamento; abbiamo sostituito una macchina esistente (SQL01) che esegue SQL Server 2005 con una nuova macchina (SQL03) che esegue SQL Server 2012. SQL03 era il nome della nuova macchina quando l'ho inizialmente impostato nel dominio. SQL01 aveva un SPN esistente associato a un singolo account di dominio che abbiamo usato per diversi server SQL in esecuzione nel 2005. Dato che è una buona pratica eseguire un solo computer con un determinato account di dominio, ho creato un nuovo account e configurato SQL03 per l'esecuzione con quello nome utente. Dopo aver messo fuori servizio l'originale SQL01 e aver rinominato SQL03 in SQL01, si è verificato un conflitto SPN.

Ho usato l'utilità SetSPN.exe per eliminare l'SPN in conflitto (sul vecchio account di dominio) - e ancora non ha funzionato. A questo punto, non ho fatto altro e sono passato ad altri elementi. Quando sono tornato dopo circa 30 minuti, l'autenticazione KERBEROS funzionava. Dovevo semplicemente aspettare che la modifica SPN si propagasse tra i nostri controller di dominio.

Ho usato SetSPN -L DOMAIN\Accounte confrontato quell'output con SetSPN -Q MSSQLSvc/Machine.domain.inet:1433per trovare gli SPN duplicati, e quindi usato SetSPN -D MSSQLSvc/Machine.domain.inet:1433 DOMAIN\Accountper rimuovere i vecchi SPN.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.