Podpora hlavního názvu služby (SPN) v klientských připojeních v nativním klientovi SQL Serveru
platí pro:SQL ServerAzure SQL Databaseazure SQL Managed InstanceAzure Synapse AnalyticsPlatform Platform System (PDW)
Důležitý
SQL Server Native Client (SNAC) není dodáván s:
- SQL Server 2022 (16.x) a novější verze
- SQL Server Management Studio 19 a novější verze
Pro vývoj nových aplikací se nedoporučuje nativní klient SQL Serveru (SQLNCLI nebo SQLNCLI11) a starší zprostředkovatel Microsoft OLE DB pro SQL Server (SQLOLEDB).
Pro nové projekty použijte jeden z následujících ovladačů:
Informace o SQLNCLI, které se dodává jako součást databázového stroje SQL Serveru (verze 2012 až 2019), naleznete v tomto support lifecycle exception.
Od verze SQL Server 2008 (10.0.x) byla podpora hlavních názvů služeb (SPN) rozšířena, aby bylo možné vzájemné ověřování napříč všemi protokoly. V předchozích verzích SYSTÉMU SQL Server byly hlavní názvy služeb podporovány pouze pro protokol Kerberos přes TCP, pokud byl výchozí hlavní název služby pro instanci SYSTÉMU SQL Server zaregistrovaný ve službě Active Directory.
Hlavní názvy služby se používají ověřovacím protokolem k určení účtu, ve kterém běží instance SQL Serveru. Pokud je známý účet instance, je možné použít ověřování Kerberos k zajištění vzájemného ověřování klientem a serverem. Pokud účet instance není známý, použije se ověřování NTLM, které poskytuje pouze ověřování klienta serverem. V současné době SQL Server Native Client provádí vyhledávání ověřování, odvozuje hlavní název služby z názvu instance a vlastnosti síťového připojení. Instance SQL Serveru se pokusí zaregistrovat hlavní názvy služeb při spuštění nebo je lze zaregistrovat ručně. Registrace se však nezdaří, pokud účet, který se pokusí zaregistrovat hlavní názvy služeb, nemá dostatečná přístupová práva.
Účty domén a počítačů se automaticky registrují ve službě Active Directory. Můžete je použít jako hlavní názvy služeb (SPN) nebo správci můžou definovat vlastní hlavní názvy služeb. SQL Server usnadňuje správu a spolehlivost zabezpečeného ověřování tím, že umožňuje klientům přímo zadat hlavní název služby ( SPN), který se má použít.
Poznámka
Hlavní název služby určené klientskou aplikací se používá pouze při vytváření připojení s integrovaným zabezpečením Systému Windows.
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.
Další informace o protokolu Kerberos najdete v následujících článcích:
Zvyk
Následující tabulka popisuje nejběžnější scénáře, ve kterých můžou klientské aplikace povolit zabezpečené ověřování.
Scénář | Popis |
---|---|
Starší verze aplikace neurčí hlavní název služby (SPN). | Tento scénář kompatibility zaručuje, že u aplikací vyvinutých pro předchozí verze SQL Serveru nedojde ke změně chování. Pokud není zadán žádný hlavní název služby (SPN), aplikace spoléhá na generované hlavní názvy služeb a nemá žádné znalosti o tom, jakou metodu ověřování se používá. |
Klientská aplikace používající aktuální verzi nativního klienta SQL Serveru určuje hlavní název služby (SPN) v připojovacím řetězci jako účet uživatele domény nebo počítače, jako hlavní název služby (SPN) konkrétní instance nebo jako řetězec definovaný uživatelem. | Klíčové slovo ServerSPN lze použít ve zprostředkovateli, inicializaci nebo připojovacím řetězci, který provede následující akce: -Zadejte účet používaný instancí SQL Serveru pro připojení. To zjednodušuje přístup k ověřování protokolem Kerberos. Pokud je k dispozici centrum distribuce klíčů Kerberos (KDC) a je zadán správný účet, bude pravděpodobně použito ověřování kerberos než NTLM. KDC se obvykle nachází ve stejném počítači jako řadič domény. -Zadejte hlavní název služby pro vyhledání účtu služby pro instanci SQL Serveru. Pro každou instanci SQL Serveru se vygenerují dva výchozí hlavní názvy služeb( SPN), které lze pro tento účel použít. Tyto klíče ale nejsou zaručené ve službě Active Directory, takže v této situaci není zaručeno ověřování protokolem Kerberos. -Zadejte hlavní název služby( SPN), který se použije k vyhledání účtu služby pro instanci SQL Serveru. Může se jednat o jakýkoli uživatelem definovaný řetězec, který se mapuje na účet služby. V takovém případě musí být klíč zaregistrovaný ručně v KDC a musí splňovat pravidla pro uživatelem definovaný hlavní název služby. Klíčové slovo FailoverPartnerSPN lze použít k určení hlavního názvu služby (SPN) pro partnerský server s podporou převzetí služeb při selhání. Rozsah hodnot účtu a klíče služby Active Directory je stejný jako hodnoty, které můžete zadat pro hlavní server. |
Aplikace ODBC určuje hlavní název služby (SPN) jako atribut připojení pro hlavní server nebo partnerský server s podporou převzetí služeb při selhání. | Atribut připojení SQL_COPT_SS_SERVER_SPN lze použít k určení hlavního názvu služby pro připojení k hlavnímu serveru. Atribut připojení SQL_COPT_SS_FAILOVER_PARTNER_SPN lze použít k určení hlavního názvu služby (SPN) pro partnerský server s podporou převzetí služeb při selhání. |
Aplikace OLE DB určuje hlavní název služby (SPN) jako inicializační vlastnost zdroje dat pro hlavní server nebo pro partnerský server s podporou převzetí služeb při selhání. | Vlastnost připojení SSPROP_INIT_SERVER_SPN v sadě vlastností DBPROPSET_SQLSERVERDBINIT lze použít k určení hlavního názvu služby pro připojení. Vlastnost připojení SSPROP_INIT_FAILOVER_PARTNER_SPN v DBPROPSET_SQLSERVERDBINIT lze použít k určení hlavního názvu služby (SPN) pro partnerský server s podporou převzetí služeb při selhání. |
Uživatel určuje hlavní název služby (SPN) pro server nebo partnerský server s podporou převzetí služeb při selhání v názvu zdroje dat ODBC (DSN). | Hlavní název služby (SPN) je možné zadat v dsN ODBC prostřednictvím dialogových oken nastavení DSN. |
Uživatel určuje hlavní název služby (SPN) pro server nebo partnerský server s podporou převzetí služeb při selhání v dialogovém okně OLE DB Data Link nebo Přihlášení. | Hlavní název služby (SPN) je možné zadat v dialogovém okně datového propojení |
Aplikace ODBC určuje metodu ověřování použitou k navázání připojení. | Po úspěšném otevření připojení může aplikace dotazovat atribut připojení SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD určit, která metoda ověřování byla použita. Hodnoty budou zahrnovat, ale nejsou omezeny, NTLM a Kerberos. |
Aplikace OLE DB určuje metodu ověřování použitou k navázání připojení. | Po úspěšném otevření připojení může aplikace dotazovat vlastnost připojení SSPROP_AUTHENTICATION_METHOD v sadě vlastností DBPROPSET_SQLSERVERDATASOURCEINFO určit, která metoda ověřování byla použita. Hodnoty budou zahrnovat, ale nejsou omezeny, NTLM a Kerberos. |
Převzetí služeb při selhání
Hlavní názvy služby (SPN) se neukládají do mezipaměti převzetí služeb při selhání, a proto nelze předávat mezi připojeními. Hlavní názvy služeb (SPN) se použijí při všech pokusech o připojení k objektu zabezpečení a partnerovi, pokud jsou zadané v připojovacím řetězci nebo atributech připojení.
Sdružování připojení
Aplikace by měly vědět, že určení hlavních názvů služeb v některých, ale ne všech připojovacích řetězcích může přispět k fragmentaci fondu.
Aplikace mohou programově zadat hlavní názvy služeb jako atributy připojení místo zadávání klíčových slov připojovacího řetězce. To může pomoct se správou fragmentace fondu připojení.
Aplikace by měly vědět, že hlavní názvy služeb v připojovacích řetězcích je možné přepsat nastavením odpovídajících atributů připojení, ale připojovací řetězce používané sdružováním připojení budou používat hodnoty připojovacího řetězce pro účely sdružování.
Chování serveru Down-Level
Nové chování připojení je implementováno klientem; proto není specifické pro verzi SQL Serveru.
Propojené servery a delegování
Při vytváření propojených serverů je možné použít parametr @provstrsp_addlinkedserver k určení hlavních názvů služeb partnera pro server a převzetí služeb při selhání. Výhody tohoto procesu jsou stejné jako zadávání hlavních názvů služeb (SPN) v připojovacích řetězcích klienta: Jednodušší a spolehlivější pro navázání připojení, která používají ověřování protokolem Kerberos.
Delegování s propojenými servery vyžaduje ověřování protokolem Kerberos.
Aspekty správy hlavních názvů služeb určených aplikacemi
Při volbě, jestli chcete určit hlavní názvy služeb (SPN) v aplikaci (prostřednictvím připojovacích řetězců) nebo programově prostřednictvím vlastností připojení (místo spoléhání na výchozí hlavní názvy služeb generované poskytovatelem), zvažte následující faktory:
Zabezpečení: Zpřístupňuje zadaný hlavní název služby informace, které jsou chráněné?
Spolehlivost: Aby bylo možné povolit použití výchozích hlavních názvů služeb, musí mít účet služby, ve kterém je spuštěna instance SYSTÉMU SQL Server, dostatečná oprávnění k aktualizaci služby Active Directory v KDC.
Usnadnění a transparentnost umístění: Jak budou ovlivněny hlavní názvy služby aplikace, pokud se jeho databáze přesune do jiné instance SQL Serveru? To platí pro hlavní server i jeho partnera pro převzetí služeb při selhání, pokud používáte zrcadlení databáze. Pokud změna serveru znamená, že hlavní názvy služeb musí být změněny, jak to ovlivní aplikace? Budou se spravovat nějaké změny?
Určení hlavního názvu služby (SPN)
Hlavní název služby (SPN) můžete zadat v dialogových oknech a v kódu. Tato část popisuje, jak můžete zadat hlavní název služby (SPN).
Maximální délka hlavního názvu služby (SPN) je 260 znaků.
Syntaxe, kterou hlavní názvy služeb používají v připojovacím řetězci nebo atributech připojení, je následující:
Syntax | Popis |
---|---|
plně kvalifikovaných názvů domén MSSQLSvc/ |
Zprostředkovatel vygenerovaný výchozí hlavní název služby (SPN) pro výchozí instanci, pokud se použije jiný protokol než TCP. plně kvalifikovaný název domény je plně kvalifikovaný název domény. |
plně kvalifikovaného názvu domény MSSQLSvc/ |
Zprostředkovatel vygenerovaný výchozí hlavní název služby (SPN) při použití protokolu TCP. portu je číslo portu TCP. |
plně kvalifikovaný název domény MSSQLSvc/ |
Výchozí hlavní název služby (SPN) zprostředkovatele pro pojmenovanou instanci, pokud se použije jiný protokol než TCP. instanceName je název instance SYSTÉMU SQL Server. |
HOST/plně kvalifikovaný název domény HOST/MachineName |
Hlavní název služby (SPN), který se mapuje na předdefinované účty počítačů, které jsou automaticky registrovány systémem Windows. |
uživatelské jméno@doména | Přímá specifikace účtu domény uživatelské jméno je uživatelské jméno systému Windows. Doména je název domény Windows nebo plně kvalifikovaný název domény. |
Přímá specifikace účtu počítače. (Pokud je server, ke kterému se připojujete, spuštěný pod účty LOCAL SYSTEM nebo NETWORK SERVICE, můžete získat ověřování protokolem Kerberos, ServerSPN může být ve formátu MachineName$@Doména.) |
|
KDCKey/MachineName | Hlavní název služby zadané uživatelem. klíč KDCKey je alfanumerický řetězec, který odpovídá pravidlům pro klíč KDC. |
Syntaxe ODBC a OLE DB podporující hlavní názvy služeb (SPN)
Informace týkající se syntaxe najdete v následujících tématech:
hlavní názvy služby (SPN) v klientských připojení (ODBC)
hlavní názvy služby (SPN) v klientských připojeních (OLE DB)
Viz také
funkce nativního klienta SQL Serveru
registrace instančního objektu pro připojení kerberos