Szolgáltatásnév regisztrálása Kerberos-kapcsolatokhoz

A következőkre vonatkozik:SQL Server

A Kerberos-hitelesítés SQL Serverrel való használatához az alábbi feltételek mindegyikének teljesülnie kell:

  • Az ügyfél- és kiszolgálószámítógépeknek ugyanahhoz a Windows-tartományhoz vagy megbízható tartományokhoz kell tartozniük.

  • Egy Szolgáltatói Nevet (SPN) regisztrálni kell az Active Directoryban, amely a Kulcselosztó Központ szerepét tölti be egy Windows-tartományban. A szolgáltatásnév a regisztráció után hozzárendelődik az SQL Server-példány szolgáltatását elindító Windows-fiókhoz. Ha az SPN regisztráció nem történt meg vagy sikertelen, a Windows biztonsági réteg nem tudja meghatározni az SPN-hez társított fiókot, és a Kerberos-hitelesítés nem kerül alkalmazásra.

    Jegyzet

    Ha a kiszolgáló nem tudja automatikusan regisztrálni az SPN-t, akkor az SPN-t manuálisan kell regisztrálni. Lásd a manuális SPN-regisztráció.

A sys.dm_exec_connections dinamikus felügyeleti nézet lekérdezésével ellenőrizheti, hogy a kapcsolat Kerberost használ-e. Futtassa a következő lekérdezést, és ellenőrizze a auth_scheme oszlop értékét, amely KERBEROS, ha a Kerberos engedélyezve van.

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

Borravaló

Microsoft Kerberos Configuration Manager 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 Configuration Manager for SQL Server.

Az SPN szerepe a hitelesítésben

Amikor egy alkalmazás megnyitja a kapcsolatot, és Windows-hitelesítést használ, az SQL Server natív kliense átadja az SQL Server számítógép nevét, a példány nevét, és opcionálisan egy SPN-t. Ha a kapcsolat megfelel egy SPN-nek (szolgáltatói név), a rendszer változtatás nélkül használja.

Ha a kapcsolat nem ad át SPN-t, a rendszer a használt protokoll, a kiszolgálónév és a példánynév alapján egy alapértelmezett SPN-t hoz létre.

Az SPN-t mindkét fenti esetben továbbítják a kulcsterjesztési központnak, hogy megszerezze a kapcsolat hitelesítéséhez szükséges biztonsági jogkivonatot. Ha egy biztonsági jogkivonat nem érhető el, a hitelesítés NTLM-et használ.

Az SPN az a név, amellyel az ügyfél egyedileg azonosítja egy szolgáltatás példányát. A Kerberos hitelesítési szolgáltatás spN használatával hitelesíthet egy szolgáltatást. Amikor egy ügyfél csatlakozni szeretne egy szolgáltatáshoz, megkeresi a szolgáltatás egy példányát, összeállít egy SPN-t az adott példányhoz, csatlakozik a szolgáltatáshoz, és megadja a szolgáltatás SPN-jét a hitelesítéshez.

Jegyzet

A cikkben szereplő információk a klaszterezést használó SQL Server-konfigurációkra is vonatkoznak.

A Windows-hitelesítés a felhasználók által az SQL Serveren való hitelesítés előnyben részesített módszere. A Windows-hitelesítést használó ügyfeleket az NTLM vagy a Kerberos hitelesíti. Active Directory-környezetben a Kerberos-hitelesítést mindig először megkísérlik.

Engedélyek

Az Adatbázismotor szolgáltatás elindulásakor megpróbálja regisztrálni a szolgáltatásnév (SPN) nevét. Tegyük fel, hogy az SQL Servert indító fiók nem rendelkezik engedéllyel az SPN Active Directory Domain Servicesben való regisztrálásához. Ebben az esetben ez a hívás meghiúsul, és a rendszer egy figyelmeztető üzenetet naplóz az alkalmazás eseménynaplójában és az SQL Server hibanaplójában is.

Az egyszerű szolgáltatásnév regisztrálásához az adatbázismotornak egy beépített fiókban kell futnia, például Local System (nem ajánlott), vagy NETWORK SERVICE, vagy olyan fiókban, amely rendelkezik engedéllyel az egyszerű szolgáltatásnév regisztrálásához. Az egyszerű szolgáltatásnév (SPN) regisztrálható tartományi rendszergazdai fiókkal, de éles környezetben ez nem javasolt. Az SQL Servert virtuális fiók vagy felügyelt szolgáltatásfiók (MSA) használatával is futtathatja. A virtuális fiókok és az MSA-k egyaránt regisztrálhatnak Szolgáltatásfőneveket. Ha az SQL Server nem ezen fiókok egyike alatt fut, az egyszerű szolgáltatásnév nincs regisztrálva az indításkor, és a tartományi rendszergazdának manuálisan kell regisztrálnia az egyszerű szolgáltatásnevet.

