Sdílet prostřednictvím


Rotace keytabů pro SQL Server na Linuxu

platí pro:SQL Server – Linux

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 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 keytabu. 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 Úvod do nástroje adutil - nástroj Active Directory.

Před aktualizací ve službě 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ě 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 Active Directory funguje správně.

Scénář pro rotaci keytabu

Podívejme se na příklad. Ověřování 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ě 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
    

Nástroj mssql-conf můžete použít k rotaci keytabu, nebo můžete keytab ručně otočit pomocí nástroje adutil .

Otočení keytab souboru pomocí mssql-conf

Můžete nainstalovat adutil a integrovat ho 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ískejte nebo obnovte TGT (lístek udělující lístky) protokolu Kerberos. Pro příkaz kinit použijte privilegovaný účet. Účet musí mít oprávnění pro připojení k doméně a 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 názvů služeb v naší doméně označované jako CONTOSO.COM.

    kinit privilegeduser@CONTOSO.COM
    
  3. Spusťte příkaz mssql-conf a poskytněte keytab SQL Serveru a podrobnosti o 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 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 aktualizovat klávesovou zkratku ručně pomocí nástroje adutil, projděte si následující kroky.

Aktualizace keytab souboru pomocí nástroje adutil přidá položku do aktuálního keytab souboru. Pokud je například kvno číslo z předchozího příkazu 2, použijte při aktualizaci keytab kvno číslo 3. Následuje adutil příkazy, které potřebujete 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

-k: je cesta k aktuální tabulce klíčů, kterou používá SQL Server, a je nastavena pomocí možnosti network.kerberoskeytabfile v souboru mssql.conf.

-H: je plně kvalifikovaný název domény hostitele SQL Serveru.

-p: je 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ě 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 Active Directory. V předchozím scénáři musíme aktualizovat heslo pro sqluser@CONTOSO.COM ve službě Active Directory. Změňte heslo na <newpassword>, které jste zadali v kroku 3 v předchozí části. Ověřování služby Active Directory by mělo fungovat i bez nutnosti restartování služby SQL Server.