Rotace keytabů pro SQL Server na Linuxu

Platí pro:SQL Server v Linuxu

Na základě osvědčených postupů zabezpečení vaší organizace může být nutné pravidelně obměňovat heslo pro účet služby Windows služba Active Directory poskytovaný jako network.privilegedadaccount v mssql.confnebo jakýkoli jiný účet, který vlastní hlavní názvy služby (SPN) pro službu SQL Server. Podporovaná metoda pro změnu hesla pro účet je zdokumentovaná v tomto článku. Změna hesla se projeví bez nutnosti restartovat službu SQL Serveru v Linuxu.

Nástroj adutil slouží k aktualizaci klávesové zkratky. Příkaz adutil musí být spuštěný z počítače připojeného k doméně. Další informace o nástroji adutil a o tom, jak nástroj stáhnout, najdete v tématu Introduction do adutilu – nástroj služba Active Directory.

Před aktualizací ve službě služba Active Directory je důležité aktualizovat nové heslo v tabulce klíčů následujícím číslem kvno. Pokud použijete další kvno číslo, zabráníte tomu, aby se služba SQL Serveru po změně hesla restartovala. Pokud nejprve aktualizujete heslo ve službě služba Active Directory a pak změníte klávesovou zkratku, musíte restartovat službu SQL Serveru, aby bylo zajištěno, že ověřování služby služba Active Directory funguje správně.

Scénář pro rotaci keytabu

Podívejme se na příklad. Ověřování služba Active Directory už je pro SQL Server v Linuxu povolené. V souboru mssql.conf nastavíte network.privilegedadaccount na sqluser. Účet sqluser@CONTOSO.COM je již vytvořen ve službě služba Active Directory a klávesová zkratka se vytvoří také ve výchozím umístění /var/opt/mssql/secrets/mssql.keytab. Teď chcete změnit heslo pro sqluser@CONTOSO.COM. Tady jsou kroky, které je potřeba provést:

  1. Instalace nástroje adutil na počítači připojeném k doméně.

  2. Pomocí příkazu kinit získáte nebo obnovíte TGT lístek (ticket-granting ticket) protokolu Kerberos. Pro příkaz kinit použijte privilegovaný účet. Účet musí mít oprávnění pro připojení k doméně a měl by mít možnost vytvářet účty a SPN v doméně. V tomto případě používáme účet privilegeduser@CONTOSO.COM, který má oprávnění k vytváření účtů a SPN v naší doméně nazývané CONTOSO.COM.

    kinit privilegeduser@CONTOSO.COM
    
  3. Po spuštění kinit, abyste získali nebo obnovili TGT, dotažte se na číslo aktuálního kvno pro network.privilegedadaccount. V tomto případě je to sqluser@CONTOSO.COM.

    kvno sqluser@CONTOSO.COM
    

Můžete se rozhodnout rotovat keytab pomocí mssql-conf nebo rotovat keytab ručně pomocí adutil.

Otočení keytab souboru pomocí mssql-conf

