Condividi tramite


Ruotare il keytab gestito dal cliente di Istanza gestita di SQL con abilitazione per Azure Arc

Questo articolo descrive come ruotare i keytab gestiti dal cliente per Istanza gestita di SQL abilitata da Azure Arc. Questi keytab vengono usati per abilitare gli accessi di Active Directory per l'istanza gestita.

Prerequisiti:

Prima di procedere con questo articolo, è necessario avere un connettore Active Directory in modalità keytab gestito dal cliente e un'Istanza gestita di SQL abilitata da Azure Arc creata in precedenza.

Come ruotare i keytab gestiti dal cliente in un'istanza gestita

Per ruotare il keytab, seguire questa procedura:

  1. Ottiene il valore kvno per la generazione corrente di credenziali per l'account Active Directory di Istanza gestita di SQL.
  2. Creare un nuovo file keytab con voci per la generazione corrente delle credenziali. In particolare, il valore kvno deve corrispondere al passaggio (1.) precedente.
  3. Aggiornare il nuovo file keytab con nuove voci per le nuove credenziali per l'account Active Directory di Istanza gestita di SQL.
  4. Creare un segreto Kubernetes con i nuovi contenuti del file keytab nello stesso spazio dei nomi di Istanza gestita di SQL.
  5. Modificare la specifica di Istanza gestita di SQL affinché punti l'impostazione del segreto keytab di Active Directory a questo nuovo segreto.
  6. Modificare la password nel dominio di Active Directory.

Sono stati forniti gli script di PowerShell e bash seguenti che eseguiranno automaticamente i passaggi da 1 a 5:

  • rotate-sqlmi-keytab.sh - Questo script bash usa ktutil o adutil (se il flag --use-adutil è specificato) per generare automaticamente il nuovo keytab.
  • rotate-sqlmi-keytab.ps1 - Questo script di PowerShell usa ktpass.exe per generare automaticamente il nuovo keytab.

L'esecuzione dello script precedente genera il file keytab seguente per l'utente arcsqlmi@CONTOSO.COM, il segreto sqlmi-keytab-secret-kvno-2-3 e lo spazio dei nomi 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)

E la specifica updated-secret.yaml seguente:

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

Infine, modificare la password per l'account utente arcsqlmi nel controller di dominio per il dominio di Active Directory contoso.com:

  1. Aprire Server Manager nel controller di dominio per il dominio di Active Directory contoso.com. È possibile cercare Server Manager o aprirlo tramite il menu Start.

  2. Andare a Strumenti>Utenti e computer di Active Directory

    Screenshot di Utenti e computer di Active Directory.

  3. Selezionare l'utente per cui si desidera modificare la password. Fare clic con il pulsante destro del mouse per selezionare l'utente. Selezionare Reimposta password:

    Screenshot del controllo per reimpostare la password per un account utente di Active Directory.

  4. Immettere una nuova password e selezionare OK.

Risoluzione degli errori dopo la rotazione

Nel caso in cui si verifichino errori durante il tentativo di usare l'autenticazione di Active Directory dopo aver completato la rotazione del keytab, i file seguenti nel contenitore arc-sqlmi nel pod di Istanza gestita di SQL rappresentano un buon punto di partenza per iniziare a esaminare la causa radice:

  • File security.log che si trova in /var/opt/mssql/log: questo file di log contiene i log per le interazioni di SQL con il dominio di Active Directory.
  • File errorlog che si trova in /var/opt/mssql/log: questo file di log contiene i log di SQL Server in esecuzione nel contenitore.
  • File mssql.keytab che si trova in /var/run/secrets/managed/keytabs/mssql: verificare che questo file keytab contenga le voci appena aggiornate e corrisponda al file keytab creato usando gli script forniti in precedenza. Il file keytab può essere letto usando il comando klist, ad esempio klist -k mssql.keytab -e

Inoltre, dopo aver ottenuto il ticket-granting ticket (TGT) Kerberos usando il comando kinit, verificare che il valore kvno dell'utente SQL corrisponda al valore kvno più alto nel filemssql.keytab nel contenitore arc-sqlmi. Ad esempio, per l'utente arcsqlmi@CONTOSO.COM:

  • Ottenere il TGT Kerberos dal dominio di Active Directory eseguendo kinit arcsqlmi@CONTOSO.COM. Verrà richiesto un input dell'utente per immettere la password per l'utente arcsqlmi.
  • Al termine di questa operazione, è possibile eseguire una query su kvno eseguendo kvno arcsqlmi@CONTOSO.COM.

È anche possibile abilitare la registrazione di debug per il comando kinit eseguendo il comando seguente: KRB5_TRACE=/dev/stdout kinit -V arcsqlmi@CONTOSO.COM. In questo modo, si aumenta il livello di dettaglio e i log vengono restituiti a StdOut man mano che viene eseguito il comando.