Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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:
- Active Directory tartományvezérlő (Windows) beállítása a hálózaton
- Az SQL Server telepítése
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.
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 $trueAjá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-SupportedEncryptionTypesattribú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.- Ez a fiók támogatja a Kerberos AES 128 bites titkosítását
- Ez a fiók támogatja a Kerberos AES 256 bites titkosítását
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-fqdnstalá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> sqlsvcMegjegyzés:
Ha hibaüzenetet kap,
Insufficient access rightsforduljon 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óknakWrite servicePrincipalNameengedé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
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
usera@CONTOSO.COMtartomá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.COMMegjegyzé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.- Az alábbi példák feltételezik, hogy az
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
UserNamebejegyzésnek kisbetűsnek kell lennie, vagy az engedélyhitelesítés sikertelen lehet.-
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.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.keytabA 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.
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-serverA 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.confaz 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
Csatlakozzon az SQL Serverhez, és hozzon létre egy új, Active Directory-alapú bejelentkezést:
CREATE LOGIN [CONTOSO\user] FROM WINDOWS;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.
Kapcsolódó tartalom
- Sql Server-kapcsolatok titkosítása Linuxon
- Az SQL Server Active Directory-hitelesítésének ismertetése Linuxon és tárolókon
- Linuxon és tárolókon futó SQL Server Active Directory-hitelesítésének hibaelhárítása
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.