Oktatóanyag: Active Directory-hitelesítés használata Linuxon futó SQL Serverrel

A következőkre vonatkozik:SQL Server Linux rendszeren

Ez az oktatóanyag bemutatja, hogyan konfigurálhatja az SQL Servert Linuxon az Active Directory-hitelesítés, más néven integrált hitelesítés támogatására. A SQL Server Linuxon történő Active Directory-hitelesítés áttekintéséhez tekintse meg témakört.

Ez az oktatóanyag a következő feladatokból áll:

  • Sql Server-gazdagép csatlakoztatása Active Directory-tartományhoz
  • Active Directory-felhasználó létrehozása az SQL Serverhez és az SPN beállítása
  • Az SQL Server szolgáltatáskulcslap konfigurálása
  • A keytab-fájl védelme
  • Az SQL Server konfigurálása a Keytab-fájl Kerberos-hitelesítéshez való használatára
  • Active Directory-alapú bejelentkezések létrehozása Transact-SQL
  • Csatlakozás AZ SQL Serverhez Active Directory-hitelesítéssel

Prerequisites

Az Active Directory-hitelesítés konfigurálása előtt a következőkre van szükség:

Note

Az SQL Server 2025 -től (17.x) kezdődően a SUSE Linux Enterprise Server (SLES) nem támogatott.

Sql Server-gazdagép csatlakoztatása Active Directory-tartományhoz

Csatlakozzon az SQL Server Linux-gazdagépéhez egy Active Directory-tartományvezérlővel. Az Active Directory-tartományhoz való csatlakozásról további információt az Sql Server csatlakoztatása Linux-gazdagépen az Active Directory-tartományhoz című témakörben talál.

Active Directory-felhasználó létrehozása az SQL Serverhez és az SPN beállítása

Note

Az alábbi lépések a teljesen kiépített tartománynevet (FQDN) használják. Ha az Azure platformon van, a folytatás előtt létre kell hoznia egy FQDN-t.

  1. A tartományvezérlőn futtassa a New-ADUser PowerShell parancsot egy új Active Directory-felhasználó létrehozásához olyan jelszóval, amely soha nem jár le. Az alábbi példa a fiók sqlsvcnevét adja, de a fiók neve bármilyen lehet. A rendszer kérni fogja, hogy adjon meg egy új jelszót a fiókhoz.

    Import-Module ActiveDirectory
    
    New-ADUser sqlsvc -AccountPassword (Read-Host -AsSecureString "Enter Password") -PasswordNeverExpires $true -Enabled $true
    

    Ajánlott biztonsági eljárás, ha dedikált Active Directory-fiókkal rendelkezik az SQL Serverhez, így az SQL Server-példány hitelesítő adatai nem lesznek megosztva más szolgáltatásokkal ugyanazzal a fiókkal. A meglévő Active Directory-fiókokat azonban opcionálisan újra felhasználhatja, ha ismeri a fiók jelszavát (amely a következő lépésben egy keytab-fájl létrehozásához szükséges). Emellett engedélyezni kell a fiókot, hogy támogassa a felhasználói fiók 128 bites és 256 bites Kerberos AES-titkosítását (msDS-SupportedEncryptionTypes attribútumát). Ha ellenőrizni szeretné, hogy a fiók engedélyezve van-e az AES-titkosításhoz, keresse meg a fiókot az Active Directory Felhasználók és számítógépek segédprogramban, és válassza a Tulajdonságok lehetőséget. Keresse meg a Fiókok lapot a Tulajdonságok lapon, és ellenőrizze, hogy a következő két jelölőnégyzet be van-e jelölve.

    1. Ez a fiók támogatja a Kerberos AES 128 bites titkosítását
    2. Ez a fiók támogatja a Kerberos AES 256 bites titkosítását
  2. A setspn.exeeszközzel állítsa be a fiók ServicePrincipalName (SPN) értékét. Az SPN-t pontosan az alábbi példa szerint kell formázni. Az SQL Server-gazdagép teljes tartománynevét az SQL Server-gazdagépen futtatva hostname --all-fqdns találja meg. A TCP-portnak 1433-nak kell lennie, hacsak nem konfigurálta az SQL Servert egy másik portszám használatára.

    setspn -A MSSQLSvc/<fully qualified domain name of host machine>:<tcp port> sqlsvc
    setspn -A MSSQLSvc/<netbios name of the host machine>:<tcp port> sqlsvc
    

    Note

    Ha hibaüzenetet kap, Insufficient access rights forduljon a tartományi rendszergazdához, hogy rendelkezik-e megfelelő engedélyekkel a szolgáltatásnév bejegyzés beállításához ezen a fiókon. Az SPN regisztrálásához használt fióknak Write servicePrincipalName engedélyekre lesz szüksége. További információ: Szolgáltatásnév regisztrálása Kerberos-kapcsolatokhoz.

    Ha a jövőben módosítja a TCP-portot, a setspn parancsot újra kell futtatnia az új portszámmal. Az új SPN-t is hozzá kell adnia az SQL Server szolgáltatáskulcstáblához a következő szakaszban leírt lépések végrehajtásával.