SPN-formátumok

Az SPN formátum támogatja a Kerberos-hitelesítést TCP/IP-címen, elnevezett csöveken és megosztott memórián. Az elnevezett és az alapértelmezett példányok esetén támogatott SPN-formátumok a következők.

Elnevezett példány

  • MSSQLSvc/<FQDN>:[<port> | <példánynév>], ahol:

    • MSSQLSvc a regisztrálandó szolgáltatás.
    • <FQDN> a kiszolgáló teljesen meghatározott tartományneve.
    • <port> a TCP-port száma.
    • <instancename> az SQL Server-példány neve.

Alapértelmezett példány

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

    • MSSQLSvc a regisztrálandó szolgáltatás.
    • <FQDN> a kiszolgáló teljesen meghatározott tartományneve.
    • <port> a TCP-port száma.
SPN formátum Leírás
MSSQLSvc/<FQDN>:<port> 1 A szolgáltató által létrehozott alapértelmezett SPN a TCP használatakor. <port> TCP-portszám.
MSSQLSvc/<FQDN> A szolgáltató által létrehozott alapértelmezett SPN egy alapértelmezett példányhoz, amikor egy másik protokollt használnak a TCP helyett. <FQDN> egy teljesen minősített tartománynév.
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> az SQL Server egy példányának neve.

1 Az SPN formátumhoz nincs szükség portszámra. A többportos kiszolgálók vagy a portszámokat nem használó protokollok továbbra is használhatják a Kerberos-hitelesítést.

Olyan TCP/IP-kapcsolat esetén, ahol a TCP-port szerepel az egyszerű szolgáltatásnévben, az SQL Servernek engedélyeznie kell a TCP protokoll, hogy a felhasználó Kerberos-hitelesítéssel csatlakozzon.

Automatikus SPN-regisztráció

Amikor elindul az SQL Server adatbázismotorjának egy példánya, az SQL Server megpróbálja regisztrálni az SPN-t az SQL Server szolgáltatáshoz. Amikor a példány leáll, az SQL Server megpróbálja megszüntetni a SPN regisztrációját. TCP/IP-kapcsolat esetén az SPN a MSSQLSvc/<FQDN>:<tcpport>formátumban van regisztrálva. A rendszer mind a megnevezett példányokat, mind az alapértelmezett példányokat MSSQLSvcregisztrálja, a példányok megkülönböztetéséhez a <tcpport> értékre támaszkodva.

Kerberost támogató egyéb kapcsolatok esetében a szolgáltatás-azonosító név (SPN) egy megadott példány formátumban MSSQLSvc/<FQDN>:<instancename> van regisztrálva. Az alapértelmezett példány regisztrálásának formátuma MSSQLSvc/<FQDN>.

Az SQL Server indítási fiókjának engedélyt adni az SPN (szolgáltatás példány neve) regisztrálásához és módosításához, hajtsa végre a következő lépéseket:

  1. A tartományvezérlő gépen lépjen a Active Directory - felhasználók és számítógépekszolgáltatásba.

  2. Válassza a Nézet > Speciálislehetőséget.

  3. A Számítógépekterületen keresse meg az SQL Server-számítógépet, majd kattintson a jobb gombbal, és válassza a Tulajdonságoklehetőséget.

  4. Válassza a Biztonsági lapot, majd válassza Speciálislehetőséget.

  5. Ha az SQL Server indítási fiókja nem szerepel a listában, válassza a Hozzáadás lehetőséget. A hozzáadás után hajtsa végre a következő lépéseket:

    1. Válassza ki a fiókot, és válassza Szerkesztéslehetőséget.

    2. Az Engedélyek csoportban válassza az Érvényesített írás a szolgáltatásnévhez lehetőséget.

    3. Görgessen le és a Tulajdonságok csoportban válassza a következőt:

      • Olvasás: servicePrincipalName
      • ServicePrincipalName írása
    4. Válassza kétszer OK lehetőséget.

  6. Zárja be Active Directory Felhasználók és Számítógépek.

Ha a szolgáltatásfiók nem rendelkezik az ezekhez a műveletekhez szükséges engedélyekkel, manuális beavatkozásra lehet szükség az SPN (szolgáltatás felelő neve) regisztrálásához vagy a regisztráció megszüntetéséhez.

Manuális egyszerű szolgáltatásnév-regisztráció

