Egyszerű szolgáltatásnév (SPN) támogatása natív SQL Server-ügyfél ügyfélkapcsolataiban

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Fontos

Natív SQL Server-ügyfél (SNAC) nem a következőkkel szállítható:

  • SQL Server 2022 (16.x) és újabb verziók
  • AZ SQL Server Management Studio 19- és újabb verziói

Az SQL Server natív ügyfele (SQLNCLI vagy SQLNCLI11) és az örökölt Microsoft OLE DB Provider for SQL Server (SQLOLEDB) nem ajánlott az új alkalmazásfejlesztéshez.

Új projektek esetén használja az alábbi illesztőprogramok egyikét:

Az SQL Server adatbázismotor összetevőjeként (2012–2019-ben) futó SQLNCLI esetében tekintse meg ezt a Támogatási életciklus kivétel.

Az SQL Server 2008 -tól kezdve (10.0.x) kiterjesztették a szolgáltatásnévnevek (SPN-ek) támogatását, hogy minden protokollon engedélyezhessék a kölcsönös hitelesítést. Az SQL Server korábbi verzióiban az SPN-ek csak akkor voltak támogatva a Kerberos esetében TCP-n keresztül, amikor az SQL Server-példány alapértelmezett egyszerű szolgáltatásnevét regisztrálták az Active Directoryban.

A hitelesítési protokoll spN-eket használ annak a fióknak a meghatározásához, amelyben egy SQL Server-példány fut. Ha a példányfiók ismert, a Kerberos-hitelesítéssel kölcsönös hitelesítést biztosíthat az ügyfél és a kiszolgáló. Ha a példányfiók nem ismert, a rendszer az NTLM-hitelesítést használja, amely csak a kiszolgáló által biztosítja az ügyfél hitelesítését. Jelenleg az SQL Server natív ügyfele végzi el a hitelesítési keresést, amely a példánynévből és a hálózati kapcsolat tulajdonságaiból származtatja az egyszerű szolgáltatásnevet. Az SQL Server-példányok megpróbálják regisztrálni az SPN-eket az indításkor, vagy manuálisan is regisztrálhatók. A regisztráció azonban sikertelen lesz, ha nincs elegendő hozzáférési jogosultság ahhoz a fiókhoz, amely megkísérli regisztrálni az egyszerű szolgáltatásneveket.

A tartomány- és számítógépfiókok automatikusan regisztrálva lesznek az Active Directoryban. Ezek egyszerű szolgáltatásnévként használhatók, vagy a rendszergazdák saját egyszerű szolgáltatásneveket határozhatnak meg. Az SQL Server a biztonságos hitelesítést kezelhetőbbé és megbízhatóbbá teszi azáltal, hogy lehetővé teszi az ügyfelek számára a használni kívánt egyszerű szolgáltatásnév közvetlen megadását.

Jegyzet

Az ügyfélalkalmazás által megadott egyszerű szolgáltatásnév csak akkor használatos, ha a Windows integrált biztonságával létesít kapcsolatot.

Borravaló

Microsoft Kerberos Konfigurációkezelő for SQL Server egy diagnosztikai eszköz, amely segít elháríteni az SQL Serverrel kapcsolatos Kerberos-kapcsolati problémákat. További információ: Microsoft Kerberos Konfigurációkezelő for SQL Server.

A Kerberosról a következő cikkekben talál további információt:

Használat

Az alábbi táblázat azokat a leggyakoribb forgatókönyveket ismerteti, amelyekben az ügyfélalkalmazások engedélyezhetik a biztonságos hitelesítést.

Forgatókönyv Leírás
Az örökölt alkalmazások nem adnak meg egyszerű szolgáltatásneveket. Ez a kompatibilitási forgatókönyv garantálja, hogy az SQL Server korábbi verzióihoz kifejlesztett alkalmazások viselkedése nem változik. Ha nincs megadva spn, az alkalmazás generált SPN-ekre támaszkodik, és nem tudja, melyik hitelesítési módszert használja.
Az SQL Server natív ügyfélprogramjának jelenlegi verzióját használó ügyfélalkalmazás a kapcsolati sztringben tartományi felhasználóként vagy számítógépfiókként, példányspecifikus egyszerű szolgáltatásnévként vagy felhasználó által definiált sztringként adja meg az egyszerű szolgáltatásnevet. A ServerSPN kulcsszó egy szolgáltatóban, inicializálásban vagy kapcsolati sztringben használható a következők végrehajtásához:

-Adja meg az SQL Server-példány által a kapcsolathoz használt fiókot. Ez leegyszerűsíti a Kerberos-hitelesítéshez való hozzáférést. Ha kerberosi kulcsterjesztési központ (KDC) van jelen, és a megfelelő fiók van megadva, a Kerberos-hitelesítés nagyobb valószínűséggel lesz használva, mint az NTLM. A KDC általában ugyanazon a számítógépen található, mint a tartományvezérlő.