Můžete nainstalovat adutil a integrovat ji s mssql-conf, což znamená, že můžete rotovat keytab pomocí mssql-conf.

  1. Přihlaste se jako uživatel root a přepněte se na uživatele mssql.

    su mssql
    
  2. Pomocí příkazu kinit získáte nebo obnovíte TGT lístek (ticket-granting ticket) protokolu Kerberos. Pro příkaz kinit použijte privilegovaný účet. Účet musí mít oprávnění pro připojení k doméně a měl by mít možnost vytvářet účty a SPN v doméně. V tomto případě používáme účet privilegeduser@CONTOSO.COM, který má oprávnění k vytváření účtů a SPN v naší doméně nazývané CONTOSO.COM.

    kinit privilegeduser@CONTOSO.COM
    
  3. Spusťte příkaz mssql-conf a zadejte SQL Server keytab a podrobnosti network.privilegedadaccount. V tomto příkladu je privilegedadaccountsqluser.

    ./mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser --use-next-kvno'
    

    Po zobrazení výzvy k zadání hesla zadejte nové heslo, které chcete použít. Možnost --use-next-kvno přiděluje aktuálnímu kvno hodnotu + 1.

    Nepovinný: Můžete také použít možnost --kvno s příkazem mssql-conf setup-ad-keytab k zadání konkrétního kvno. Nejprve musíte zajistit, abyste získali aktuální kvno pro uživatele, a pak aktualizujte nový kvno odpovídajícím způsobem, což bude aktuální kvno + 1.

  4. Pomocí příkazu můžete vypsat klíče klávesové zkratky:

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

    Všimněte si, že keytab se aktualizuje o další kvno pro položky uživatele i hlavního názvu služby (SPN).

  5. Teď můžete změnit heslo pro sqluser uživatele. Tady je příklad.

    Důležitý

    Pokud se během tohoto kroku zobrazí výzva k restartování SQL Serveru, můžete ho ignorovat. Nezapomeňte také změnit heslo v služba Active Directory.

    bash-4.4$ kinit privilegedaccount@CONTOSO.COM
    Password for privilegedaccount@CONTOSO.COM:
    
    bash-4.4$ ./mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser --use-next-kvno
    sqluser@contoso.com's password:
    Confirm sqluser@contoso.com's password:
    
    SQL Server needs to be restarted in order to adopt the new AD configuration. To restart, run `systemctl restart mssql-server.service`.
    
    bash-4.4$ klist -kte /var/opt/mssql/secrets/mssql.keytab
    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)
       5 12/30/2021 20:06:34 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       5 12/30/2021 20:06:34 MSSQLSvc/sql1.contoso.com:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       5 12/30/2021 20:06:34 MSSQLSvc/sql1.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       5 12/30/2021 20:06:34 MSSQLSvc/sql1:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       5 12/30/2021 20:06:34 MSSQLSvc/sql1@CONTOSO.COM (aes256-cts-hmac-sha1-96)
    

Ruční otáčení keytabu pomocí nástroje adutil

Pokud chcete klávesovou zkratku aktualizovat ručně pomocí adutil, projděte si následující kroky.

Aktualizace klávesové zkratky pomocí adutil přidá položku do aktuální klávesové zkratky. Pokud je například kvno číslo z předchozího příkazu 2, použijte při aktualizaci keytab kvno číslo 3. Následují adutil příkazy, které je potřeba spustit.

  • Změňte číslo portu (-p), název hostitele (-H), cestu k klíčové tabulce (-k) a číslo kvno tak, aby odpovídalo vašemu prostředí.
adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H mssql.contoso.com --password '<newpassword>' -s MSSQLSvc --kvno 3
adutil keytab create -k /var/opt/mssql/secrets/mssql.keytab -p sqluser --password '<newpassword>' --kvno 3
Parameter Description
-k Cesta k aktuální tabulce klíčů, kterou používá SQL Server, a nastavena pomocí možnosti network.kerberoskeytabfile v mssql.conf souboru.
-H Plně kvalifikovaný název domény hostitele SQL Serveru.
-p Port, na který je služba SQL Serveru nakonfigurovaná tak, aby naslouchala v prvním příkazu. V druhém příkazu -p představuje network.privilegedadaccount, pro které budete aktualizovat heslo.
kvno Hodnota musí být aktuální kvno + 1. Aktuální hodnota kvno se získá z kroku 3.

Jakmile spustíte výše uvedené příkazy, musíte zadat typ šifrování pro položky klíčové tabulky. Ujistěte se, že jste zvolili ten správný pro vaše prostředí.

Zkontrolujte položky keytab

Po aktualizaci klíčového tabulkového souboru byste teď měli vidět položky v tomto souboru pro kvno 3 (nové) a také kvno 2 (staré) pro stejný účet sqluser@CONTOSO.COM a příslušné SPN. Spuštěním následujícího příkazu klist můžete zkontrolovat položky v tabulce klíčů:

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

Změna hesla účtu ve službě služba Active Directory

Posledním krokem je aktualizace hesla network.privilegedadaccount nebo účtu, který vlastní Názvy hlavních služeb SQL Serveru ve službě Windows služba Active Directory. V předchozím scénáři musíme aktualizovat heslo pro sqluser@CONTOSO.COM ve službě služba Active Directory. Změňte heslo na <newpassword>, které jste zadali v kroku 3 v předchozí části. Ověřování služby služba Active Directory by mělo fungovat i bez nutnosti restartování služby SQL Server.