| Termin | Definicja |
|---|---|
| Rejestracja SPN | Rejestracja SPN w Active Directory jest niezbędna do prawidłowego działania uwierzytelniania Kerberos z SQL Server. Rola rejestracji SPN w uwierzytelnianiu SQL ServerRejestracja SPN, czyli Service Principal Name, wiąże nazwę usługi działającej w domenie Active Directory z konkretnym kontem, na którym uruchomiona jest usługa SQL Server. Klient korzystający z uwierzytelniania Kerberos nie identyfikuje serwera wyłącznie po adresie IP. Na podstawie nazwy połączenia tworzy żądanie biletu dla określonego identyfikatora usługi, a kontroler domeny musi znać konto przypisane do tego identyfikatora. Dla SQL Server najczęściej stosuje się wpisy w postaci Przykładowy SPN może mieć postać Jak SQL Server wykorzystuje nazwę MSSQLSvcPodczas nawiązywania połączenia klient SQL Server ustala nazwę usługi na podstawie użytej nazwy serwera i portu. Następnie Kerberos wyszukuje w Active Directory obiekt, który posiada taki SPN. Jeżeli wpis istnieje tylko raz i wskazuje konto usługi SQL Server, kontroler domeny może wydać bilet Kerberos dla właściwego podmiotu. SQL Server weryfikuje ten bilet przy użyciu poświadczeń swojego konta usługi. Jeżeli SPN nie istnieje, klient zwykle nie może uzyskać biletu dla SQL Server i może nastąpić przejście na uwierzytelnianie NTLM, o ile dana konfiguracja na to pozwala. Wtedy logowanie może nadal działać, ale zmieniają się właściwości sesji. Problem staje się widoczny między innymi przy wymaganiu Kerberos, delegowaniu poświadczeń do kolejnej usługi albo przy połączeniach wykonywanych przez aplikację pośredniczącą. W diagnostyce trzeba więc odróżnić brak biletu Kerberos od całkowitego braku możliwości zalogowania. Istotna jest zgodność nazwy użytej przez klienta z nazwą zapisaną w SPN. Połączenie przez adres IP nie dostarcza takiej samej nazwy usługi jak połączenie przez nazwę DNS. Podobnie alias, nazwa wielokrotna DNS i rzeczywista nazwa komputera mogą prowadzić do różnych identyfikatorów. W przypadku instancji nazwanej znaczenie ma także faktyczny port nasłuchiwania, a nie tylko nazwa instancji widoczna w konfiguracji klienta. Sprawdzanie wpisów i konta usługiPodstawowym narzędziem do odczytu SPN w domenie jest polecenie Niebezpieczna jest duplikacja SPN. Ten sam identyfikator przypisany do dwóch różnych obiektów Active Directory nie wskazuje jednoznacznie konta, które powinno obsłużyć bilet. Do wyszukiwania duplikatów można użyć polecenia Rejestracja może być wykonywana automatycznie przez usługę SQL Server, jeżeli konto usługi ma odpowiednie uprawnienia w Active Directory. Przy koncie domenowym o ograniczonych uprawnieniach administrator może zarejestrować wpis jawnie, używając polecenia w rodzaju Diagnostyka nieudanego użycia KerberosAnalizę należy rozpocząć od ustalenia dokładnego łańcucha połączenia: nazwy serwera wpisanej przez klienta, użytego aliasu, portu TCP oraz konta, na którym działa usługa SQL Server. Następnie trzeba porównać te dane z wpisami Stan uwierzytelniania można zweryfikować po stronie SQL Server, sprawdzając metodę używaną przez bieżącą sesję. Przykładowe zapytanie Usunięcie lub zmiana wpisu SPN wymaga ostrożności, ponieważ błędna modyfikacja może wpłynąć na inne połączenia korzystające z tego samego konta lub nazwy usługi. Po zmianie należy ponownie sprawdzić unikalność wpisu, wyczyścić albo odświeżyć bilety Kerberos po stronie klienta i wykonać nowe połączenie. Jeżeli problem występuje tylko przez alias, a działa przy rzeczywistej nazwie hosta, wskazuje to na niespójność pomiędzy nazwą używaną przez klienta a identyfikatorem zarejestrowanym w Active Directory. |