Megosztás a következőn keresztül:


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

Előfeltételek

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

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

Megjegyzés:

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
    

    Megjegyzés:

    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.

Fontos

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
    

    Megjegyzés:

    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.

    Megjegyzés:

    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 következő konfigurációs beállítást az mssql-conf eszközzel kell beállítani a keytab-fájl elérésekor használni kívánt fiók megadásához.

    sudo mssql-conf set network.privilegedadaccount <username>
    

    Megjegyzés:

    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 az sqlcmd használatával 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ó Ajánlás
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 olyan külső segédprogramokat használ, mint a PBIS, a VAS vagy a Centrify , hogy csatlakozzanak a Linux-gazdagéphez az Active Directory-tartományhoz, és szeretné az SQL Servert közvetlenül az OpenLDAP-kódtár használatára kényszeríteni, a következő módon konfigurálhatja a beállítást az disablesssdmssql-conf használatával:

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

Megjegyzés:

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.

Megjegyzés:

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.