Kurz: Použití nástroje adutil ke konfiguraci ověřování active directory s SQL Serverem v Linuxu

Platí pro:SQL Server v Linuxu

Tento kurz vysvětluje, jak nakonfigurovat ověřování windows služba Active Directory pro SQL Server v Linuxu pomocí nástroje adutil. Další metodu konfigurace ověřování active directory pomocí ktpassu najdete v kurzu : Použití ověřování služba Active Directory s SQL Serverem v Linuxu.

Tento kurz se skládá z následujících úloh:

  • Instalace aplikace adutil
  • Připojení počítače s Linuxem k doméně služby služba Active Directory
  • Vytvoření uživatele služba Active Directory pro SQL Server a nastavení hlavního názvu služby (SPN) pomocí adutil
  • Vytvoření souboru keytab služby SQL Serveru (tabulka klíčů)
  • Konfigurace SQL Serveru pro použití souboru keytab
  • Vytváření přihlášení SQL Serveru založeného na službě služba Active Directory pomocí Transact-SQL
  • Připojení k SQL Serveru pomocí ověřování služba Active Directory

Požadavky

Před konfigurací ověřování služba Active Directory potřebujete:

  • Řadič domény Systému Windows se službou Active Directory Domain Services ve vaší síti.
  • Nástroj adutil nainstalovaný na hostitelském počítači připojeném k doméně.

Příprava počítače domény

Ujistěte se, že je ve službě služba Active Directory přidaný záznam přesměrovacího hostitele (A) pro IP adresu Linuxového hostitele. V tomto kurzu je IP adresa počítače sql1 hostitele 10.0.0.10. V následujícím příkladu přidáme položku hostitele pro předávání ve službě služba Active Directory. Položka zajišťuje, že když se uživatelé připojí k sql1.contoso.com, dosáhne správného hostitele.

Snímek obrazovky přidání záznamu hostitele

Pro účely tohoto kurzu použijete prostředí v Azure se třemi virtuálními počítači. Jeden virtuální počítač je počítač s Windows Serverem, adVM.contoso.com, který běží jako řadič domény (DC) s názvem domény contoso.com. Druhý virtuální počítač je klientský počítač s Windows 10 s názvem winbox, který 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 SQL Server.

Připojení hostitelského počítače s Linuxem k doméně služby služba Active Directory

Pokud se chcete připojit sql1 k doméně služby služba Active Directory, přečtěte si téma Připojení SQL Serveru na hostiteli s Linuxem k doméně služby služba Active Directory.

Instalace nástroje adutil

Pokud chcete nainstalovat adutil, postupujte podle kroků popsaných v článku Introduction do nástroje adutil – nástroj služba Active Directory na hostitelském počítači, který jste přidali do domény v předchozím kroku.

Použití nástroje adutil k vytvoření uživatele služby služba Active Directory pro SQL Server a nastavení hlavního názvu služby (SPN)

  1. Pomocí příkazu kinit získejte nebo obnovte lístek TGT (ticket-granting ticket) protokolu Kerberos. Pro příkaz musíte použít privilegovaný účet kinit a hostitelský počítač by už měl být součástí domény. Účet potřebuje oprávnění k připojení k doméně a k vytvoření účtů a SPN v doméně.

    V tomto ukázkovém skriptu se na řadiči domény už vytvoří privilegovaný uživatel privilegeduser@CONTOSO.COM .

    kinit privilegeduser@CONTOSO.COM
    
  2. Pomocí adutil vytvořte nového uživatele, který se použije jako privilegovaný účet služba Active Directory pomocí SQL Server.

    Hesla je možné zadat třemi různými způsoby. Pokud používáte více než jednu z těchto metod, mají přednost v následujícím pořadí:

    • Použití příznaku hesla: --password <password>
    • V proměnné prostředí: ADUTIL_ACCOUNT_PWD
    • Interaktivní vstup na příkazovém řádku

    Proměnné prostředí nebo interaktivní metody zadávání jsou bezpečnější než příznak hesla.

    adutil user create --name sqluser --distname CN=sqluser,CN=Users,DC=CONTOSO,DC=COM --password '<password>'
    

    Název účtu můžete zadat pomocí rozlišujícího názvu (--distname), jak je znázorněno výše, nebo můžete 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
    

    Upozornění

    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á.

  3. Zaregistrujte SPN k principálu vytvořenému dříve. Musíte použít plně kvalifikovaný název domény (FQDN) počítače. V tomto kurzu používáme výchozí port SQL Serveru 1433. Číslo portu se může lišit.

    adutil spn addauto -n sqluser -s MSSQLSvc -H sql1.contoso.com -p 1433
    
    • addauto vytvoří hlavní názvy služeb automaticky, pokud má účet dostatečná oprávnění kinit.
    • -n: Název účtu pro přiřazení hlavních názvů 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, což je důvod, proč je MSSQLSvcnázev služby .
    • -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. V tomto případě je sql1 název hostitele a plně kvalifikovaný název domény je sql1.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í SQL v tomto případě fungují jenom v případě, že instance SQL Serveru naslouchá výchozímu portu 1433.

