Obróć usługę SQL Managed Instance włączoną przez kartę kluczy zarządzanych przez klienta usługi Azure Arc
W tym artykule opisano sposób rotacji kart kluczy zarządzanych przez klienta dla usługi SQL Managed Instance włączonej przez usługę Azure Arc. Te tabki kluczy służą do włączania logowań usługi Active Directory dla wystąpienia zarządzanego.
Wymagania wstępne:
Przed kontynuowaniem pracy z tym artykułem musisz mieć łącznik usługi Active Directory w trybie karty kluczy zarządzanych przez klienta i wystąpienie zarządzane SQL włączone przez utworzoną usługę Azure Arc.
- Wdrażanie łącznika usługi Active Directory zarządzanego przez klienta
- Wdrażanie i łączenie wystąpienia zarządzanego SQL włączonego przez usługę Azure Arc
Jak obracać tabły kluczy zarządzanych przez klienta w wystąpieniu zarządzanym
Aby obrócić kartę klucza, należy wykonać następujące czynności:
- Pobierz
kvno
wartość bieżącej generacji poświadczeń dla konta usługi SQL MI Active Directory. - Utwórz nowy plik na karcie kluczy z wpisami dla bieżącej generacji poświadczeń. W szczególności wartość powinna być zgodna
kvno
z kroku (1.) powyżej. - Zaktualizuj nowy plik karty kluczy przy użyciu nowych wpisów dla nowego poświadczenia dla konta usługi SQL MI Active Directory.
- Utwórz wpis tajny kubernetes zawierający nową zawartość pliku keytab w tej samej przestrzeni nazw co wystąpienie zarządzane SQL.
- Edytuj specyfikację wystąpienia zarządzanego SQL, aby wskazać ustawienie wpisu tajnego karty usługi Active Directory na ten nowy wpis tajny.
- Zmień hasło w domenie usługi Active Directory.
Udostępniliśmy następujące skrypty programu PowerShell i powłoki bash, które będą wykonywać kroki od 1 do 5:
rotate-sqlmi-keytab.sh
— Ten skrypt powłoki bash używaktutil
polecenia lubadutil
(jeśli określono flagę--use-adutil
), aby wygenerować nową kartę klucza.rotate-sqlmi-keytab.ps1
— Ten skrypt programu PowerShell używaktpass.exe
polecenia do wygenerowania nowej tabki kluczy.
Wykonanie powyższego skryptu spowoduje wyświetlenie następującego pliku tab dla użytkownika arcsqlmi@CONTOSO.COM
, wpisu tajnego sqlmi-keytab-secret-kvno-2-3
i przestrzeni nazw test
:
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
2 02/16/2023 17:12:05 arcsqlmiuser@CONTOSO.COM (aes256-cts-hmac-sha1-96)
2 02/16/2023 17:12:05 arcsqlmiuser@CONTOSO.COM (arcfour-hmac)
2 02/16/2023 17:12:05 MSSQLSvc/arcsqlmi.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96)
2 02/16/2023 17:12:05 MSSQLSvc/arcsqlmi.contoso.com@CONTOSO.COM (arcfour-hmac)
2 02/16/2023 17:12:05 MSSQLSvc/arcsqlmi.contoso.com:31433@CONTOSO.COM (aes256-cts-hmac-sha1-96)
2 02/16/2023 17:12:05 MSSQLSvc/arcsqlmi.contoso.com:31433@CONTOSO.COM (arcfour-hmac)
3 02/16/2023 17:13:41 arcsqlmiuser@CONTOSO.COM (aes256-cts-hmac-sha1-96)
3 02/16/2023 17:13:41 arcsqlmiuser@CONTOSO.COM (arcfour-hmac)
3 02/16/2023 17:13:41 MSSQLSvc/arcsqlmi.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96)
3 02/16/2023 17:13:41 MSSQLSvc/arcsqlmi.contoso.com@CONTOSO.COM (arcfour-hmac)
3 02/16/2023 17:13:41 MSSQLSvc/arcsqlmi.contoso.com:31433@CONTOSO.COM (aes256-cts-hmac-sha1-96)
3 02/16/2023 17:13:41 MSSQLSvc/arcsqlmi.contoso.com:31433@CONTOSO.COM (arcfour-hmac)
I następujące specyfikacje updated-secret.yaml:
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: sqlmi-keytab-secret-kvno-2-3
namespace: test
data:
keytab:
<keytab-contents>
Na koniec zmień hasło konta arcsqlmi
użytkownika na kontrolerze domeny dla domeny contoso.com
usługi Active Directory:
Otwórz Menedżer serwera na kontrolerze domeny dla domeny
contoso.com
usługi Active Directory . Możesz wyszukać Menedżer serwera lub otworzyć ją za pomocą menu Start.Przejdź do pozycji Narzędzia> Użytkownicy i komputery usługi Active Directory
Wybierz użytkownika, dla którego chcesz zmienić hasło. Kliknij prawym przyciskiem myszy, aby wybrać użytkownika. Wybierz pozycję Resetuj hasło:
Wprowadź nowe hasło i wybierz pozycję
OK
.
Rozwiązywanie problemów z błędami po rotacji
W przypadku wystąpienia błędów podczas próby użycia uwierzytelniania usługi Active Directory po zakończeniu rotacji karty kluczy następujące pliki w kontenerze w arc-sqlmi
zasobniku mi SQL są dobrym miejscem do rozpoczęcia badania głównej przyczyny:
security.log
plik znajdujący się w lokalizacji/var/opt/mssql/log
— ten plik dziennika zawiera dzienniki interakcji programu SQL z domeną usługi Active Directory.errorlog
plik znajdujący się w lokalizacji/var/opt/mssql/log
— ten plik dziennika zawiera dzienniki z programu SQL Server uruchomionego w kontenerze.mssql.keytab
plik znajdujący się w/var/run/secrets/managed/keytabs/mssql
lokalizacji — sprawdź, czy ten plik keytab zawiera nowo zaktualizowane wpisy i pasuje do pliku keytab utworzonego przy użyciu skryptów podanych powyżej. Plik keytab można odczytać przy użyciuklist
polecenia, tj.klist -k mssql.keytab -e
Ponadto po otrzymaniu biletu przyznania biletu protokołu Kerberos (TGT) za pomocą kinit
polecenia sprawdź, czy kvno
użytkownik SQL jest zgodny z najwyższymi kvno
wartościami w mssql.keytab
pliku w kontenerze arc-sqlmi
. Na przykład dla arcsqlmi@CONTOSO.COM
użytkownika:
- Pobierz bilet TGT protokołu Kerberos z domeny usługi Active Directory, uruchamiając polecenie
kinit arcsqlmi@CONTOSO.COM
. Spowoduje to wyświetlenie monitu o podanie hasła dlaarcsqlmi
użytkownika. - Po pomyślnym zakończeniu
kvno
zapytania można wykonywać zapytania, uruchamiając poleceniekvno arcsqlmi@CONTOSO.COM
.
Możemy również włączyć rejestrowanie debugowania dla kinit
polecenia, uruchamiając następujące polecenie: KRB5_TRACE=/dev/stdout kinit -V arcsqlmi@CONTOSO.COM
. Zwiększa to szczegółowość i generuje dane wyjściowe dzienników do stdout w miarę wykonywania polecenia.