További információ: Szolgáltatásnév regisztrálása Kerberos-kapcsolatokhoz.

Az SQL Server szolgáltatáskulcslap konfigurálása

Az Active Directory-hitelesítés linuxos SQL Serverhez való konfigurálásához egy Active Directory-felhasználói fiókra és az előző szakaszban létrehozott egyszerű szolgáltatásnévre van szükség.

Important

Ha az Active Directory-fiók jelszava módosul, vagy annak a fióknak a jelszava, amelyhez az spN-ek hozzá vannak rendelve, frissítenie kell a kulcstáblát az új jelszóval és a kulcsverziószámmal (KVNO). Egyes szolgáltatások automatikusan is elforgathatják a jelszavakat. A váratlan állásidő elkerülése érdekében tekintse át a szóban forgó fiókok jelszóváltási szabályzatát, és hangolja össze az ütemezett karbantartási tevékenységekkel.

SPN-kulcstáblák bejegyzései

  1. Ellenőrizze az előző lépésben létrehozott Active Directory-fiók kulcsverziószámát (KVNO). Általában 2, de egy másik egész szám is lehet, ha többször módosította a fiók jelszavát. Az SQL Server gazdagépén futtassa az alábbi parancsokat:

    • Az alábbi példák feltételezik, hogy az user a @CONTOSO.COM tartományban van. Módosítsa a felhasználónevet és a tartománynevet a saját felhasználónevére és tartománynevére.
    kinit user@CONTOSO.COM
    kvno user@CONTOSO.COM
    kvno MSSQLSvc/<fully qualified domain name of host machine>:<tcp port>@CONTOSO.COM
    

    Note

    Az SPN-ek propagálása az ön tartományán keresztül több percet is igénybe vehet, különösen akkor, ha a tartomány nagy. Ha hibaüzenetet kap, várjon néhány percet, kvno: Server not found in Kerberos database while getting credentials for MSSQLSvc/<fully qualified domain name of host machine>:<tcp port>@CONTOSO.COMés próbálkozzon újra. Az előző parancsok csak akkor működnek, ha a kiszolgáló egy korábbi szakaszban tárgyalt Active Directory-tartományhoz lett csatlakoztatva.

  2. A ktpass használatával adjon hozzá keytab-bejegyzéseket az egyes spN-ekhez a Windows rendszerű parancssor következő parancsaival:

    • <DomainName>\<UserName> - Active Directory felhasználói fiók
    • @CONTOSO.COM – A tartománynév használata
    • /kvno <#> - Cserélje le <#> a korábbi lépésben beszerzett KVNO-ra
    • <password> – A jelszónak az SQL Server alapértelmezett jelszószabályzatát kell követnie. Alapértelmezés szerint a jelszónak legalább nyolc karakter hosszúnak kell lennie, és a következő négy készletből három karakterből kell állnia: nagybetűk, kisbetűk, 10 számjegyből és szimbólumokból. A jelszavak legfeljebb 128 karakter hosszúak lehetnek. Használjon olyan jelszavakat, amelyek a lehető legkomplexebbek és hosszúak.
    ktpass /princ MSSQLSvc/<fully qualified domain name of host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser <DomainName>\<UserName> /out mssql.keytab -setpass -setupn /kvno <#> /pass <password>
    
    ktpass /princ MSSQLSvc/<fully qualified domain name of host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <password>
    
    ktpass /princ MSSQLSvc/<netbios name of the host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <password>
    
    ktpass /princ MSSQLSvc/<netbios name of the host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <password>
    
    ktpass /princ <UserName>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <password>
    
    ktpass /princ <UserName>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <password>
    

    Az előző parancsok lehetővé teszik mind az AES, mind az RC4 titkosítási titkosítást az Active Directory-hitelesítéshez. Az RC4 egy régebbi titkosítási algoritmus, és ha magasabb szintű biztonságra van szükség, akkor választhatja, hogy csak az AES titkosítási algoritmussal hozza létre a kulcstábla bejegyzéseit.

    Note

    Az utolsó két UserName bejegyzésnek kisbetűsnek kell lennie, vagy az engedélyhitelesítés sikertelen lehet.

  3. Az előző parancsok végrehajtása után rendelkeznie kell egy keytab nevű fájllal mssql.keytab. Másolja át a fájlt az SQL Server gépére a mappa /var/opt/mssql/secretsalatt.

  4. Biztonságossá teheti a keytab-fájlt.

    Bárki, aki hozzáfér ehhez a keytab-fájlhoz, megszemélyesítheti az SQL Servert a tartományban, ezért győződjön meg arról, hogy korlátozza a fájlhoz való hozzáférést, hogy csak az mssql-fiók rendelkezik olvasási hozzáféréssel:

    sudo chown mssql:mssql /var/opt/mssql/secrets/mssql.keytab
    sudo chmod 400 /var/opt/mssql/secrets/mssql.keytab
    
  5. A keytab-fájl elérésekor használni kívánt fiók megadásához az mssql-conf alábbi konfigurációs beállítást kell beállítani az eszközzel.

    sudo mssql-conf set network.privilegedadaccount <username>
    

    Note

    Csak a felhasználónevet adja meg, ne a tartománynév\felhasználónév vagy felhasználónév@tartomány. Az SQL Server belsőleg szükség szerint hozzáadja a tartománynevet és ezt a felhasználónevet a használat során.

  6. Az alábbi lépésekkel konfigurálhatja az SQL Servert a Kerberos-hitelesítés keytab-fájljának használatának megkezdéséhez.

    sudo mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
    sudo systemctl restart mssql-server
    

    A teljesítmény javítása érdekében letilthatja a tartományvezérlővel létesített UDP-kapcsolatokat. Sok esetben az UDP-kapcsolatok konzisztensen meghiúsulnak, amikor tartományvezérlőhöz csatlakoznak, így beállíthatja a konfigurációs beállításokat /etc/krb5.conf az UDP-hívások kihagyásához. Szerkessze /etc/krb5.conf és állítsa be a következő beállításokat:

    /etc/krb5.conf
    [libdefaults]
    udp_preference_limit=0
    

