Dela via


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.confeller 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:

  1. Installera adutil på den domänanslutna datorn.

  2. Hämta eller förnya Kerberos TGT (biljettbeviljande biljett) med hjälp av kommandot kinit. Använd ett privilegierat konto för kommandot kinit. 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 kontot privilegeduser@CONTOSO.COM som har behörighet att skapa konton och SPN:er i domänen som heter CONTOSO.COM.

    kinit privilegeduser@CONTOSO.COM
    
  3. När du har kört kinit för att hämta/förnya TGT frågar du det aktuella kvno- numret för network.privilegedadaccount. I det här fallet är det sqluser@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.

  1. Logga in som root-användare och växla till mssql-användaren.

    su mssql
    
  2. Hämta eller förnya Kerberos TGT (biljettbeviljande biljett) med hjälp av kommandot kinit. Använd ett privilegierat konto för kommandot kinit. 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 kontot privilegeduser@CONTOSO.COM som har behörighet att skapa konton och SPN:er i domänen som heter CONTOSO.COM.

    kinit privilegeduser@CONTOSO.COM
    
  3. Kör kommandot mssql-conf genom att tillhandahålla SQL Server keytab och network.privilegedadaccount detaljerna. I det här exemplet är privilegedadaccountsqluser.

    ./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 kommandot mssql-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.

  4. 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.

  5. 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 2anvä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.