Sdílet prostřednictvím


Registrace hlavního názvu služby pro připojení Kerberos

platí pro:SQL Server

Pokud chcete použít ověřování kerberos s SQL Serverem, musí být splněny obě následující podmínky:

  • Klientské a serverové počítače musí být součástí stejné domény Windows nebo v důvěryhodných doménách.

  • Hlavní název služby (SPN) musí být zaregistrovaný ve službě Active Directory, která předpokládá roli Centra distribuce klíčů v doméně Windows. Hlavní název služby (SPN) se po registraci mapuje na účet systému Windows, který spustil službu SQL Serveru. Pokud se registrace hlavního názvu služby (SPN) neprovede nebo selže, vrstva zabezpečení Systému Windows nemůže určit účet přidružený k hlavnímu názvu služby (SPN) a ověřování kerberos se nepoužívá.

    Poznámka

    Pokud server nemůže SPN zaregistrovat automaticky, musí být SPN zaregistrován ručně. Viz manuální registraci SPN.

Dotazováním sys.dm_exec_connections zobrazení dynamické správy můžete ověřit, že připojení používá protokol Kerberos. Spusťte následující dotaz a zkontrolujte hodnotu sloupce auth_scheme, který je KERBEROS, pokud je povolený protokol Kerberos.

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

Spropitné

Microsoft Kerberos Configuration Manager pro SQL Server je diagnostický nástroj, který pomáhá řešit problémy s připojením k protokolu Kerberos s SQL Serverem. Další informace naleznete v tématu Microsoft Kerberos Configuration Manager pro SQL Server.

Role hlavního názvu služby (SPN) v ověřování

Když aplikace otevře připojení a použije ověřování systému Windows, SQL Server Native Client předá název počítače serveru SQL, název instance a volitelně SPN. Pokud připojení předává hlavní název služby (SPN), použije se bez jakýchkoli změn.

Pokud připojení nepředává hlavní název služby (SPN), vytvoří se výchozí hlavní název služby (SPN) na základě použitého protokolu, názvu serveru a názvu instance.

V obou předchozích scénářích se SPN odešle do centra distribuce klíčů, aby získal zabezpečovací token pro ověření připojení. Pokud se token zabezpečení nedá získat, použije ověřování protokol NTLM.

Název SPN (hlavní název služby) je název, kterým klient jednoznačně identifikuje instanci služby. Ověřovací služba Kerberos může použít hlavní název služby (SPN) k ověření služby. Když se klient chce připojit ke službě, vyhledá instanci služby, vytvoří pro danou instanci hlavní název služby, připojí se ke službě a zobrazí hlavní název služby pro ověření.

Poznámka

Informace v tomto článku platí také pro konfigurace SQL Serveru, které používají clustering.

Ověřování systému Windows je upřednostňovanou metodou ověřování uživatelů na SQL Serveru. Klienti používající ověřování systému Windows jsou ověřeni protokolem NTLM nebo Kerberos. V prostředí služby Active Directory se ověřování protokolem Kerberos vždy zkouší jako první.

Dovolení

Když se spustí služba databázového stroje, pokusí se zaregistrovat hlavní název služby (SPN). Předpokládejme, že účet, který spouští SQL Server, nemá oprávnění k registraci hlavního názvu služby (SPN) ve službě Active Directory Domain Services. V takovém případě se toto volání nezdaří a v protokolu událostí aplikace i v protokolu chyb SQL Serveru se zaprotokoluje zpráva s upozorněním.

Pokud chcete hlavní název služby zaregistrovat, musí být databázový stroj spuštěný pod předdefinovaný účet, například Local System (nedoporučuje se) nebo NETWORK SERVICEnebo účet, který má oprávnění k registraci hlavního názvu služby ( SPN). Hlavní název služby (SPN) můžete zaregistrovat pomocí účtu správce domény, ale nedoporučuje se to v produkčním prostředí. SQL Server můžete spustit pomocí virtuálního účtu nebo účtu spravované služby (MSA). Virtuální účty i spravované účty služby můžou zaregistrovat hlavní název služby (SPN). Pokud SQL Server není spuštěný pod jedním z těchto účtů, hlavní název služby (SPN) není zaregistrovaný při spuštění a správce domény musí hlavní název služby zaregistrovat ručně.

Formáty SPN