Ezen a ponton készen áll az Active Directory-alapú bejelentkezések használatára az SQL Serveren.

Active Directory-alapú bejelentkezések létrehozása Transact-SQL

  1. Csatlakozzon az SQL Serverhez, és hozzon létre egy új, Active Directory-alapú bejelentkezést:

    CREATE LOGIN [CONTOSO\user]
        FROM WINDOWS;
    
  2. Ellenőrizze, hogy a bejelentkezés szerepel-e a sys.server_principals rendszerkatalógus nézetben:

    SELECT name
    FROM sys.server_principals;
    

Csatlakozás AZ SQL Serverhez Active Directory-hitelesítéssel

Jelentkezzen be egy ügyfélszámítógépre a tartomány hitelesítő adataival. Most már anélkül csatlakozhat az SQL Serverhez, hogy újra meg szeretné adni a jelszavát az Active Directory-hitelesítéssel. Ha létrehoz egy bejelentkezést egy Active Directory-csoporthoz, minden olyan Active Directory-felhasználó, aki tagja ennek a csoportnak, ugyanúgy csatlakozhat.

A kliensek által az Active Directory-hitelesítéshez használt kapcsolati sztring paramétere attól függ, hogy melyik illesztőprogramot használják. Vegye figyelembe a következő szakaszokban szereplő példákat.

sqlcmd a tartományhoz csatlakoztatott Linux-ügyfélen

Jelentkezzen be egy tartományhoz csatlakoztatott Linux-ügyfélbe az ssh-val és a tartomány hitelesítő adataival:

ssh -l user@contoso.com client.contoso.com

Győződjön meg arról, hogy telepítette az mssql-tools csomagot, majd csatlakozzon sqlcmd hitelesítő adatok megadása nélkül:

sqlcmd -S mssql-host.contoso.com

Az SQL Windowstól eltérőEn a Kerberos-hitelesítés működik a helyi kapcsolatokhoz az SQL Linuxban. Azonban továbbra is meg kell adnia az SQL Linux-gazdagép teljes tartománynevét, és az Active Directory-hitelesítés nem fog működni, ha csatlakozni próbál ., localhost, stb. 127.0.0.1.

SSMS tartományba csatlakozott Windows-kliensen

Jelentkezzen be egy tartományhoz csatlakoztatott Windows-ügyfélbe a tartomány hitelesítő adataival. Győződjön meg arról, hogy az SQL Server Management Studio telepítve van, majd csatlakozzon az SQL Server-példányhoz (például mssql-host.contoso.com) a Windows-hitelesítés megadásával a Csatlakozás a kiszolgálóhoz párbeszédpanelen.

Active Directory-hitelesítés más ügyfélillesztőkkel

Az alábbi táblázat más kliensmeghajtókhoz tartozó ajánlásokat ismerteti:

ügyfélmeghajtó Recommendation
JDBC Az SQL Server csatlakoztatásához használja a Kerberos integrált hitelesítést.
ODBC Használjon integrált hitelesítést.
ADO.NET Kapcsolati sztring szintaxisa.

