Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server na Linuxu
Tento kurz vysvětluje, jak nakonfigurovat SQL Server v Linuxu tak, aby podporoval ověřování služba Active Directory, označované také jako integrované ověřování. Přehled najdete v tématu Ověřování služba Active Directory pro SQL Server na Linuxu.
Tento kurz se skládá z následujících úloh:
- Připojte hostitele SQL Server k doméně služba Active Directory
- Vytvořte uživatele služba Active Directory pro SQL Server a nastavte SPN
- Konfigurace klíče služby SQL Serveru
- Zabezpečení souboru keytab
- Konfigurace SQL Serveru pro použití souboru keytab pro ověřování protokolem Kerberos
- Vytváření přihlášení založených na službě služba Active Directory v Transact-SQL
- Připojení k SQL Serveru pomocí ověřování služba Active Directory
Předpoklady
Než nakonfigurujete autentizaci v služba Active Directory, musíte:
- Nastavte si služba Active Directory doménový řadič (Windows) ve své síti
- Instalace SQL Serveru
Note
Od verze SQL Server 2025 (17.x) se nepodporuje SUSE Linux Enterprise Server (SLES).
Připojení hostitele SQL Serveru k doméně služby služba Active Directory
Připojte svůj hostitel SQL Server Linux k služba Active Directory doménovému řadiči. Pro informace o tom, jak se připojit k doméně služba Active Directory, viz Připojit SQL Server na hostiteli Linuxu k doméně služba Active Directory.
Vytvoření uživatele služby služba Active Directory pro SQL Server a nastavení hlavního názvu služby (SPN)
Note
Následující kroky používají plně kvalifikovaný název domény (FQDN). Pokud jste v Azure, musíte před pokračováním vytvořit plně kvalifikovaný název domény .
Na řadiči domény spusťte příkaz New-ADUser PowerShell a vytvořte nového uživatele služby služba Active Directory s heslem, jehož platnost nikdy nevyprší. Následující příklad pojmenuje účet
sqlsvc, ale název účtu může být cokoli, co se vám líbí. Zobrazí se výzva k zadání nového hesla pro účet.Import-Module ActiveDirectory New-ADUser sqlsvc -AccountPassword (Read-Host -AsSecureString "Enter Password") -PasswordNeverExpires $true -Enabled $trueOsvědčeným postupem zabezpečení je mít vyhrazený účet služby služba Active Directory pro SQL Server, aby se přihlašovací údaje instance SQL Serveru nesdílely s jinými službami pomocí stejného účtu. Pokud ale znáte heslo účtu služby služba Active Directory (což je nutné k vygenerování souboru keytab v dalším kroku), můžete volitelně znovu použít existující účet služba Active Directory. Kromě toho by měl být účet povolený pro podporu 128bitového a 256bitového šifrování Kerberos AES (
msDS-SupportedEncryptionTypesatribut) na uživatelském účtu. Pokud chcete ověřit, že je účet povolený pro šifrování AES, vyhledejte účet v nástroji Uživatelé a počítače služby Active Directory a vyberte Vlastnosti. Vyhledejte kartu Účty ve vlastnostech a ověřte, že jsou zaškrtnutá dvě následující zaškrtávací políčka.- Tento účet podporuje 128bitové šifrování Kerberos AES.
- Tento účet podporuje 256bitové šifrování Kerberos AES.
Nastavte pro tento účet název principal služby (SPN) pomocí nástroje setspn.exe . SPN musí být naformátován přesně tak, jak je uvedeno v následujícím příkladu. Plně kvalifikovaný název domény hostitelského počítače s SQL Serverem najdete spuštěním
hostname --all-fqdnsna hostiteli SQL Serveru. Port TCP by měl být 1433, pokud jste nenakonfigurovali SQL Server tak, aby používal jiné číslo portu.setspn -A MSSQLSvc/<fully qualified domain name of host machine>:<tcp port> sqlsvc setspn -A MSSQLSvc/<netbios name of the host machine>:<tcp port> sqlsvcNote
Pokud se zobrazí chyba,
Insufficient access rights, ověřte u správce domény, zda máte dostatečná oprávnění k nastavení hlavního názvu služby (SPN) pro tento účet. Účet, který je použit k registraci hlavního názvu služby (SPN), bude potřebovat oprávněníWrite servicePrincipalName. Další informace viz Registrace názvu hlavní služby pro připojení Kerberos.Pokud v budoucnu změníte port TCP, musíte znovu spustit příkaz setspn s novým číslem portu. Musíte také přidat nový hlavní název služby (SPN) do keytabu služby SQL Serveru, jak je uvedeno v následující části.
Další informace viz Registrace názvu hlavní služby pro připojení Kerberos.
Konfigurace klíče služby SQL Serveru
Konfigurace ověřování služba Active Directory pro SQL Server v Linuxu vyžaduje uživatelský účet služby služba Active Directory a hlavní název služby (SPN) vytvořený v předchozí části.
Important
Pokud se změní heslo pro účet služba Active Directory nebo pro účet, ke kterému jsou přiřazeny hlavní názvy služeb (SPN), musíte aktualizovat keytab s novým heslem a číslem verze klíče (KVNO). Některé služby můžou hesla také automaticky obměňovat. Zkontrolujte všechny zásady obměně hesel pro příslušné účty a zarovnejte je s naplánovanými aktivitami údržby, abyste se vyhnuli neočekávaným výpadkům.
Položky klíčového názvu služby (SPN) v keytabu
Zkontrolujte číslo verze klíče (KVNO) pro účet služba Active Directory vytvořený v předchozí sekci. Obvykle je to 2, ale může to být jiné celé číslo, pokud jste heslo účtu změnili několikrát. Na hostitelském počítači s SQL Serverem spusťte následující příkazy:
- Následující příklady předpokládají, že
userje v doméně@CONTOSO.COM. Upravte jméno uživatele a název domény na vaše vlastní jméno uživatele a název domény.
kinit user@CONTOSO.COM kvno user@CONTOSO.COM kvno MSSQLSvc/<fully qualified domain name of host machine>:<tcp port>@CONTOSO.COMNote
Šíření SPN (Service Principal Names) v rámci vaší domény může trvat několik minut, zejména pokud je doména velká. Pokud se zobrazí chyba,
kvno: Server not found in Kerberos database while getting credentials for MSSQLSvc/<fully qualified domain name of host machine>:<tcp port>@CONTOSO.COMpočkejte několik minut a zkuste to znovu. Předchozí příkazy fungují jenom v případě, že je server připojený k doméně služby služba Active Directory, která byla popsána v předchozí části.- Následující příklady předpokládají, že
Pomocí ktpass přidejte pro každý SPN položky v klíčových tabulacích pomocí následujících příkazů v příkazovém řádku Windows:
-
<DomainName>\<UserName>– Uživatelský účet služby služba Active Directory -
@CONTOSO.COM– Použijte název domény. -
/kvno <#>- Nahraďte<#>KVNO, které jste získali v předchozím kroku. -
<password>– Vaše heslo by mělo postupovat podle výchozích zásad hesel SQL Serveru. Ve výchozím nastavení musí heslo obsahovat alespoň osm znaků a musí obsahovat znaky ze tří z následujících čtyř sad: velká písmena, malá písmena, číslice se základem 10 a symboly. Hesla můžou mít délku až 128 znaků. Používejte hesla, která jsou co nejdéle a složitá.
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>Předchozí příkazy umožňují šifrování AES i RC4 pro ověřování active directory. RC4 je starší šifrovací šifra a pokud je vyžadován vyšší stupeň zabezpečení, můžete se rozhodnout vytvořit položky keytab s pouze šifrovací šifrou AES.
Note
Poslední dva
UserNamezáznamy musí být malými písmeny, jinak může autentizace selhat.-
Po spuštění předchozích příkazů byste měli mít soubor keytab s názvem
mssql.keytab. Zkopírujte soubor do počítače s SQL Serverem ve složce/var/opt/mssql/secrets.Zabezpečte soubor keytab.
Každý, kdo má přístup k tomuto souboru keytab, může zosobnit SQL Server v doméně, takže zajistěte, abyste omezili přístup k souboru tak, aby přístup ke čtení měl jenom účet mssql:
sudo chown mssql:mssql /var/opt/mssql/secrets/mssql.keytab sudo chmod 400 /var/opt/mssql/secrets/mssql.keytabAby se zadal účet, který se má použít při přístupu k souboru keytab, je nutné použít nástroj
mssql-confk nastavení následující konfigurační možnosti.sudo mssql-conf set network.privilegedadaccount <username>Note
Uveďte pouze uživatelské jméno, nikoli název_domény\uživatelské_jméno nebo username@domain. SQL Server interně přidá název domény podle potřeby spolu s tímto uživatelským jménem při použití.
Pomocí následujícího postupu nakonfigurujte SQL Server tak, aby začal používat soubor keytab pro ověřování protokolem Kerberos.
sudo mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab sudo systemctl restart mssql-serverVolitelně můžete zakázat připojení UDP k řadiči domény, aby se zlepšil výkon. V mnoha případech spojení UDP opakovaně selhávají při připojování k řadiči domény, takže můžete v
/etc/krb5.confnastavit možnosti konfigurace tak, aby byla volání UDP přeskočena. Upravte/etc/krb5.confa nastavte následující možnosti:[libdefaults] udp_preference_limit = 0
V tuto chvíli jste připraveni používat přihlášení založená na službě služba Active Directory na SQL Serveru.
Vytváření přihlášení založených na službě služba Active Directory v Transact-SQL
Připojte se k SQL Serveru a vytvořte nové přihlášení založené na službě služba Active Directory:
CREATE LOGIN [CONTOSO\user] FROM WINDOWS;Ověřte, že přihlášení je teď uvedené v zobrazení katalogu systému sys.server_principals :
SELECT name FROM sys.server_principals;
Připojení k SQL Serveru pomocí ověřování služba Active Directory
Přihlaste se k klientskému počítači pomocí přihlašovacích údajů k doméně. Teď se můžete připojit k SQL Serveru, aniž byste museli znovu zadávat heslo pomocí ověřování služby služba Active Directory. Pokud vytvoříte přihlášení pro skupinu služba Active Directory, může se každý uživatel služby služba Active Directory, který je členem této skupiny, připojit stejným způsobem.
Konkrétní parametr připojovacího řetězce pro klienty, kteří používají ověřování active directory, závisí na tom, který ovladač používáte. Podívejte se na příklady v následujících částech.
Sqlcmd v klientovi Linuxu připojeném k doméně
Přihlaste se k linuxovém klientovi připojenému k doméně pomocí ssh a přihlašovacích údajů k doméně:
ssh -l user@contoso.com client.contoso.com
Ujistěte se, že jste nainstalovali balíček mssql-tools, a pak se připojte bez zadání přihlašovacích údajů pomocí sqlcmd.
sqlcmd -S mssql-host.contoso.com
Na rozdíl od SQL Server na Windows funguje ověření pomocí Kerberosu pro lokální připojení k SQL Server on Linux. Nicméně stále musíte poskytnout FQDN hostitele SQL Server. Autentizace v služba Active Directory nebude fungovat, pokud se pokusíte připojit k ., localhost, nebo 127.0.0.1.
SSMS na klientovi Windows připojeném k doméně
Přihlaste se k klientovi Windows připojenému k doméně pomocí přihlašovacích údajů k doméně. Ujistěte se, že je aplikace SQL Server Management Studio nainstalovaná, a pak se připojte k instanci SQL Serveru (například mssql-host.contoso.com) zadáním ověřování systému Windows v dialogovém okně Připojit k serveru .
Ověřování active directory pomocí jiných klientských ovladačů
Následující tabulka popisuje doporučení pro ostatní klientské ovladače:
| Klientský ovladač | Recommendation |
|---|---|
| JDBC | K připojení SQL Serveru použijte integrované ověřování Kerberos. |
| ODBC | Použijte integrované ověřování. |
| ADO.NET | Syntaxe připojovacího řetězce |
Další možnosti konfigurace
Pokud používáte nástroje třetích stran jako PBIS,VAS nebo Centrify k připojení Linux hostitele k doméně služba Active Directory a chcete donutit SQL Server používat přímo knihovnu OpenLDAP, můžete tuto disablesssd možnost nastavit taktomssql-conf:
sudo mssql-conf set network.disablesssd true
sudo systemctl restart mssql-server
Note
Existují nástroje jako RealMD , které nastavují SSSD, zatímco jiné nástroje jako PBIS, VAS a Centrify SSSD nenastavují. Pokud nástroj používaný pro připojení do domény služba Active Directory nenastaví SSSD, měli byste nastavit disablesssd možnost na true. Není to nutné, protože SQL Server se snaží použít SSSD pro služba Active Directory a poté se vrátí k mechanismu OpenLDAP, ale konfigurace této možnosti umožňuje SQL Server přímo volat OpenLDAP a obejít SSSD.
Pokud váš řadič domény podporuje LDAPS, můžete vynutit, aby všechna připojení z SQL Serveru k řadičům domény byla přes LDAPS. Pokud chcete zkontrolovat, jestli klient může kontaktovat řadič domény přes LDAPS, spusťte následující příkaz Bash. ldapsearch -H ldaps://contoso.com:3269 Pokud chcete nastavit SQL Server tak, aby používal pouze LDAPS, spusťte následující příkaz:
sudo mssql-conf set network.forcesecureldap true
sudo systemctl restart mssql-server
SQL Server používá LDAPS místo SSSD, pokud hostitel přešel do domény služba Active Directory pomocí SSSD a disablesssd není nastaven na true. Pokud jsou disablesssd i forcesecureldap nastaveny na true, SQL Server používá LDAPS přes OpenLDAP.
SQL Server 2017 CU 14 a pozdější verze
Počínaje SQL Serverem 2017 (14.x) CU 14 platí, že pokud byl SQL Server připojen k doméně služby služba Active Directory pomocí poskytovatelů třetích stran a je nakonfigurován tak, aby pro obecné vyhledávání ve službě služba Active Directory používal volání OpenLDAP nastavením disablesssd na true, můžete také použít možnost enablekdcfromkrb5conf, která vynutí, aby SQL Server pro vyhledání KDC používal knihovnu krb5 místo reverzního vyhledávání DNS serveru KDC.
To může být užitečné, když chcete ručně konfigurovat doménové řadiče, se kterými se SQL Server snaží komunikovat, a použít mechanismus knihovny OpenLDAP s KDC seznamem v krb5.conf.
Nejprve nastavte disablesssd hodnotu True a enablekdcfromkrb5conf potom restartujte SQL Server:
sudo mssql-conf set network.disablesssd true
sudo mssql-conf set network.enablekdcfromkrb5conf true
sudo systemctl restart mssql-server
Následně seznam KDC v /etc/krb5.conf konfigurujte následujícím způsobem:
[realms]
CONTOSO.COM = {
kdc = dcWithGC1.contoso.com
kdc = dcWithGC2.contoso.com
}
I když se to nedoporučuje, je možné použít nástroje, jako je realmd, které nakonfigurují SSSD při připojení Linuxového hostitele do domény, a současně nastavit disablesssd na hodnotu true, aby SQL Server používal volání OpenLDAP místo SSSD pro volání související s služba Active Directory.
Note
Přihlášení k SQL Serveru pomocí plně kvalifikovaného názvu domény (například CONTOSO.COM\Username) se nepodporuje. Použijte formát CONTOSO\Username.
Přihlášení k SQL Serveru z místních skupin domény se nepodporují. Místo toho použijte skupiny globálních domén zabezpečení.
Související obsah
- Šifrování připojení k SQL Serveru v Linuxu
- Pochopit, jak funguje ověřování služba Active Directory pro SQL Server na Linuxu a kontejnerech
- řešení potíží s ověřováním služba Active Directory pro SQL Server v Linuxu a kontejnerech
Přispějte k dokumentaci SQL
Věděli jste, že obsah SQL můžete upravovat sami? Pokud to uděláte, nejen že vám pomůžete vylepšit naši dokumentaci, ale také jste získali kredit jako přispěvatel na stránku.
Další informace naleznete v Upravit dokumentaci Microsoft Learn.