Sdílet prostřednictvím


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

platí pro:SQL Server – Linux

Tento kurz vysvětluje, jak nakonfigurovat ověřování windows 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í Active Directory s SQL Serverem v Linuxu.

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

  • Instalujte adutil
  • Připojení počítače s Linuxem 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 (tabulka klíčů)
  • Konfigurace SQL Serveru pro použití souboru keytab
  • 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í 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ě 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ě 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 Active Directory

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

Instalace nástroje adutil

Chcete-li nainstalovat nástroj adutil, postupujte podle kroků popsaných v článku Úvod do nástroje adutil - 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 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í nástroje adutil vytvořte nového uživatele, který se použije jako privilegovaný účet služby Active Directory sql Serverem.

    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 nástroj adutil a integrovat ho s mssql-conf a vytvořit a nakonfigurovat keytab pomocí mssql-conf přímo. 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 příkazy mssql-conf pomocí sudo.

  2. Na řadiči domény v nastavení služby 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 oracle uživatele:

    su mssql
    
  2. Přihlaste se jako uživatel služby 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 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 nevlastní /var/opt/mssql/mssql.conf, musíte nakonfigurovat mssql tak, aby nastavil hodnoty a network.kerberoskeytabfile 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í Active Directory funguje bez jakýchkoli problémů.

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

    Měl by se zobrazit výstup podobný následujícímu 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 nástroj adutil a integrovali ho s mssql-conf, můžete přeskočit k vytvoření souboru keytab služby SQL Serveru 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 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ě 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 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ě 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í 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'