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.
- Een door de klant beheerde keytab Active Directory-connector implementeren
- Een met SQL beheerd exemplaar implementeren en verbinden 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:
- Waarde ophalen
kvno
voor de huidige generatie referenties voor het SQL MI Active Directory-account. - Maak een nieuw keytab-bestand met vermeldingen voor de huidige generatie referenties.
kvno
De waarde moet met name overeenkomen met stap 1.). - Werk het nieuwe keytabbestand bij met nieuwe vermeldingen voor de nieuwe referenties voor het SQL MI Active Directory-account.
- Maak een kubernetes-geheim met de inhoud van het nieuwe keytab-bestand in dezelfde naamruimte als de SQL MI.
- Bewerk de SQL MI-specificatie om de instelling voor het keytabgeheim van Active Directory te laten verwijzen naar dit nieuwe geheim.
- 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 gebruiktktutil
ofadutil
(als de--use-adutil
vlag is opgegeven) om de nieuwe keytab voor u te genereren.rotate-sqlmi-keytab.ps1
- Dit PowerShell-script gebruiktktpass.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
:
Open Serverbeheer op de domeincontroller voor het Active Directory-domein
contoso.com
. U kunt zoeken naar Serverbeheer of openen via de Startmenu.Ga naar Extra> Active Directory
Selecteer de gebruiker waarvoor u het wachtwoord wilt wijzigen. Klik met de rechtermuisknop om de gebruiker te selecteren. Selecteer Wachtwoord opnieuw instellen:
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 deklist
opdracht, bijvoorbeeldklist -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 voorarcsqlmi
de gebruiker. - Zodra dit is gelukt, kan er een query worden uitgevoerd op
kvno arcsqlmi@CONTOSO.COM
dekvno
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.