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 – Linux
Tento kurz vysvětluje, jak nakonfigurovat SQL Server v kontejnerech Linuxu tak, aby podporoval ověřování Active Directory, označované také jako integrované ověřování. Přehled najdete v tématu Ověřování Active Directory pro SQL Server na Linuxu.
Poznámka
Aktuální pokyny ke konfiguraci sítě najdete v dokumentaci k vašemu operačnímu systému.
Tento kurz se skládá z následujících úloh:
- Instalujte adutil
- Připojení hostitele Linuxu k doméně služby Active Directory
- Vytvoření uživatele služby Active Directory pro SQL Server a nastavení hlavního názvu služby (SPN) pomocí nástroje adutil
- Vytvoření souboru keytab služby SQL Serveru
- Vytvořte soubory
mssql.confakrb5.conf, které bude kontejner SQL Serveru používat. - Připojení konfiguračních souborů a nasazení kontejneru SQL Serveru
- Vytváření přihlášení SQL Serveru založeného na službě Active Directory pomocí Transact-SQL
- Připojení k SQL Serveru pomocí ověřování Active Directory
Požadavky
Před konfigurací ověřování služby Active Directory jsou vyžadovány následující položky:
- Mít ve vaší síti řadič domény služby Active Directory (Windows).
- Nainstalujte adutil na hostitelský počítač s Linuxem, který je připojený k doméně. Podrobnosti najdete v části Nainstalujte adutil.
Nasazení a příprava kontejnerů
Pokud chcete nastavit kontejner, musíte předem vědět, jaký port bude kontejner na hostiteli používat. Výchozí port, 1433, může být na hostiteli kontejneru mapován odlišně. Pro účely tohoto kurzu se port 5433 na hostiteli mapuje na port 1433 kontejneru. Další informace najdete v našem průvodci rychlým startem Průvodce rychlým startem: Spuštění imagí kontejneru SQL Serveru na Linuxu pomocíDockeru.
Při registraci hlavního názvu služby (SPN) můžete použít název hostitele počítače nebo název kontejneru. Při externím připojení ke kontejneru byste ho ale měli nakonfigurovat podle toho, co byste chtěli vidět.
Ujistěte se, že je v Active Directory přidaný předávací záznam hostitele (A) pro IP adresu Linuxového hostitele, který se mapuje na název kontejneru SQL serveru. V tomto kurzu je IP adresa hostitelského počítače sql110.0.0.10a název kontejneru SQL Serveru je sql1. Přidejte položku hostitele pro předávání ve službě Active Directory, jak je znázorněno na snímku obrazovky. Položka zajišťuje, že když se uživatelé připojí k sql1.contoso.com, dosáhne správného hostitele.
V tomto kurzu používáme prostředí v Azure se třemi virtuálními počítači. Jeden virtuální počítač fungující jako řadič domény Windows (DC) s názvem domény contoso.com. Řadič domény má název adVM.contoso.com. Druhý počítač je počítač s Windows, který se nazývá winbox, se systémem Windows 10 desktop, který se používá jako klientské pole a má nainstalovanou aplikaci SQL Server Management Studio (SSMS). Třetí počítač je počítač s Ubuntu 18.04 LTS s názvem sql1, který hostuje kontejnery SQL Serveru. Všechny počítače jsou připojené k contoso.com doméně. Další informace najdete v tématu Připojení SQL Serveru na hostiteli s Linuxem k doméně služby Active Directory.
Poznámka
Připojení hostitelského kontejnerového počítače k doméně není povinné, jak je vidět dále v tomto článku.
Instalace nástroje adutil
Chcete-li nainstalovat adutil, postupujte podle kroků v Úvod do nástroje adutil - nástroj Active Directory, na hostitelském počítači, který je připojený k doméně.
Vytvoření uživatele Active Directory, hlavních názvů služby (SPN) a keytabu pro službu SQL Serveru
Pokud nechcete, aby byl hostitel kontejneru součástí domény a neprošel postupem pro připojení počítače k doméně, měli byste postupovat podle těchto kroků na jiném počítači s Linuxem, který už je součástí domény služby Active Directory:
Vytvořte uživatele služby Active Directory pro SQL Server a nastavte hlavní název služby (SPN) pomocí nástroje adutil.
Vytvořte a nakonfigurujte soubor keytab služby SQL Serveru.
Zkopírujte mssql.keytab soubor vytvořený do hostitelského počítače, který bude spouštět kontejner SQL Serveru, a nakonfigurujte kontejner tak, aby používal zkopírovaný mssql.keytab. Volitelně můžete připojit svého hostitele s Linuxem, který bude spouštět kontejner SQL Serveru do domény služby Active Directory, a postupovat podle těchto kroků na stejném počítači.
Vytvoření uživatele služby Active Directory pro SQL Server a nastavení hlavního názvu služby pomocí nástroje adutil
Povolení ověřování Active Directory na SQL Serveru v kontejnerech Linuxu vyžaduje spuštění následujících kroků na počítači s Linuxem, který je součástí domény služby Active Directory.
Pomocí příkazu
kinitzískejte nebo obnovte lístek TGT (ticket-granting ticket) protokolu Kerberos. Pro příkazkinitpoužijte privilegovaný účet. Účet musí mít oprávnění k připojení k doméně a měl by také mít možnost vytvářet účty a hlavní názvy služeb v doméně.V tomto ukázkovém skriptu byl na řadiči domény vytvořen privilegovaný uživatel s názvem
privilegeduser@CONTOSO.COM.kinit privilegeduser@CONTOSO.COMPomocí adutilvytvořte nového uživatele, který bude použit jako privilegovaný účet služby Active Directory sql Serverem. Nahraďte
<password>platným heslem.adutil user create --name sqluser --distname CN=sqluser,CN=Users,DC=CONTOSO,DC=COM --password '<password>'Hesla můžou být zadána některým ze tří způsobů:
- Příznak hesla:
--password <password> - Proměnné prostředí –
ADUTIL_ACCOUNT_PWD - Interaktivní vstup
Priorita metod zadávání hesla se řídí pořadím výše uvedených možností. Doporučené možnosti jsou zadat heslo pomocí proměnných prostředí nebo interaktivního vstupu, protože jsou bezpečnější než parametr hesla.
Název účtu můžete zadat pomocí rozlišujícího názvu (
-distname), jak je znázorněno výše, nebo můžete také použít název organizační jednotky (OU). Název organizační jednotky (--ou) má přednost před rozlišujícím názvem v případě, že zadáte obojí. Další podrobnosti získáte spuštěním následujícího příkazu:adutil user create --help- Příznak hesla:
Zaregistrujte SPN pro uživatele vytvořeného výše. V případě potřeby můžete místo názvu kontejneru použít název hostitelského počítače, a to v závislosti na tom, jak chcete, aby připojení vypadalo externě. V tomto kurzu se místo
5433používá port1433. Toto je mapování portů pro kontejner. Číslo portu se může lišit.adutil spn addauto -n sqluser -s MSSQLSvc -H sql1.contoso.com -p 5433-
addautoautomaticky vytvoří hlavní názvy služeb za předpokladu, že jsou pro účet kinit k dispozici dostatečná oprávnění. -
-n: Název účtu, ke kterému budou přiřazeny SPN (hlavní názvy služeb). -
-s: Název služby, který se má použít pro generování SPN. V tomto případě se jedná o službu SQL Serveru, a proto je název služby MSSQLSvc. -
-H: Název hostitele, který se má použít pro generování hlavních názvů služeb (SPN). Pokud není zadaný, použije se plně kvalifikovaný název domény místního hostitele. Zadejte také úplný název domény pro název kontejneru. V tomto případě je název kontejnerusql1a plně kvalifikovaný název domény jesql1.contoso.com. -
-p: Port, který se má použít pro generování SPN (hlavních názvů služeb). Pokud je nezadáte, hlavní názvy služeb se vygenerují bez portu. Připojení budou v tomto případě fungovat pouze v případě, že SQL Server naslouchá výchozímu portu1433.
-
Vytvoření souboru keytab služby SQL Serveru
Vytvořte soubor keytab, který obsahuje položky pro každý ze čtyř SPN vytvořených dříve a také jednu pro uživatele. Soubor keytab bude připojen ke kontejneru, aby ho bylo možné vytvořit v libovolném umístění na hostiteli. Tuto cestu můžete bezpečně změnit, pokud je výsledná klávesová zkratka správně připojená při nasazení kontejneru pomocí dockeru nebo podmana.
K vytvoření keytabu pro všechny SPN můžeme použít možnost createauto. Nahraďte <password> platným heslem.
adutil keytab createauto -k /container/sql1/secrets/mssql.keytab -p 5433 -H sql1.contoso.com --password '<password>' -s MSSQLSvc
-
-k: Cesta, kam chcete vytvořit soubormssql.keytab. V předchozím příkladu by adresář/container/sql1/secretsjiž měl existovat na hostiteli. -
-p: Port, který se má použít pro generování SPN (hlavních názvů služeb). Pokud je nezadáte, hlavní názvy služeb se vygenerují bez portu. -
-H: Název hostitele, který se má použít pro generování hlavních názvů služeb (SPN). Pokud není zadaný, použije se plně kvalifikovaný název domény místního hostitele. Zadejte také úplný název domény pro název kontejneru. V tomto případě je název kontejnerusql1a plně kvalifikovaný název domény jesql1.contoso.com. -
-s: Název služby, který se má použít pro generování SPN. V tomto případě se jedná o službu SQL Serveru, a proto je název služby MSSQLSvc. -
--password: Toto je heslo privilegovaného uživatelského účtu služby Active Directory, který byl vytvořen dříve. -
-enebo--enctype: Typy šifrování pro položku keytab. Použijte čárkami oddělený seznam hodnot. Pokud není zadaný, zobrazí se interaktivní výzva.
Když zvolíte typ šifrování, můžete zvolit více typů. V tomto příkladu jsme zvolili aes256-cts-hmac-sha1-96 a arcfour-hmac. Ujistěte se, že jste zvolili typ šifrování podporovaný hostitelem a doménou.
Pokud chcete neinteraktivně zvolit typ šifrování, můžete zadat typ šifrování pomocí argumentu -e ve výše uvedeném příkazu. Pro další nápovědu k příkazům adutil spusťte následující příkaz.
adutil keytab createauto --help
Opatrnost
arcfour-hmac je slabé šifrování a není doporučeným typem šifrování, který se má použít v produkčním prostředí.
Chcete-li vytvořit tabulátor klíčů pro uživatele, příkaz je následující. Nahraďte <password> platným heslem.
adutil keytab create -k /container/sql1/secrets/mssql.keytab -p sqluser --password '<password>'
-
-k: Cesta, kam chcete vytvořit soubormssql.keytab. V předchozím příkladu by adresář/container/sql1/secretsjiž měl existovat na hostiteli. -
-p: Principal, který chcete přidat do klíčové tabulky.
Nástroj adutil keytab create/autocreate nepřepíše předchozí soubory; přidá ke souboru, pokud již existuje.
Ujistěte se, že při nasazování kontejneru má vytvořená klávesová zkratka nastavená správná oprávnění.
chmod 440 /container/sql1/secrets/mssql.keytab
V tomto okamžiku můžete zkopírovat mssql.keytab z aktuálního hostitele Linuxu na hostitele s Linuxem, do kterého byste nasadí kontejner SQL Serveru, a postupovat podle zbývajících kroků na hostiteli s Linuxem, který spustí kontejner SQL Serveru. Pokud byly výše uvedené kroky provedeny na stejném hostiteli s Linuxem, kde se nasadí kontejnery SQL Serveru, postupujte podle dalších kroků i na stejném hostiteli.
Vytvoření konfiguračních souborů, které bude používat kontejner SQL Serveru
Vytvořte soubor
mssql.confs nastavením služby Active Directory. Tento soubor lze vytvořit kdekoli na hostiteli a musí být správně připojen během příkazu docker run. V tomto příkladu jsme tento soubor umístilimssql.confpod/container/sql1, což je adresář kontejneru. Obsahmssql.confje znázorněn takto:[network] privilegedadaccount = sqluser kerberoskeytabfile = /var/opt/mssql/secrets/mssql.keytab-
privilegedadaccount: Privilegovaný uživatel služby Active Directory, který se má použít pro ověřování služby Active Directory. -
kerberoskeytabfile: Cesta v kontejneru, kde se bude soubormssql.keytabnacházet.
-
Vytvořte soubor
krb5.conf, podobně jako v následující ukázce. V těchto souborech záleží na velikosti písmen.[libdefaults] default_realm = CONTOSO.COM default_keytab_name = /var/opt/mssql/secrets/mssql.keytab default_ccache_name = "" [realms] CONTOSO.COM = { kdc = adVM.contoso.com admin_server = adVM.contoso.com default_domain = CONTOSO.COM } [domain_realm] .contoso.com = CONTOSO.COM contoso.com = CONTOSO.COMZkopírujte všechny soubory,
mssql.conf,krb5.conf,mssql.keytabdo umístění, které bude připojeno ke kontejneru SQL Serveru. V tomto příkladu jsou tyto soubory umístěny na hostiteli v následujících umístěních:mssql.confakrb5.confv/container/sql1/.mssql.keytabje umístěn na místě/container/sql1/secrets/.Ujistěte se, že pro uživatele, který spouští příkaz docker/podman, má k těmto složkám dostatečná oprávnění. Po spuštění kontejneru potřebuje uživatel přístup k vytvořené cestě ke složce. V tomto příkladu jsme zadali následující oprávnění udělená cestě ke složce:
sudo chmod 755 /container/sql1/
Připojení konfiguračních souborů a nasazení kontejneru SQL Serveru
Spusťte kontejner SQL Serveru a připojte správné konfigurační soubory služby Active Directory, které byly dříve vytvořeny:
Důležitý
Proměnná prostředí SA_PASSWORD je zastaralá. Místo toho použijte MSSQL_SA_PASSWORD.
sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
-p 5433:1433 --name sql1 \
-v /container/sql1:/var/opt/mssql \
-v /container/sql1/krb5.conf:/etc/krb5.conf \
-d mcr.microsoft.com/mssql/server:2019-latest
Opatrnost
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á.
Při spouštění kontejneru na LSM (linuxový modul zabezpečení), jako jsou hostitelé s podporou SELinuxu, musíte svazky připojit pomocí možnosti Z, která dockeru říká, že má obsah označovat privátním nesdíleným popiskem. Pro další informace viz konfiguraci štítku SE Linux.
Náš příklad by obsahoval následující příkazy. Nahraďte <password> platným heslem.
sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 5433:1433 --name sql1 \
-v /container/sql1:/var/opt/mssql/ \
-v /container/sql1/krb5.conf:/etc/krb5.conf \
--dns-search contoso.com \
--dns 10.0.0.4 \
--add-host adVM.contoso.com:10.0.0.4 \
--add-host contoso.com:10.0.0.4 \
--add-host contoso:10.0.0.4 \
-d mcr.microsoft.com/mssql/server:2019-latest
- Soubory
mssql.confakrb5.confjsou umístěny ve souborové cestě hostitele/container/sql1. -
mssql.keytab, který byl vytvořen, se nachází na cestě hostujícího souboru/container/sql1/secrets. - Vzhledem k tomu, že je náš hostitelský počítač v Azure, musí být podrobnosti služby Active Directory připojené k příkazu
docker runve stejném pořadí. V našem příkladu je řadič doményadVMv doméněcontoso.coms IP adresou10.0.0.4. Řadič domény spouští DNS a KDC.
Vytváření přihlášení SQL Serveru založeného na službě Active Directory pomocí Transact-SQL
Připojte se ke kontejneru SQL Serveru. Pomocí následujících příkazů vytvořte přihlášení a potvrďte, že existuje. Tento příkaz můžete spustit z klientského počítače (Windows nebo Linuxu) se systémem SSMS, Azure Data Studio nebo z jakéhokoli jiného nástroje rozhraní příkazového řádku (CLI).
CREATE LOGIN [contoso\amvin]
FROM WINDOWS;
SELECT name
FROM sys.server_principals;
Připojte se k SQL Serveru s ověřováním Active Directory
Pokud se chcete připojit pomocí SQL Server Management Studio (SSMS) nebo azure Data Studio, přihlaste se k SQL Serveru pomocí přihlašovacích údajů systému Windows pomocí názvu a čísla portu SQL Serveru (název může být název kontejneru nebo název hostitele). V našem příkladu by název serveru byl sql1.contoso.com,5433.
Můžete také použít nástroj, jako je sqlcmd pro připojení k SQL Serveru ve vašem kontejneru.
sqlcmd -E -S 'sql1.contoso.com,5433'
Prostředky
- Pochopit, jak funguje ověřování Active Directory pro SQL Server na Linuxu a kontejnerech
- řešení potíží s ověřováním Active Directory pro SQL Server v Linuxu a kontejnerech