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.
- Distribuire un connettore Active Directory di keytab gestito dal cliente
- Distribuire e connettere un'Istanza gestita di SQL abilitata da Azure Arc
Come ruotare i keytab gestiti dal cliente in un'istanza gestita
Per ruotare il keytab, seguire questa procedura:
- Ottiene il valore
kvno
per la generazione corrente di credenziali per l'account Active Directory di Istanza gestita di SQL. - Creare un nuovo file keytab con voci per la generazione corrente delle credenziali. In particolare, il valore
kvno
deve corrispondere al passaggio (1.) precedente. - Aggiornare il nuovo file keytab con nuove voci per le nuove credenziali per l'account Active Directory di Istanza gestita di SQL.
- Creare un segreto Kubernetes con i nuovi contenuti del file keytab nello stesso spazio dei nomi di Istanza gestita di SQL.
- Modificare la specifica di Istanza gestita di SQL affinché punti l'impostazione del segreto keytab di Active Directory a questo nuovo segreto.
- 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 usaktutil
oadutil
(se il flag--use-adutil
è specificato) per generare automaticamente il nuovo keytab.rotate-sqlmi-keytab.ps1
- Questo script di PowerShell usaktpass.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
:
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.Andare a Strumenti>Utenti e computer di Active Directory
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:
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 comandoklist
, ad esempioklist -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'utentearcsqlmi
. - Al termine di questa operazione, è possibile eseguire una query su
kvno
eseguendokvno 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.