Delen via


Sleuteltabs roteren voor SQL Server op Linux

van toepassing op:SQL Server- - Linux

Op basis van de best practices voor beveiliging van uw organisatie moet u mogelijk het wachtwoord regelmatig roteren voor het Windows Active Directory-account dat is verstrekt als network.privilegedadaccount in mssql.conf, of een ander account dat eigenaar is van de spn (service-principal names) voor de SQL Server-service. De ondersteunde methode voor het wijzigen van het wachtwoord voor het account wordt beschreven in dit artikel. De wachtwoordwijziging wordt van kracht zonder dat de SQL Server-service op Linux opnieuw hoeft te worden opgestart.

Het hulpprogramma adutil wordt gebruikt om de keytab bij te werken. De opdracht adutil moet worden uitgevoerd vanaf een computer die lid is van een domein. Zie voor meer informatie over adutil en het downloaden van het hulpprogramma Inleiding tot adutil - Active Directory hulpprogramma.

Het is essentieel om het nieuwe wachtwoord in de keytab bij te werken met het volgende kvno- nummer voordat u het bijwerkt in Active Directory. Als u de volgende kvno nummer gebruikt, voorkomt u dat de SQL Server-service opnieuw moet worden opgestart nadat het wachtwoord is gewijzigd. Als u eerst het wachtwoord in Active Directory bijwerkt en vervolgens de keytab wijzigt, moet u de SQL Server-service opnieuw starten om ervoor te zorgen dat Active Directory-verificatie goed werkt.

Scenario voor het roteren van de keytab

Laten we eens kijken naar een voorbeeld. Active Directory-verificatie is al ingeschakeld voor SQL Server in Linux. In het bestand mssql.conf stelt u de network.privilegedadaccount in op sqluser. Het account sqluser@CONTOSO.COM is al gemaakt in Active Directory en de keytab wordt ook gemaakt op de standaardlocatie /var/opt/mssql/secrets/mssql.keytab. Nu wilt u het wachtwoord voor de sqluser@CONTOSO.COMwijzigen. Dit zijn de stappen die u moet volgen:

  1. Installeer adutil op de computer die lid is van het domein.

  2. Verkrijg of vernieuw de Kerberos TGT (ticket-granting ticket) door de opdracht kinit te gebruiken. Gebruik een bevoegd account voor de opdracht kinit. Het account moet gemachtigd zijn om verbinding te maken met het domein en moet accounts en SPN's in het domein kunnen maken. In dit geval gebruiken we het account privilegeduser@CONTOSO.COM met machtigingen voor het maken van accounts en SPN's in ons domein met de naam CONTOSO.COM.

    kinit privilegeduser@CONTOSO.COM
    
  3. Nadat u kinit hebt uitgevoerd om de TGT te verkrijgen/vernieuwen, vraagt u het huidige kvno van de network.privilegedadaccountop. In dit geval is het sqluser@CONTOSO.COM.

    kvno sqluser@CONTOSO.COM
    

U kunt ervoor kiezen om de keytab te draaien met mssql-confof de keytab handmatig te draaien met behulp van adutil.

Werk de keytab bij met mssql-conf

