Rotera nyckelflikar för SQL Server i Linux
gäller för:SQL Server – Linux
Baserat på organisationens metodtips för säkerhet kan du behöva rotera lösenordet regelbundet för Det Windows Active Directory-konto som anges som network.privilegedadaccount
i mssql.conf
eller något annat konto som äger tjänstens huvudnamn (SPN) för SQL Server-tjänsten. Den metod som stöds för att ändra lösenordet för kontot dokumenteras i den här artikeln. Lösenordsändringen börjar gälla utan att SQL Server-tjänsten behöver startas om i Linux.
Verktyget adutil används för att uppdatera nyckelfliken. Kommandot adutil måste köras från en domänansluten dator. Mer information om adutil och hur du laddar ned verktyget finns i Introduktion till adutil – Active Directory-verktyg.
Det är viktigt att uppdatera det nya lösenordet på nyckelfliken med nästa kvno- nummer innan du uppdaterar det i Active Directory. Om du använder nästa kvno-nummer förhindrar du att SQL Server-tjänsten behöver startas om efter lösenordsändringen. Om du uppdaterar lösenordet i Active Directory först och sedan ändrar nyckelfliken måste du starta om SQL Server-tjänsten för att säkerställa att Active Directory-autentiseringen fungerar korrekt.
Scenario för att rotera nyckelfliken
Låt oss ta ett exempel. Active Directory-autentisering är redan aktiverat för SQL Server i Linux. I filen mssql.conf
ställer du in network.privilegedadaccount
till sqluser
. Kontot sqluser@CONTOSO.COM
har redan skapats i Active Directory och nyckelfliken skapas också på standardplatsen /var/opt/mssql/secrets/mssql.keytab
. Nu vill du ändra lösenordet för sqluser@CONTOSO.COM
. Här är de steg som du behöver följa:
Installera adutil på den domänanslutna datorn.
Hämta eller förnya Kerberos TGT (biljettbeviljande biljett) med hjälp av kommandot
kinit
. Använd ett privilegierat konto för kommandotkinit
. Kontot måste ha behörighet att ansluta till domänen och ska kunna skapa konton och SPN:er i domänen. I det här fallet använder vi kontotprivilegeduser@CONTOSO.COM
som har behörighet att skapa konton och SPN:er i domänen som heterCONTOSO.COM
.kinit privilegeduser@CONTOSO.COM
När du har kört
kinit
för att hämta/förnya TGT frågar du det aktuella kvno- numret förnetwork.privilegedadaccount
. I det här fallet är detsqluser@CONTOSO.COM
.kvno sqluser@CONTOSO.COM
Du kan välja att rotera nyckelfliken med mssql-confeller rotera nyckelfliken manuellt med hjälp av adutil.
Rotera keytab med mssql-conf
Du kan installera adutil och integrera den med mssql-conf, vilket innebär att du kan rotera nyckelfliken med hjälp av mssql-conf.
Logga in som root-användare och växla till
mssql
-användaren.su mssql
Hämta eller förnya Kerberos TGT (biljettbeviljande biljett) med hjälp av kommandot
kinit
. Använd ett privilegierat konto för kommandotkinit
. Kontot måste ha behörighet att ansluta till domänen och ska kunna skapa konton och SPN:er i domänen. I det här fallet använder vi kontotprivilegeduser@CONTOSO.COM
som har behörighet att skapa konton och SPN:er i domänen som heterCONTOSO.COM
.kinit privilegeduser@CONTOSO.COM
Kör kommandot mssql-conf genom att tillhandahålla SQL Server keytab och
network.privilegedadaccount
detaljerna. I det här exemplet ärprivilegedadaccount
sqluser
../mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser --use-next-kvno'
När du uppmanas att ange ett lösenord anger du ett nytt lösenord som du tänker använda. Alternativet
--use-next-kvno
tilldelar nuvarande kvno + 1.Valfritt: Du kan också använda alternativet
--kvno
med kommandotmssql-conf setup-ad-keytab
för att ange en specifik kvno. Du måste först se till att du får den aktuella kvno- för användaren och sedan uppdatera den nya kvno i enlighet med detta, vilket skulle motsvara den aktuella kvno + 1.Du kan visa en lista över nycklarna i nyckelfliken med hjälp av kommandot :
klist -kte /var/opt/mssql/secrets/mssql.keytab
Du kommer att märka att nyckelfliken uppdateras med nästa kvno- för både användaren och SPN-poster.
Nu kan du ändra lösenordet för den
sqluser
användaren. Här är ett exempel.Viktig
Om du uppmanas att starta om SQL Server under det här steget kan du ignorera det. Kom ihåg att även ändra lösenordet i 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. To restart, 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)
Rotera nyckelfliken manuellt med adutil
Om du vill uppdatera nyckelfliken manuellt med adutilläser du följande steg.
När du uppdaterar nyckelfliken med adutil läggs en post till i den aktuella nyckelfliken. Om till exempel kvno talet från föregående kommando är 2
använder du kvno nummer 3
när du uppdaterar nyckelfliken. Följande är "adutil" kommandon som du behöver köra.
- Ändra portnumret (
-p
), värdnamnet (-H
), sökvägen till nyckelfliken (-k
) och kvnonumret så att det matchar din miljö.
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:
är sökvägen till den aktuella nyckelfliken som används av SQL Server och anges med hjälp av alternativet network.kerberoskeytabfile
i filen mssql.conf
.
-H:
är det fullständigt kvalificerade domännamnet för SQL Server-värden.
-p:
är porten som SQL Server-tjänsten är konfigurerad för att lyssna på i det första kommandot. I det andra kommandot representerar -p
den network.privilegedadaccount
som du ska uppdatera lösenordet för.
kvno:
värde måste vara aktuell kvno + 1. Det aktuella kvno--värdet hämtas från steg 3.
När du har kört kommandona ovan måste du ange ditt val av krypteringstyp för nyckelfliksposterna. Se till att du väljer rätt för din miljö.
Kontrollera keytab-posterna
När du har uppdaterat nyckelfliken bör du nu se posterna i nyckelfliken för kvno 3
(ny) och även kvno 2
(gammal) för samma konto sqluser@CONTOSO.COM
och SPN. Du kan köra följande klist
kommando för att kontrollera posterna i nyckelfliken:
klist -kte /var/opt/mssql/secrets/mssql.keytab
Ändra kontolösenordet i Active Directory
Det sista steget är att uppdatera lösenordet för network.privilegedadaccount
eller kontot som äger SQL Server-SPN:erna i Windows Active Directory. I föregående scenario måste vi uppdatera lösenordet för sqluser@CONTOSO.COM
i Active Directory. Ändra lösenordet till den <newpassword>
som du angav i steg 3 i föregående avsnitt. Active Directory-autentiseringen bör fortsätta att fungera och utan att SQL Server-tjänsten behöver startas om.
Relaterat innehåll
- Självstudie: Använd adutil för att konfigurera Active Directory-autentisering med SQL Server i Linux
- Självstudie: Konfigurera Active Directory-autentisering med SQL Server på Linux-containrar
- Förstå Active Directory-autentisering för SQL Server på Linux och containrar
- Felsöka Active Directory-autentisering för SQL Server på Linux och containrar