Az SPN kézi regisztrálásához használhatja a Windows rendszerbe beépített setspn eszközt. setspn.exe egy parancssori eszköz, amely lehetővé teszi a Szolgáltatásnévnevek (SPN) címtártulajdonság olvasását, módosítását és törlését. Ez az eszköz azt is lehetővé teszi, hogy megtekintse az aktuális egyszerű szolgáltatásneveket, alaphelyzetbe állítsa a fiók alapértelmezett egyszerű szolgáltatásneveit, és kiegészítő egyszerű szolgáltatásneveket vegyen fel vagy töröljön.

A setspn eszközről, a szükséges engedélyekről és példákról a setspncímű cikkben olvashat.

Az alábbi példa azt a szintaxist szemlélteti, amellyel manuálisan regisztrálhat spN-t egy TCP/IP-kapcsolathoz tartományi felhasználói fiók használatával:

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

Jegyzet

Ha egy SPN már létezik, azt törölni kell az újbóli regisztráció előtt. Ezt a kapcsolóval -D használatával teheti meg. Az alábbi példák bemutatják, hogyan regisztrálhat manuálisan egy új példányalapú SPN-t. Tartományi felhasználói fiókot használó alapértelmezett példány esetén használja a következőt:

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

Névvel ellátott példány esetén ezt használja:

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

Az Always On rendelkezésre állási csoport konfigurációiról további információt a Figyelők és a Kerberos (SPN-ek)című témakörben talál.

Ügyfélkapcsolatok

Az ügyfélillesztők támogatják a felhasználó által megadott szolgáltatási főneveket (SPN-eket). Ha azonban egy szerver alapú név nincs megadva, az automatikusan generálódik az ügyfélkapcsolat típusa alapján. TCP-kapcsolat esetén egy MSSQLSvc/FQDN:[<port>] formátumú szolgáltatásnevet használnak mind a névvel ellátott, mind az alapértelmezett példányokhoz.

Az elnevezett csövek és a megosztott memóriakapcsolatok esetében a MSSQLSvc/<FQDN>:<instancename> formátumú szolgáltatásnevet használják a nevesített példányhoz, a MSSQLSvc/<FQDN> pedig az alapértelmezett példányhoz.

Szolgáltatásfiók használata szolgáltatási főnévként (SPN)

A szolgáltatásfiókok szolgáltatásfőazonosítóként is használhatók. A Kerberos-hitelesítés kapcsolatattribútumán keresztül vannak megadva, és a következő formátumokat kell használnia:

  • tartományi felhasználói fiók username\@domain vagy domain\username

  • machine$\@domain vagy host\FQDN számítógépes tartományi fiókhoz, például Local System vagy NETWORK SERVICE.

A kapcsolat hitelesítési módjának meghatározásához hajtsa végre a következő lekérdezést.

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

A hitelesítés alapértelmezései

Az alábbi táblázat az SPN-regisztrációs forgatókönyvek alapján a használt hitelesítési alapértelmezett értékeket ismerteti.

Forgatókönyv Hitelesítési módszer
Az SPN társítva van a megfelelő tartományi fiókkal, virtuális fiókkal, MSA-val vagy beépített fiókkal. Például Local System vagy NETWORK SERVICE. A helyi kapcsolatok NTLM-et, a távoli kapcsolatok kerberost használnak.
Az SPN a megfelelő tartományi fiók, virtuális fiók, MSA vagy beépített fiók. A helyi kapcsolatok NTLM-et, a távoli kapcsolatok kerberost használnak.
Az SPN helytelen tartományi fiókra, virtuális fiókra, MSA-ra vagy beépített fiókra van leképezve. A hitelesítés sikertelen.
A szolgáltatásnév vizsgálata sikertelen, vagy nem felel meg helyes tartományi fióknak, virtuális fióknak, MSA-nak vagy beépített fióknak, esetleg nem helyes tartományi fiók, virtuális fiók, MSA vagy beépített fiók. A helyi és a távoli kapcsolatok NTLM-et használnak.

Jegyzet

Helyes azt jelenti, hogy a regisztrált SPN által leképezett fiók az az a fiók, amely alatt az SQL Server szolgáltatás fut.

Megjegyzések

A dedikált rendszergazdai kapcsolat (DAC) egy példánynév-alapú szolgáltatásnév-princípiumot használ. A Kerberos-hitelesítés DAC-tal is használható, ha az SPN (szolgáltatásnév) regisztrációja sikeresen megtörtént. Alternatív megoldásként megadhatja a fiók nevét egyszerű szolgáltatásnévként.

Ha az SPN-regisztráció sikertelen az indítás során, a rendszer rögzíti ezt a hibát az SQL Server hibanaplójában, és az indítás folytatódik.

Ha az SPN-regisztráció leáll a leállítás során, a rendszer rögzíti ezt a hibát az SQL Server hibanaplójában, és a leállítás folytatódik.