Udostępnij za pośrednictwem


Obracanie zakładek kluczy dla SQL Server w Linuxie

Dotyczy:programu SQL Server — Linux

W oparciu o najlepsze rozwiązania w zakresie zabezpieczeń organizacji może być wymagane regularne obracanie hasła dla konta usługi Windows Active Directory podanego jako network.privilegedadaccount w mssql.conflub inne konto, które jest właścicielem głównych nazw usług (SPN) dla usługi SQL Server. Obsługiwana metoda zmiany hasła dla konta jest udokumentowana w tym artykule. Zmiana hasła jest obowiązuje bez konieczności ponownego uruchamiania usługi SQL Server w systemie Linux.

Narzędzie adutil służy do aktualizowania keytab. Polecenie adutil musi zostać uruchomione z komputera przyłączonego do domeny. Aby uzyskać więcej informacji na temat adutil i sposobu pobierania tego narzędzia, zobacz Wprowadzenie do adutil - narzędzia Active Directory .

Konieczne jest zaktualizowanie nowego hasła w keytabie z kolejnym numerem kvno, zanim zostanie ono zaktualizowane w usłudze Active Directory. Użycie następnego numeru kvno zapobiega konieczności ponownego uruchamiania usługi SQL Server po zmianie hasła. Jeśli najpierw zaktualizujesz hasło w systemie Active Directory, a następnie zmienisz plik keytab, musisz ponownie uruchomić usługę SQL Server, aby upewnić się, że uwierzytelnianie systemu Active Directory działa prawidłowo.

Scenariusz rotacji pliku keytab

Rozważmy przykład. Uwierzytelnianie usługi Active Directory jest już włączone dla programu SQL Server w systemie Linux. W pliku mssql.conf ustawisz network.privilegedadaccount na sqluser. Konto sqluser@CONTOSO.COM zostało już utworzone w usłudze Active Directory, a plik keytab również został utworzony w lokalizacji domyślnej /var/opt/mssql/secrets/mssql.keytab. Teraz chcesz zmienić hasło dla sqluser@CONTOSO.COM. Poniżej przedstawiono kroki, które należy wykonać:

  1. Zainstaluj adutil na komputerze przyłączonym do domeny.

  2. Uzyskaj lub odnów bilet TGT Kerberos przy użyciu polecenia kinit. Użyj konta uprzywilejowanego dla polecenia kinit. Konto musi mieć uprawnienia do nawiązywania połączenia z domeną i powinno mieć możliwość tworzenia kont i nazw SPN w domenie. W tym przypadku używamy konta privilegeduser@CONTOSO.COM, które ma uprawnienia do tworzenia kont i nazw SPN w naszej domenie o nazwie CONTOSO.COM.

    kinit privilegeduser@CONTOSO.COM
    
  3. Po uruchomieniu kinit w celu uzyskania/odnowienia biletu TGT, wykonaj zapytanie dotyczące bieżącego kvnonetwork.privilegedadaccount. W tym przypadku jest to sqluser@CONTOSO.COM.

    kvno sqluser@CONTOSO.COM
    

Możesz obrócić kartę kluczy przy użyciumssql-conf lub obrócić kartę kluczy ręcznie przy użyciu narzędzia adutil.

Obracanie pliku keytab za pomocą mssql-conf