-Adjon meg egy egyszerű szolgáltatásnevet az SQL Server-példány szolgáltatásfiókjának kereséséhez. Minden SQL Server-példányhoz két alapértelmezett egyszerű szolgáltatásnév jön létre, amelyek erre a célra használhatók. Ezek a kulcsok azonban nem garantáltan megtalálhatók az Active Directoryban, így ebben az esetben a Kerberos-hitelesítés nem garantált.

-Adjon meg egy egyszerű szolgáltatásnevet, amely az SQL Server-példány szolgáltatásfiókjának keresésére szolgál. Ez lehet bármely felhasználó által definiált sztring, amely leképozza a szolgáltatásfiókot. Ebben az esetben a kulcsot manuálisan kell regisztrálni a KDC-ben, és meg kell felelnie a felhasználó által definiált egyszerű szolgáltatásnévre vonatkozó szabályoknak.

A FeladatátvételpartnerSPN kulcsszóval adhatja meg a feladatátvevő partnerkiszolgáló egyszerű szolgáltatásnevét. A fióktartomány és az Active Directory-kulcsértékek megegyeznek az egyszerű kiszolgálóhoz megadható értékekkel.
Az ODBC-alkalmazások az egyszerű kiszolgáló vagy a feladatátvevő partnerkiszolgáló kapcsolati attribútumaként egy egyszerű szolgáltatásnevet határoznak meg. A kapcsolati attribútum SQL_COPT_SS_SERVER_SPN használható az egyszerű kiszolgálóval való kapcsolat egyszerű szolgáltatásnevének megadására.

A SQL_COPT_SS_FAILOVER_PARTNER_SPN kapcsolatattribútum a feladatátvevő partnerkiszolgáló egyszerű szolgáltatásnevének megadására használható.
Az OLE DB-alkalmazások adatforrás-inicializálási tulajdonságként az egyszerű kiszolgáló vagy a feladatátvevő partnerkiszolgáló adatforrás-inicializálási tulajdonságát határozzák meg. A kapcsolat DBPROPSET_SQLSERVERDBINIT tulajdonságkészletében SSPROP_INIT_SERVER_SPN kapcsolattulajdonság használható a kapcsolat egyszerű szolgáltatásnevének megadására.

A DBPROPSET_SQLSERVERDBINITSSPROP_INIT_FAILOVER_PARTNER_SPN kapcsolati tulajdonsága a feladatátvevő partnerkiszolgáló spn-jének megadására használható.
A felhasználó egy ODBC-adatforrásnévben (DSN) egy kiszolgáló vagy feladatátvevő partnerkiszolgáló egyszerű szolgáltatásnevét adja meg. Az egyszerű szolgáltatásnév az ODBC DSN-ben a DSN beállítási párbeszédpaneljein keresztül adható meg.
A felhasználó az OLE DB Data Link vagy Bejelentkezési párbeszédpanelen egy kiszolgáló vagy feladatátvevő partnerkiszolgáló egyszerű szolgáltatásnevét adja meg. Az egyszerű szolgáltatásnév megadható egy adatkapcsolat vagy Bejelentkezési párbeszédpanelen. A Bejelentkezési párbeszédpanel odBC-vel vagy OLE DB-vel is használható.
Az ODBC-alkalmazások határozzák meg a kapcsolat létrehozásához használt hitelesítési módszert. A kapcsolat sikeres megnyitásakor az alkalmazás lekérdezheti a kapcsolatattribútumot SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD annak megállapításához, hogy melyik hitelesítési módszert használták. Az értékek tartalmazzák, de nem korlátozódnak NTLM és Kerberos.
Az OLE DB-alkalmazások határozzák meg a kapcsolat létrehozásához használt hitelesítési módszert. Ha egy kapcsolat sikeresen meg lett nyitva, az alkalmazás lekérdezheti a DBPROPSET_SQLSERVERDATASOURCEINFO tulajdonságkészletben SSPROP_AUTHENTICATION_METHOD kapcsolattulajdonságot, hogy megállapítsa, melyik hitelesítési módszert használták. Az értékek tartalmazzák, de nem korlátozódnak NTLM és Kerberos.

Feladatátvétel

Az egyszerű szolgáltatásneveket a rendszer nem tárolja a feladatátvételi gyorsítótárban, ezért nem adható át a kapcsolatok között. A rendszer a kapcsolati sztringben vagy kapcsolatattribútumokban megadott összes kapcsolati kísérlethez használja az egyszerű felhasználóneveket.

Kapcsolatkészletezés

Az alkalmazásoknak tisztában kell lenniük azzal, hogy egyes, de nem minden kapcsolati sztringben az egyszerű szolgáltatásneveket megadva hozzájárulhatnak a készlet töredezettségéhez.