További konfigurációs beállítások

Ha külső segédprogramokat használ, például PBIS, VAS, vagy Centrify a Linux-gazdagép Active Directory tartományhoz való csatlakoztatásához, és az OpenLDAP-kódtár közvetlen használatára szeretné kényszeríteni SQL Server, a disablesssd beállítást az alábbi módon konfigurálhatja mssql-conf:

sudo mssql-conf set network.disablesssd true
systemctl restart mssql-server

Note

Vannak olyan segédprogramok, mint a realmd, amely beállítja az SSSD-t, míg más eszközök, például a PBIS, a VAS és a Centrify nem konfigurálják az SSSD-t. Ha az Active Directory-tartományhoz való csatlakozáshoz használt segédprogram nem állítja be az SSSD-t, a beállítást a következőre kell konfigurálnia disablesssdtrue. Bár ez nem kötelező, mivel az SQL Server az OpenLDAP-mechanizmusra való visszatérés előtt megkísérli használni az SSSD-t az Active Directoryhoz, sokkal hatékonyabb konfigurálni, hogy az SQL Server az SSSD-mechanizmust közvetlenül megkerülő OpenLDAP-hívásokat hajt végre.

Ha a tartományvezérlő támogatja az LDAPS-t, kényszerítheti az SQL Server és a tartományvezérlők közötti összes kapcsolatot, hogy ldAPS-en keresztül legyen. Ha ellenőrizni szeretné, hogy az ügyfél az LDAPS-en keresztül kapcsolatba léphet-e a tartományvezérlővel, futtassa a következő bash-parancsot. ldapsearch -H ldaps://contoso.com:3269 Ha azt szeretné, hogy az SQL Server csak LDAPS-t használjon, futtassa a következőket:

sudo mssql-conf set network.forcesecureldap true
systemctl restart mssql-server

Ez az SSSD-n keresztül az LDAPS-t fogja használni, ha az Active Directory-tartomány csatlakoztatása a gazdagépen az SSSD-csomaggal történt, és a disablesssd nincs igaz értékre állítva. Ha disablesssd igaz értékre van állítva, és forcesecureldap igaz értékre van állítva, akkor LDAPS protokollt fog használni az SQL Server által kezdeményezett OpenLDAP-kódtár-hívásokon keresztül.

SQL Server 2017 CU 14 utáni időszak

Az SQL Server 2017 (14.x) CU 14-től kezdődően, ha az SQL Server egy Active Directory-tartományvezérlőhöz csatlakozik külső szolgáltatókkal, és úgy van konfigurálva, hogy az általános Active Directory-kereséshez OpenLDAP-hívásokat használjon a disablesssd igazra állításával, akkor a enablekdcfromkrb5 opcióval is kényszerítheti az SQL Servert arra, hogy a krb5 könyvtárat használja a KDC-kereséshez a KDC-kiszolgáló DNS-keresése helyett.

Ez akkor lehet hasznos, ha manuálisan szeretné konfigurálni azOKAT a tartományvezérlőket, amelyekkel az SQL Server kommunikálni próbál. Az OpenLDAP-kódtár-mechanizmust pedig a KDC-lista használatával használhatja a következőben krb5.conf: .

Először állítsa be disablesssd az enablekdcfromkrb5conf igaz értéket, majd indítsa újra az SQL Servert:

sudo mssql-conf set network.disablesssd true
sudo mssql-conf set network.enablekdcfromkrb5conf true
systemctl restart mssql-server

Ezután konfigurálja a KDC-listát az /etc/krb5.conf alábbiak szerint:

[realms]
CONTOSO.COM = {
  kdc = dcWithGC1.contoso.com
  kdc = dcWithGC2.contoso.com
}

Bár ez nem ajánlott, használhat segédprogramokat, például realmd-t, amely az SSSD-t állítja be a Linux-gazdagép tartományhoz való csatlakozásakor, miközben a disablesssd értéket true-ra állítják, hogy az SQL Server az Active Directoryval kapcsolatos hívásokhoz az OpenLDAP-hívásokat használja az SSSD helyett.

Note

Az SQL Server teljes tartománynévvel történő bejelentkezése (például CONTOSO.COM\Username) nem támogatott. Használja a CONTOSO\Username formátumot.

A tartományi helyi csoportokból származó SQL Server-bejelentkezések nem támogatottak. Használjon inkább globális biztonsági tartománycsoportokat.

Közreműködés az SQL dokumentációjában

Tudta, hogy saját maga szerkesztheti az SQL-tartalmakat? Ha így tesz, nem csak a dokumentáció fejlesztésében segít, hanem az oldal közreműködőjeként is jóváírást kap.

További információ: Microsoft Learn-dokumentáció szerkesztése.