Vytvoření souboru keytab služby SQL Serveru pomocí mssql-conf

Můžete nainstalovat adutil a integrovat jej s mssql-conf, abyste přímo pomocí mssql-conf vytvořili a nakonfigurovali keytab. Tato metoda je upřednostňovaná pro vytvoření souboru s klíči služby SQL Serveru. V opačném případě můžete soubor keytab služby SQL Serveru vytvořit ručně.

Požadavky

  1. Ujistěte se, že mssql uživatel vlastní /var/opt/mssql/mssql.conf soubor, a ne root. V opačném případě je nutné spustit mssql-conf příkazy pomocí sudo.

  2. Na řadiči domény v nastavení služby služba Active Directory pro network.privilegedadaccount účet (v těchto příkladech sqluser@CONTOSO.COM) povolte na kartě Účet následující možnosti v části Možnosti účtu :

    • Tento účet podporuje 128bitové šifrování Kerberos AES.
    • Tento účet podporuje 256bitové šifrování Kerberos AES.

Vytvoření souboru keytab

Jakmile vytvoříte uživatele a SPN, můžete vytvořit keytab pomocí následujícího postupu.

  1. Přepněte na uživatele mssql.

    su mssql
    
  2. Přihlaste se jako uživatel služby služba Active Directory pomocí kinit příkazu:

    kinit privilegeduser@CONTOSO.COM
    
  3. Vytvořte soubor keytab:

    /opt/mssql/bin/mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser
    

    Po zobrazení výzvy k restartování služby SQL Server pro přijetí nové konfigurace služby služba Active Directory to můžete provést v následující části.

  4. Ověřte, že se vytvoří klávesová zkratka se správnými položkami:

    klist -kte /var/opt/mssql/secrets/mssql.keytab
    

    Měl by se zobrazit výstup podobný tomuto příkladu:

    keytab name: FILE:/var/opt/mssql/secrets/mssql.keytab
    KVNO Timestamp           Principal
    ---- ------------------- ------------------------------------------------------
       4 12/30/2021 14:02:08 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       4 12/30/2021 14:02:08 MSSQLSvc/sql1:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       4 12/30/2021 14:02:08 MSSQLSvc/sql1@CONTOSO.COM (aes256-cts-hmac-sha1-96)
    

    Pokud soubor /var/opt/mssql/mssql.conf není vlastněn mssql, musíte nakonfigurovat mssql-conf, aby bylo nastaveno network.kerberoskeytabfile a network.privilegedadaccount podle předchozích kroků. Po zobrazení výzvy zadejte heslo.

    /opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
    /opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluser
    
  5. Ověřte konfiguraci a ujistěte se, že ověřování služba Active Directory funguje bez jakýchkoli problémů.

    /opt/mssql/bin/mssql-conf validate-ad-config /var/opt/mssql/secrets/mssql.keytab
    

    Výstup vypadá podobně jako v následujícím příkladu:

    Detected Configuration:
    Default Realm: CONTOSO.COM
    Keytab: /var/opt/mssql/secrets/mssql.keytab
    Reverse DNS Result: sql1.contoso.com
    SQL Server Port: 1433
    Detected SPNs (SPN, KVNO):
    (MSSQLSvc/sql1.CONTOSO.COM:1433, 4)
    (MSSQLSvc/sql1.CONTOSO.COM, 4)
    (MSSQLSvc/sql1:1433, 4)
    (MSSQLSvc/sql1, 4)
    Privileged Account (Name, KVNO):
    (sqluser, 4)
    