Az alkalmazások programozott módon adhatnak meg spN-eket kapcsolati attribútumként a kapcsolati sztringszavak megadása helyett. Ez segíthet a kapcsolatkészlet töredezettségének kezelésében.

Az alkalmazásoknak tisztában kell lenniük azzal, hogy a kapcsolati sztringekben lévő egyszerű szolgáltatásneveket felül lehet bírálni a megfelelő kapcsolati attribútumok beállításával, de a kapcsolatkészletezés által használt kapcsolati sztringek készletezési célokra használják a kapcsolati sztringértékeket.

Down-Level kiszolgáló viselkedése

Az új kapcsolati viselkedést az ügyfél implementálja; ezért nem az SQL Server egy verziójára vonatkozik.

Csatolt kiszolgálók és delegálás

Csatolt kiszolgálók létrehozásakor a sp_addlinkedserver@provstr paramétere használható a kiszolgáló és a feladatátvevő partner spn-jeinek megadására. Ennek előnyei megegyeznek az ügyfélkapcsolati sztringek egyszerű szolgáltatásneveinek megadásával: Egyszerűbb és megbízhatóbb Kerberos-hitelesítést használó kapcsolatokat létrehozni.

A csatolt kiszolgálókkal való delegáláshoz Kerberos-hitelesítés szükséges.

Az alkalmazások által meghatározott egyszerű szolgáltatásnevekkel kapcsolatos felügyeleti szempontok

Ha azt választja, hogy egy alkalmazásban (kapcsolati sztringeken keresztül) vagy programozott módon adja-e meg az spn-eket a kapcsolat tulajdonságain keresztül (ahelyett, hogy az alapértelmezett szolgáltató által létrehozott EGYSZERŰ HÁLÓZATOKra támaszkodik), vegye figyelembe a következő tényezőket:

  • Biztonság: A megadott egyszerű szolgáltatásnév nyilvánosságra hozza a védett információkat?

  • Megbízhatóság: Az alapértelmezett egyszerű szolgáltatásnevek használatának engedélyezéséhez az SQL Server-példányt futtató szolgáltatásfióknak megfelelő jogosultságokkal kell rendelkeznie a KDC Active Directory frissítéséhez.

  • Kényelem és hely átláthatósága: Hogyan befolyásolja az alkalmazás egyszerű szolgáltatásneveit, ha az adatbázis egy másik SQL Server-példányra kerül? Ez az egyszerű kiszolgálóra és a feladatátvevő partnerre is vonatkozik, ha adatbázis-tükrözést használ. Ha a kiszolgáló módosítása azt jelenti, hogy az egyszerű szolgáltatásneveket módosítani kell, ez hogyan befolyásolja az alkalmazásokat? Kezelik a módosításokat?

Az egyszerű szolgáltatásnév megadása

A párbeszédpaneleken és a kódban megadhatja az egyszerű szolgáltatásneveket. Ez a szakasz azt ismerteti, hogyan adhatja meg az egyszerű szolgáltatásneveket.

Az egyszerű szolgáltatásnév maximális hossza 260 karakter.

Az SPN-k által a kapcsolati sztringekben vagy kapcsolati attribútumokban használt szintaxis a következő:

Szintaxis Leírás
MSSQLSvc/fqdn A szolgáltató által létrehozott alapértelmezett egyszerű szolgáltatásnév egy alapértelmezett példányhoz, ha nem TCP protokollt használ.

teljes tartománynév teljes tartománynév.
MSSQLSvc/fqdn:port A szolgáltató által létrehozott alapértelmezett SPN a TCP használatakor.

port TCP-portszám.
MSSQLSvc/fqdn:InstanceName A szolgáltató által létrehozott alapértelmezett SPN egy elnevezett példányhoz, ha a protokoll nem TCP-t használ.

InstanceName egy SQL Server-példány neve.
HOST/fqdn

HOST/MachineName
A Windows által automatikusan regisztrált beépített számítógépfiókokhoz leképezett egyszerű szolgáltatásnév.
felhasználónév@tartomány Tartományi fiók közvetlen specifikációja.

Felhasználónév windowsos felhasználónév.

tartomány Windows-tartománynév vagy teljes tartománynév.
MachineName$@tartomány Számítógépfiók közvetlen specifikációja.

(Ha a szerver, amelyhez csatlakozol, HELYI RENDSZER vagy HÁLÓZATI SERVICE fiókok alatt fut, a Kerberos hitelesítéshez a ServerSPN lehet MachineName$@domain formátumban.)
KDCKey/MachineName Felhasználó által megadott egyszerű szolgáltatásnév.

KDCKey egy alfanumerikus sztring, amely megfelel a KDC-kulcs szabályainak.

AZ ODBC és az OLE DB szintaxisa támogatja az egyszerű szolgáltatásneveket

Szintaxisspecifikus információkért tekintse meg a következő témaköröket: