Ruotare i keytab per SQL Server in Linux
Si applica a: SQL Server - Linux
In base alle procedure consigliate per la sicurezza dell'organizzazione, potrebbe essere necessario ruotare regolarmente la password per l'account di Windows Active Directory fornito come network.privilegedadaccount
in mssql.conf
o qualsiasi altro account proprietario dei nomi dell'entità servizio (SPN) per il servizio SQL Server. Il metodo supportato per modificare la password per l'account è descritto in questo articolo. La modifica della password ha effetto senza la necessità di riavviare il servizio SQL Server in Linux.
Lo strumento adutil viene utilizzato per aggiornare il keytab. Il comando adutil deve essere eseguito da un computer aggiunto a un dominio. Per altre informazioni su adutil e su come scaricare lo strumento, vedere Introduzione all'utilità adutil - Active Directory.
È fondamentale aggiornare la nuova password nel keytab con il numero kvno successivo prima di aggiornarlo in Active Directory. L'uso del numero kvno successivo impedisce al servizio di SQL Server di essere riavviato dopo la modifica della password. Se si aggiorna prima la password in Active Directory e quindi si modifica il keytab, è necessario riavviare il servizio SQL Server per garantire che l'autenticazione di Active Directory funzioni correttamente.
Scenario per la rotazione del keytab
Di seguito è riportato un esempio. L'autenticazione di Active Directory è già abilitata per SQL Server in Linux. mssql.conf
Nel file impostare su network.privilegedadaccount
sqluser
. L'account sqluser@CONTOSO.COM
è già stato creato in Active Directory e viene creato anche il keytab nel percorso /var/opt/mssql/secrets/mssql.keytab
predefinito . Ora è necessario modificare la password per sqluser@CONTOSO.COM
. Ecco i passaggi da seguire:
Installare adutil nel computer aggiunto al dominio.
Ottenere o rinnovare il ticket-granting ticket (TGT) Kerberos usando il comando
kinit
. Usare un account con privilegi per il comandokinit
. L'account deve avere l'autorizzazione per connettersi al dominio ed essere in grado di creare account e nomi dell'entità servizio nel dominio. In questo caso, viene usato l'accountprivilegeduser@CONTOSO.COM
che dispone delle autorizzazioni per creare account e NOMI SPN nel dominio denominatoCONTOSO.COM
.kinit privilegeduser@CONTOSO.COM
Dopo l'esecuzione
kinit
per ottenere/rinnovare il TGT, eseguire una query sul numero kvno corrente dell'oggettonetwork.privilegedadaccount
. In questo caso, èsqluser@CONTOSO.COM
.kvno sqluser@CONTOSO.COM
È possibile scegliere di ruotare il keytab con mssql-conf oppure di ruotare manualmente il keytab usando adutil.
Ruotare il keytab con mssql-conf
È possibile installare adutil e integrarlo con mssql-conf, il che significa che è possibile ruotare il keytab usando mssql-conf.
Accedi come utente ROOT e passa all'utente
mssql
.su mssql
Ottenere o rinnovare il ticket-granting ticket (TGT) Kerberos usando il comando
kinit
. Usare un account con privilegi per il comandokinit
. L'account deve avere l'autorizzazione per connettersi al dominio ed essere in grado di creare account e nomi dell'entità servizio nel dominio. In questo caso, viene usato l'accountprivilegeduser@CONTOSO.COM
che dispone delle autorizzazioni per creare account e NOMI SPN nel dominio denominatoCONTOSO.COM
.kinit privilegeduser@CONTOSO.COM
Eseguire il comando mssql-conf , specificando la scheda chiave di SQL Server e i
network.privilegedadaccount
dettagli. In questo esempio,privilegedadaccount
èsqluser
../mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser --use-next-kvno'
Quando viene richiesta una password, immetti una nuova password che intendi usare. L'opzione
--use-next-kvno
assegna il kvno corrente + 1.Facoltativo: è anche possibile usare l'opzione
--kvno
con ilmssql-conf setup-ad-keytab
comando per fornire un kvno specifico. È necessario assicurarsi di ottenere prima il kvno corrente per l'utente e quindi aggiornare il nuovo kvno di conseguenza, che sarebbe il kvno corrente + 1.È possibile elencare le chiavi del keytab usando il comando:
klist -kte /var/opt/mssql/secrets/mssql.keytab
Si noterà che il keytab viene aggiornato con il kvno successivo per le voci utente e SPN.
Ora è necessario modificare la password per l’utente
sqluser
. Ecco un esempio.Importante
Se durante questo passaggio viene richiesto di riavviare SQL Server, è possibile ignorarlo. Ricorda di modificare la password anche in Active Directory.
bash-4.4$ kinit privilegedaccount@CONTOSO.COM Password for privilegedaccount@CONTOSO.COM: bash-4.4$ ./mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser --use-next-kvno sqluser@contoso.com's password: Confirm sqluser@contoso.com's password: SQL Server needs to be restarted in order to adopt the new AD configuration, please run 'systemctl restart mssql-server.service'. bash-4.4$ klist -kte /var/opt/mssql/secrets/mssql.keytab Keytab name: FILE:/var/opt/mssql/secrets/mssql.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 4 12/30/2021 14:02:08 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1.contoso.com:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1@CONTOSO.COM (aes256-cts-hmac-sha1-96)
Ruotare manualmente il keytab con adutl
Per aggiornare manualmente il keytab usando adutil, fai riferimento ai passaggi seguenti.
L'aggiornamento del keytab tramite adutil aggiunge una voce al keytab corrente. Ad esempio, se il numero kvno del comando precedente è 2
, utilizzare il numero kvno3
durante l'aggiornamento del keytab. Di seguito sono elencati i comandi adutil che è necessario eseguire.
- Modificare il numero di porta (
-p
), il nome host (-H
), il percorso di keytab (-k
) e il numero kvno in modo che corrispondano all'ambiente.
adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H mssql.contoso.com --password '<newpassword>' -s MSSQLSvc --kvno 3
adutil keytab create -k /var/opt/mssql/secrets/mssql.keytab -p sqluser --password '<newpassword>' --kvno 3
-k:
è il percorso del keytab corrente usato da SQL Server e impostato usando l'opzione network.kerberoskeytabfile
nel mssql.conf
file.
-H:
è il nome di dominio completo dell'host di SQL Server.
-p:
è la porta su cui è configurato il servizio SQL Server per l'ascolto nel primo comando. Nel secondo comando rappresenta -p
l'oggetto network.privilegedadaccount
per cui si aggiornerà la password.
kvno:
il valore deve essere il kvno + 1 corrente. Il valore kvno corrente si ottiene dal passaggio 3.
Dopo aver eseguito i comandi precedenti, è necessario specificare la scelta del tipo di crittografia per le voci keytab. Assicurarsi di scegliere quello adatto per l'ambiente in uso.
Controllare le voci keytab
Dopo aver aggiornato il keytab, vengono ora visualizzate le voci nel keytab per kvno 3
(nuovo) e anche kvno 2
(precedente) per lo stesso account sqluser@CONTOSO.COM
e per gli stessi nomi SPN. È possibile eseguire il comando klist
seguente per controllare le voci nel keytab:
klist -kte /var/opt/mssql/secrets/mssql.keytab
Modificare la password dell'account in Active Directory
L'ultimo passaggio consiste nell'aggiornare la password dell'oggetto network.privilegedadaccount
o dell'account proprietario dei nomi SPN di SQL Server in Windows Active Directory. Nello scenario precedente è necessario aggiornare la password per sqluser@CONTOSO.COM
in Active Directory. Modifica la password nell'elemento <newpassword>
specificato nel passaggio 3 della sezione precedente. L'autenticazione di Active Directory deve continuare a funzionare e senza la necessità di riavviare il servizio SQL Server.
Contenuto correlato
- Esercitazione: Usare adutil per configurare l'autenticazione di Active Directory con SQL Server in Linux
- Esercitazione: Configurare l'autenticazione di Active Directory tramite i contenitori di SQL Server in Linux
- Informazioni sull'autenticazione Active Directory per SQL Server in Linux e contenitori
- Risoluzione dei problemi relativi all'autenticazione Active Directory per SQL Server in Linux e in contenitori