Formát SPN podporuje ověřování protokolem Kerberos na protokolu TCP/IP, pojmenovaných kanálech a sdílené paměti. Podporované formáty SPN pro pojmenované a výchozí instance jsou následující.

Pojmenovaná instance

  • MSSQLSvc/<FQDN>:[<port> | <název instance>], kde:

    • MSSQLSvc je služba, která se registruje.
    • <FQDN> je plně kvalifikovaný název domény serveru.
    • <port> je číslo portu TCP.
    • <instancename> je název instance SQL Serveru.

Výchozí instance

  • MSSQLSvc/<FQDN>:<port> | MSSQLSvc/<FQDN>, kde:

    • MSSQLSvc je služba, která se registruje.
    • <FQDN> je plně kvalifikovaný název domény serveru.
    • <port> je číslo portu TCP.
Formát SPN Popis
MSSQLSvc/<FQDN>:<port> 1 Zprostředkovatel vygenerovaný výchozí hlavní název služby (SPN) při použití protokolu TCP. <port> je číslo portu TCP.
MSSQLSvc/<FQDN> Poskytovatelem generovaný výchozí hlavní název služby (SPN) pro výchozí instanci, pokud se použije jiný protokol než TCP. <FQDN> je plně kvalifikovaný název domény.
MSSQLSvc/<FQDN>:<instancename> Výchozí hlavní název služby (SPN) vytvořený poskytovatelem pro pojmenovanou instanci při použití jiného protokolu než TCP. <instancename> je název instance SQL Serveru.

1 formát SPN nevyžaduje číslo portu. Server s více porty nebo protokol, který nepoužívá čísla portů, může dál používat ověřování protokolem Kerberos.

Pro připojení TCP/IP, kde je port TCP součástí hlavního názvu služby (SPN), musí SQL Server povolit protokol TCP, aby se uživatel mohl připojit pomocí ověřování protokolem Kerberos.

Automatická registrace hlavního názvu služby (SPN)

Když se spustí instance databázového enginu SQL Serveru, SQL Server se pokusí zaregistrovat SPN pro službu SQL Serveru. Když je instance zastavena, SQL Server se pokusí zrušit registraci hlavního názvu služby ( SPN). Pro připojení TCP/IP je SPN zaregistrováno ve formátu MSSQLSvc/<FQDN>:<tcpport>. Pojmenované instance i výchozí instance se registrují jako MSSQLSvca spoléhají na <tcpport> hodnotu k rozlišení instancí.

U jiných připojení, která podporují Kerberos, je SPN zaregistrován ve formátu MSSQLSvc/<FQDN>:<instancename> pro pojmenovanou instanci. Formát pro registraci výchozí instance je MSSQLSvc/<FQDN>.

Pro udělení oprávnění spouštěcímu účtu SQL Serveru k registraci a úpravě hlavního názvu služby (SPN) proveďte následující kroky:

  1. Na počítači řadiče domény přejděte na Uživatelé a počítače služby Active Directory.

  2. Vyberte Zobrazit > Rozšířené.

  3. V části Počítačevyhledejte počítač systému SQL Server a klepněte pravým tlačítkem myši a vyberte Vlastnosti.

  4. Vyberte kartu Zabezpečení a vyberte Upřesnit.

  5. Pokud v seznamu není uvedený spouštěcí účet SQL Serveru, vyberte Přidat a přidejte ho. Po přidání proveďte následující kroky:

    1. Vyberte účet a vyberte Upravit.

    2. V části Oprávnění vyberte Validated Write servicePrincipalName.

    3. Posuňte se dolů a v části Vlastnosti vyberte:

      • Číst servicePrincipalName
      • Napsat servicePrincipalName
    4. Vyberte OK dvakrát.

  6. Zavřete Uživatelé a počítače v službě Active Directory.

Ruční zásah může být vyžadován k registraci nebo zrušení registrace hlavního názvu služby, pokud účet služby nemá potřebná oprávnění pro tyto akce.

Ruční registrace hlavního názvu služby (SPN)

Pokud chcete hlavní název služby zaregistrovat ručně, můžete použít nástroj setspn, který je integrovaný ve Windows. setspn.exe je nástroj příkazového řádku, který umožňuje číst, upravovat a odstraňovat vlastnost adresáře SPN (Service Principal Names). Tento nástroj také umožňuje zobrazit aktuální hlavní názvy služeb ( SPN), resetovat výchozí hlavní názvy služby (SPN) účtu a přidávat nebo odstraňovat doplňkové hlavní názvy služby ( SPN).

