Delen via


Sql Managed Instance draaien die is ingeschakeld door door de klant beheerde keytab van Azure Arc

In dit artikel wordt beschreven hoe u door de klant beheerde sleuteltabs kunt roteren voor SQL Managed Instance die is ingeschakeld door Azure Arc. Deze keytabs worden gebruikt om Active Directory-aanmeldingen in te schakelen voor het beheerde exemplaar.

Vereisten:

Voordat u verdergaat met dit artikel, moet u een Active Directory-connector hebben in de door de klant beheerde keytabmodus en een DOOR SQL beheerd exemplaar dat is ingeschakeld door Azure Arc.

Door de klant beheerde sleuteltabs draaien in een beheerd exemplaar

De volgende stappen moeten worden gevolgd om de keytab te roteren:

  1. Waarde ophalen kvno voor de huidige generatie referenties voor het SQL MI Active Directory-account.
  2. Maak een nieuw keytab-bestand met vermeldingen voor de huidige generatie referenties. kvno De waarde moet met name overeenkomen met stap 1.).
  3. Werk het nieuwe keytabbestand bij met nieuwe vermeldingen voor de nieuwe referenties voor het SQL MI Active Directory-account.
  4. Maak een kubernetes-geheim met de inhoud van het nieuwe keytab-bestand in dezelfde naamruimte als de SQL MI.
  5. Bewerk de SQL MI-specificatie om de instelling voor het keytabgeheim van Active Directory te laten verwijzen naar dit nieuwe geheim.
  6. Wijzig het wachtwoord in het Active Directory-domein.

We hebben de volgende PowerShell- en bash-scripts opgegeven die voor u de stappen 1-5 uitvoeren:

  • rotate-sqlmi-keytab.sh - Dit bash-script gebruikt ktutil of adutil (als de --use-adutil vlag is opgegeven) om de nieuwe keytab voor u te genereren.
  • rotate-sqlmi-keytab.ps1 - Dit PowerShell-script gebruikt ktpass.exe om de nieuwe keytab voor u te genereren.

Als u het bovenstaande script uitvoert, resulteert dit in het volgende keytab-bestand voor de gebruiker arcsqlmi@CONTOSO.COM, het geheim sqlmi-keytab-secret-kvno-2-3 en de naamruimte 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)

En de volgende bijgewerkte-secret.yaml-specificatie:

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: sqlmi-keytab-secret-kvno-2-3
  namespace: test
data:
  keytab:
    <keytab-contents>

Wijzig ten slotte het wachtwoord voor arcsqlmi het gebruikersaccount in de domeincontroller voor het Active Directory-domein contoso.com:

  1. Open Serverbeheer op de domeincontroller voor het Active Directory-domeincontoso.com. U kunt zoeken naar Serverbeheer of openen via de Startmenu.

  2. Ga naar Extra> Active Directory

    Schermopname van Active Directory.

  3. Selecteer de gebruiker waarvoor u het wachtwoord wilt wijzigen. Klik met de rechtermuisknop om de gebruiker te selecteren. Selecteer Wachtwoord opnieuw instellen:

    Schermopname van het besturingselement voor het opnieuw instellen van het wachtwoord voor een Active Directory-gebruikersaccount.

  4. Voer een nieuw wachtwoord in en selecteer OK.

Fouten na rotatie oplossen

Als er fouten optreden bij het gebruik van Active Directory-verificatie na het voltooien van de keytabrotatie, zijn de volgende bestanden in de arc-sqlmi container in de SQL MI-pod een goede plek om de hoofdoorzaak te onderzoeken:

  • security.log bestand op /var/opt/mssql/log - Dit logboekbestand bevat logboeken voor de interacties van SQL met het Active Directory-domein.
  • errorlog bestand op /var/opt/mssql/log - Dit logboekbestand bevat logboeken van de SQL Server die wordt uitgevoerd op de container.
  • mssql.keytab bestand op /var/run/secrets/managed/keytabs/mssql - Controleer of dit keytab-bestand de zojuist bijgewerkte vermeldingen bevat en overeenkomt met het keytab-bestand dat is gemaakt met behulp van de bovenstaande scripts. Het keytab-bestand kan worden gelezen met behulp van de klist opdracht, bijvoorbeeld klist -k mssql.keytab -e

Controleer na het ophalen van het kerberos Ticket-Granting Ticket (TGT) met behulp van de kinit opdracht ook of de kvno SQL-gebruiker overeenkomt met het hoogste kvno in het mssql.keytab bestand in de arc-sqlmi container. Bijvoorbeeld voor arcsqlmi@CONTOSO.COM gebruiker:

  • Haal de kerberos TGT op uit het Active Directory-domein door deze uit te voeren kinit arcsqlmi@CONTOSO.COM. Hiermee wordt een gebruikersinvoer gevraagd voor het wachtwoord voor arcsqlmi de gebruiker.
  • Zodra dit is gelukt, kan er een query worden uitgevoerd op kvno arcsqlmi@CONTOSO.COMde kvno query.

We kunnen ook logboekregistratie voor foutopsporing voor de kinit opdracht inschakelen door het volgende uit te voeren: KRB5_TRACE=/dev/stdout kinit -V arcsqlmi@CONTOSO.COM Dit verhoogt de uitgebreidheid en voert de logboeken uit naar stdout wanneer de opdracht wordt uitgevoerd.