Ruční vytvoření souboru keytab služby SQL Serveru

Pokud jste nainstalovali adutil a integrovali ho s mssql-conf, můžete přeskočit k Vytvoření souboru keytab služby SQL Server pomocí mssql-conf.

  1. 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.

    adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H sql1.contoso.com --password '<password>' -s MSSQLSvc
    

    Upozornění

    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á.

    Možné možnosti příkazového řádku:

    • -k: Cesta, kde se mssql.keytab soubor vytvoří. V předchozím příkladu by adresář /var/opt/mssql/secrets/ již 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. V tomto případě je sql1 název hostitele a plně kvalifikovaný název domény je sql1.contoso.com.
    • -s: Název služby, který se má použít pro generování SPN. V tomto příkladu je MSSQLSvcnázev služby SYSTÉMU SQL Server .
    • --password: Heslo privilegovaného uživatelského účtu služby služba Active Directory, který byl vytvořen dříve.
    • -e nebo --enctype: Typy šifrování pro položku keytab. Použijte čárkami oddělený seznam hodnot. Pokud není zadaný, zobrazí se interaktivní výzva.

    Můžete zvolit více než jeden typ šifrování, pokud váš hostitel a doména podporují typ šifrování. V tomto příkladu můžete zvolit aes256-cts-hmac-sha1-96 a aes128-cts-hmac-sha1-96. V produkčním prostředí byste se ale měli vyhnout arcfour-hmac , protože má slabé šifrování.

    Pokud chcete zvolit typ šifrování bez výzvy, můžete pomocí argumentu -e v předchozím příkazu zadat typ šifrování. Další nápovědu k možnostem adutil keytab můžou získat spuštěním tohoto příkazu:

    adutil keytab createauto --help
    
  2. Do tabulky klíčů přidejte položku pro hlavní název a heslo, které SQL Server používá pro připojení ke službě služba Active Directory:

    adutil keytab create -k /var/opt/mssql/secrets/mssql.keytab -p sqluser --password '<password>'
    

    Upozornění

    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á.

    • -k: Cesta, kde chcete vytvořit soubor mssql.keytab.
    • -p: Principal, který chcete přidat do klíčové tabulky.

    Nepřepíše adutil keytab [ create | autocreate ] předchozí soubory, jenom se připojí k souboru, pokud už je k dispozici.

  3. Ujistěte se, že mssql uživatel vlastní vytvořenou klávesu keytab a že k souboru má přístup jen mssql pro čtení a zápis. Příkazy chown a chmod můžete spustit následujícím způsobem:

    chown mssql /var/opt/mssql/secrets/mssql.keytab
    chmod 440 /var/opt/mssql/secrets/mssql.keytab
    

Konfigurace SQL Serveru pro použití klávesové zkratky

Spuštěním následujících příkazů nakonfigurujte SQL Server tak, aby používal klávesová zkratka vytvořená v předchozím kroku, a nastavte privilegovaný účet služba Active Directory jako dříve vytvořený uživatel. V našem příkladu je sqluseruživatelské jméno .

/opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
/opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluser

Restartování SQL Serveru

Spuštěním následujícího příkazu restartujte službu SQL Serveru:

sudo systemctl restart mssql-server

Vytvoření přihlášení SQL Serveru založeného na službě služba Active Directory v Transact-SQL

Připojte se k instanci SQL Serveru a spuštěním následujících příkazů vytvořte přihlášení a potvrďte, že existuje.

CREATE LOGIN [contoso\privilegeduser]
    FROM WINDOWS;

SELECT name
FROM sys.server_principals;

Připojení k SQL Serveru pomocí ověřování služba Active Directory

Pomocí přihlašovacích údajů systému Windows se připojte k instanci SQL Serveru pomocí aplikace SQL Server Management Studio (SSMS).

Můžete také použít nástroj, jako je nástroj sqlcmd pro připojení k instanci SYSTÉMU SQL Server pomocí ověřování systému Windows.

sqlcmd -E -S 'sql1.contoso.com'