U kunt adutil installeren en integreren met mssql-conf, wat betekent dat u de keytab kunt draaien met mssql-conf.

  1. Meld u aan als hoofdgebruiker en schakel over naar de mssql gebruiker.

    su mssql
    
  2. Verkrijg of vernieuw de Kerberos TGT (ticket-granting ticket) met behulp van de opdracht kinit. Gebruik een bevoegd account voor de opdracht kinit. Het account moet gemachtigd zijn om verbinding te maken met het domein en moet accounts en SPN's in het domein kunnen maken. In dit geval gebruiken we het account privilegeduser@CONTOSO.COM met machtigingen voor het maken van accounts en SPN's in ons domein met de naam CONTOSO.COM.

    kinit privilegeduser@CONTOSO.COM
    
  3. Voer de opdracht mssql-conf uit, waarbij u de SQL Server-keytab en de network.privilegedadaccount details oplevert. In dit voorbeeld is de privilegedadaccountsqluser.

    ./mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser --use-next-kvno'
    

    Wanneer u wordt gevraagd om een wachtwoord, voert u een nieuw wachtwoord in dat u wilt gebruiken. Met de optie --use-next-kvno wordt de huidige kvno- + 1 toegewezen.

    Optioneel: U kunt ook --kvno gebruiken met de opdracht mssql-conf setup-ad-keytab om een specifieke kvnoop te geven. U moet ervoor zorgen dat u eerst de huidige kvno- voor de gebruiker krijgt en vervolgens de nieuwe kvno dienovereenkomstig bijwerkt, wat de huidige kvno + 1 zou zijn.

  4. U kunt de sleutels van de keytab weergeven met behulp van de opdracht:

    klist -kte /var/opt/mssql/secrets/mssql.keytab
    

    U ziet dat de keytab wordt bijgewerkt met de volgende kvno voor zowel de gebruiker als de SPN-vermeldingen.

  5. U kunt nu het wachtwoord voor de sqluser gebruiker wijzigen. Hier volgt een voorbeeld.

    Belangrijk

    Als u tijdens deze stap wordt gevraagd SQL Server opnieuw op te starten, kunt u deze negeren. Vergeet niet om ook het wachtwoord in Active Directory te wijzigen.

    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)
    

De keytab handmatig draaien met adutil

Als u de keytab handmatig wilt bijwerken met adutil, raadpleegt u de volgende stappen.

Het bijwerken van de keytab met behulp van adutil voegt een vermelding toe aan de huidige keytab. Als de kvno- nummer uit de vorige opdracht bijvoorbeeld is 2, gebruikt u de kvno- nummer 3 bij het bijwerken van de keytab. Hieronder vindt u de adutil opdrachten die u moet uitvoeren.

  • Wijzig het poortnummer (-p), hostnaam (-H), het pad naar keytab (-k) en kvno-nummer, zodat deze overeenkomt met uw omgeving.
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: is het pad naar de huidige keytab die wordt gebruikt door SQL Server en ingesteld met behulp van de optie network.kerberoskeytabfile in het mssql.conf bestand.

-H: is de volledig gekwalificeerde domeinnaam van de SQL Server-host.

-p: is de poort waarop de SQL Server-service is geconfigureerd om in de eerste opdracht te luisteren. In de tweede opdracht vertegenwoordigt -p de network.privilegedadaccount waarvoor u het wachtwoord gaat bijwerken.

kvno: waarde moet de huidige waarde van kvno plus 1 zijn. De huidige kvno waarde wordt verkregen uit stap 3.

Nadat u de bovenstaande opdrachten hebt uitgevoerd, moet u uw keuze voor het versleutelingstype opgeven voor de keytab-vermeldingen. Zorg ervoor dat u de juiste kiest voor uw omgeving.

De keytab-vermeldingen controleren

Nadat u de keytab hebt bijgewerkt, ziet u nu de vermeldingen in de keytab voor kvno 3 (nieuw) en ook voor kvno 2 (oud) voor hetzelfde account sqluser@CONTOSO.COM en SPN's. U kunt de volgende klist opdracht uitvoeren om de vermeldingen in de keytab te controleren:

klist -kte /var/opt/mssql/secrets/mssql.keytab

Het accountwachtwoord wijzigen in Active Directory

De laatste stap is het bijwerken van het wachtwoord van de network.privilegedadaccount of het account dat eigenaar is van de SQL Server SPN's in Windows Active Directory. In het vorige scenario moeten we het wachtwoord voor sqluser@CONTOSO.COM in Active Directory bijwerken. Wijzig het wachtwoord naar de <newpassword> die u in stap 3 van de sectie ervoor hebt opgegeven. Active Directory-verificatie moet blijven werken en zonder dat de SQL Server-service opnieuw moet worden opgestart.