Další informace o nástroji setspn, požadovaných oprávněních a příkladech, jak ho používat, najdete v tématu setspn.

Následující příklad ukazuje syntaxi použitou k ruční registraci hlavního názvu služby pro připojení TCP/IP pomocí uživatelského účtu domény:

setspn -S MSSQLSvc/myhost.redmond.microsoft.com:1433 redmond\accountname

Poznámka

Pokud hlavní název služby (SPN) již existuje, je třeba jej odstranit, aby se mohl znovu zaregistrovat. Provedete to pomocí setpn s přepínačem -D. Následující příklady ukazují, jak ručně zaregistrovat nový hlavní název služby založené na instanci. Pro výchozí instanci pomocí uživatelského účtu domény použijte:

setspn -S MSSQLSvc/myhost.redmond.microsoft.com redmond\accountname

Pro pojmenovanou instanci použijte:

setspn -S MSSQLSvc/myhost.redmond.microsoft.com:instancename redmond\accountname

Další informace o konfiguracích skupin dostupnosti AlwaysOn najdete v tématu naslouchací procesy a sítě KERBEROS (SPN).

Klientská připojení

Uživatelsky definované SPN jsou podporovány v klientských ovladačích. Pokud ale hlavní název služby není zadaný, vygeneruje se automaticky na základě typu klientského připojení. Pro připojení TCP se hlavní název služby (SPN) ve formátu MSSQLSvc/FQDN:[<port>] používá pro pojmenované i výchozí instance.

Pro pojmenované kanály a sdílená paměťová připojení se pro pojmenovanou instanci používá hlavní název služby (SPN) ve formátu MSSQLSvc/<FQDN>:<instancename> a MSSQLSvc/<FQDN> se používá pro výchozí instanci.

Použijte účet služby jako SPN

Účty služeb se dají použít jako hlavní název služby (SPN). Jsou zadané prostřednictvím atributu připojení pro ověřování protokolem Kerberos a mají následující formáty:

  • username\@domain nebo domain\username pro uživatelský účet domény

  • machine$\@domain nebo host\FQDN pro účet domény počítače, například Local System nebo NETWORK SERVICE.

Pokud chcete určit metodu ověřování připojení, spusťte následující dotaz.

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

Výchozí nastavení ověřování

Následující tabulka popisuje výchozí hodnoty ověřování, které se používají v závislosti na scénářích registrace hlavního názvu služby (SPN).

Scénář Metoda ověřování
Hlavní název služby (SPN) se mapuje na správný účet domény, virtuální účet, spravovaný účet služeb (MSA) nebo předdefinovaný účet. Například Local System nebo NETWORK SERVICE. Místní připojení používají protokol NTLM, vzdálená připojení používají protokol Kerberos.
SPN je správný účet domény, virtuální účet, MSA nebo vestavěný účet. Místní připojení používají protokol NTLM, vzdálená připojení používají protokol Kerberos.
Hlavní název služby (SPN) se mapuje na nesprávný účet v doméně, virtuální účet, MSA nebo předdefinovaný účet. Ověřování se nezdaří.
Vyhledávání hlavního názvu služby selže nebo se nenamapuje na správný účet domény, virtuální účet, MSA nebo předdefinovaný účet nebo není správný účet domény, virtuální účet, MSA nebo předdefinovaný účet. Místní a vzdálená připojení používají protokol NTLM.

Poznámka

Správné znamená, že účet namapovaný registrovaným SPN je účet, pod kterým běží služba SQL Server.

Poznámky

Připojení vyhrazeného správce (DAC) používá SPN na základě jména instance. Pokud je tento hlavní název služby úspěšně zaregistrovaný, lze ověřování pomocí protokolu Kerberos použít s DAC. Jako alternativu může uživatel zadat název účtu jako SPN.

Pokud se registrace hlavního názvu služby (SPN) při spuštění nezdaří, tato chyba se zaznamená do protokolu chyb SQL Serveru a spuštění pokračuje.

Pokud dojde k selhání zrušení registrace hlavního názvu služby (SPN) během vypnutí, zaznamená se tato chyba v protokolu chyb SQL Serveru a vypínání bude pokračovat.