Można zainstalować adutil i zintegrować go z mssql-conf, co oznacza, że można rotować keytab przy użyciu mssql-conf.

  1. Zaloguj się jako użytkownik główny i przejdź do użytkownika mssql.

    su mssql
    
  2. Uzyskaj lub odnów bilet przyznawania dostępu (TGT) protokołu Kerberos, używając polecenia kinit. Użyj konta uprzywilejowanego dla polecenia kinit. Konto musi mieć uprawnienia do nawiązywania połączenia z domeną i powinno mieć możliwość tworzenia kont i nazw SPN w domenie. W tym przypadku używamy konta privilegeduser@CONTOSO.COM, które ma uprawnienia do tworzenia kont i nazw SPN w naszej domenie o nazwie CONTOSO.COM.

    kinit privilegeduser@CONTOSO.COM
    
  3. Uruchom polecenie mssql-conf, podając keytab SQL Server i szczegóły network.privilegedadaccount. W tym przykładzie privilegedadaccount jest sqluser.

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

    Po wyświetleniu monitu o hasło wprowadź nowe hasło, którego chcesz użyć. Opcja --use-next-kvno przydziela bieżące kvno + 1.

    opcjonalne: możesz również użyć opcji --kvno z poleceniem mssql-conf setup-ad-keytab, aby podać określony kvno. Najpierw upewnij się, że uzyskasz obecny kvno dla użytkownika, a następnie odpowiednio zaktualizujesz nowe kvno, które będzie obecnym kvno zwiększonym o 1.

  4. Klucze tab klucza można wyświetlić za pomocą polecenia :

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

    Zauważysz, że keytab został zaktualizowany o następne kvno zarówno dla wpisów użytkownika, jak i nazwy SPN.

  5. Teraz możesz zmienić hasło użytkownika sqluser. Oto przykład.

    Ważny

    Jeśli podczas tego kroku zostanie wyświetlony monit o ponowne uruchomienie programu SQL Server, możesz go zignorować. Pamiętaj również, aby zmienić hasło w usłudze 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)
    

Ręczne obracanie tabu klucza za pomocą narzędzia adutil

Jeśli chcesz ręcznie zaktualizować kartę klucza przy użyciu narzędzia adutil, zapoznaj się z poniższymi krokami.

Aktualizowanie keytabu przy użyciu narzędzia adutil dodaje wpis do bieżącego keytabu. Jeśli na przykład numer kvno z poprzedniego polecenia to 2, użyj numeru kvno 3 podczas aktualizowania keytab. Poniżej przedstawiono polecenia adutil, które należy uruchomić.

  • Zmień numer portu (-p), nazwę hosta (-H), ścieżkę do pliku keytab (-k) i numer kvno, aby dostosować je do swojego środowiska.
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: to ścieżka do bieżącego keytabu używanego przez program SQL Server i ustawianego za pomocą opcji network.kerberoskeytabfile w pliku mssql.conf.

-H: jest w pełni kwalifikowaną nazwą domeny hosta programu SQL Server.

-p: to port skonfigurowany przez usługę SQL Server do nasłuchiwania w pierwszym poleceniu. W drugim poleceniu -p reprezentuje network.privilegedadaccount, dla którego chcesz zaktualizować hasło.

kvno: wartość musi być równowarta bieżącej wartości kvno plus 1. Bieżąca wartość kvno jest uzyskiwana z kroku 3.

Po uruchomieniu powyższych poleceń należy podać wybrany typ szyfrowania dla wpisów na karcie kluczy. Upewnij się, że wybierasz odpowiedni dla swojego środowiska.

Sprawdź wpisy w pliku keytab

Po zaktualizowaniu keytabu powinny być teraz widoczne wpisy w keytabu dla kvno 3 (nowe), a także kvno 2 (stare) dla tego samego konta sqluser@CONTOSO.COM i SPN. Możesz uruchomić następujące polecenie klist, aby sprawdzić wpisy w keytab:

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

Zmienianie hasła konta w usłudze Active Directory

Ostatnim krokiem jest zaktualizowanie hasła network.privilegedadaccount lub konta, które jest właścicielem nazw SPN programu SQL Server w usłudze Windows Active Directory. W poprzednim scenariuszu musimy zaktualizować hasło dla sqluser@CONTOSO.COM w usłudze Active Directory. Zmień hasło na <newpassword> podane w kroku 3 w poprzedniej sekcji. Uwierzytelnianie usługi Active Directory powinno nadal działać i bez konieczności ponownego uruchamiania usługi SQL Server.