Dela via


Självstudie: Använda adutil för att konfigurera Active Directory-autentisering med SQL Server i Linux

gäller för:SQL Server – Linux

I den här självstudien beskrivs hur du konfigurerar Windows Active Directory-autentisering för SQL Server i Linux med adutil. En annan metod för att konfigurera Active Directory-autentisering med ktpass finns i Självstudie: Använda Active Directory-autentisering med SQL Server i Linux.

Den här självstudien består av följande uppgifter:

  • Installera adutil
  • Ansluta Linux-datorn till din Active Directory-domän
  • Skapa en Active Directory-användare för SQL Server och ange tjänstens huvudnamn (SPN) med adutil
  • Skapa SQL Server-tjänstens nyckelflik (nyckeltabell)
  • Konfigurera SQL Server för att använda nyckelfliksfilen
  • Skapa Active Directory-baserade SQL Server-inloggningar med hjälp av Transact-SQL
  • Ansluta till SQL Server med Hjälp av Active Directory-autentisering

Förutsättningar

Innan du konfigurerar Active Directory-autentisering behöver du:

  • En Windows-domänkontrollant som kör Active Directory Domain Services i nätverket.
  • Adutil-verktyget installerat på en domänansluten värddator.

Förberedelse av domändator

Kontrollera att en vidarebefordringspost för värd (A) har lagts till i Active Directory för IP-adressen till Linux-värden. I den här självstudien är IP-adressen för värddatorn sql110.0.0.10. Vi lägger till posten vidarebefordrande värd i Active Directory i följande exempel. Inmatningen ser till att när användare ansluter till sql1.contoso.com, så når de rätt värd.

Skärmbild av att lägga till en värdpost.

I den här självstudien använder du en miljö i Azure med tre virtuella datorer. En virtuell dator (VM) är en Windows Server-dator med namnet adVM.contoso.com, som körs som domänkontrollant (DC) med domännamnet contoso.com. Den andra virtuella datorn är en klientdator som kör Windows 10 med namnet winbox, som har SQL Server Management Studio (SSMS) installerat. Den tredje datorn är en Ubuntu 18.04 LTS-dator med namnet sql1, som är värd för SQL Server.

Ansluta Linux-värddatorn till din Active Directory-domän

Information om hur du ansluter sql1 till Active Directory-domänen finns i Ansluta SQL Server på en Linux-värd till en Active Directory-domän.

Installera adutil

Om du vill installera adutil följer du stegen som beskrivs i artikeln Introduktion till adutil – Active Directory-verktyget på värddatorn som du lade till i domänen i föregående steg.

Använd adutil för att skapa en Active Directory-användare för SQL Server och ange tjänstens huvudnamn (SPN)

  1. Hämta eller förnya Kerberos TGT (biljettbeviljande biljett) med hjälp av kommandot kinit. Du måste använda ett privilegierat konto för kinit kommandot och värddatorn bör redan vara en del av domänen. Kontot behöver behörighet att ansluta till domänen och skapa konton och SPN:er i domänen.

    I det här exempelskriptet skapas redan en privilegierad användare med namnet privilegeduser@CONTOSO.COM på domänkontrollanten.

    kinit privilegeduser@CONTOSO.COM
    
  2. Använd adutil och skapa den nya användaren som ska användas som det privilegierade Active Directory-kontot av SQL Server.

    Lösenord kan anges på tre olika sätt. Om du använder mer än en av dessa metoder har de företräde i följande ordning:

    • Använda lösenordsflaggan: --password <password>
    • I en miljövariabel: ADUTIL_ACCOUNT_PWD
    • Interaktiva indata i en kommandotolk

    Miljövariabeln eller interaktiva indatametoder är säkrare än lösenordsflaggan.

    adutil user create --name sqluser --distname CN=sqluser,CN=Users,DC=CONTOSO,DC=COM --password '<password>'
    

    Du kan ange namnet på kontot med det unika namnet (--distname) som visat tidigare, eller använda organisationsenhetens (OU) namn. Organisationsenhetens namn (--ou) har företräde framför unikt namn om du anger båda. Du kan köra följande kommando för mer information:

    adutil user create --help
    

    Försiktighet

    Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

  3. Registrera SPN för den huvudanvändare som skapades tidigare. Du måste använda datorns fullständigt kvalificerade domännamn (FQDN). I den här självstudien använder vi SQL Server-standardporten 1433. Portnumret kan vara annorlunda.

    adutil spn addauto -n sqluser -s MSSQLSvc -H sql1.contoso.com -p 1433
    
    • addauto skapar SPN:erna automatiskt, så länge det finns tillräckliga privilegier för kinit kontot.
    • -n: Namnet på kontot för att tilldela SPN:erna.
    • -s: Tjänstnamnet som ska användas för att generera SPN. I det här fallet är det för SQL Server-tjänsten, vilket är anledningen till att tjänstnamnet är MSSQLSvc.
    • -H: Värdnamnet som ska användas för att generera SPN. Om det inte anges används datorns FQDN. I det här fallet är sql1 värdnamnet och FQDN är sql1.contoso.com.
    • -p: Porten som ska användas för att generera SPN. Om det inte anges genereras SPN utan port. SQL-anslutningar fungerar bara i det här fallet när SQL Server-instansen lyssnar på standardporten 1433.

Skapa nyckelfliksfilen för SQL Server-tjänsten med mssql-conf

Du kan installera adutil och integrera den med mssql-conf för att skapa och konfigurera nyckelfliken med mssql-conf direkt. Den här metoden rekommenderas för att skapa en nyckelfliksfil för SQL Server-tjänsten. Annars kan du skapa nyckelfliksfilen för SQL Server-tjänsten manuellt.

Förutsättningar

  1. Kontrollera att användaren mssql äger /var/opt/mssql/mssql.conf filen och inte root. Annars måste du köra mssql-conf-kommandona med .sudo

  2. På en domänkontrollant i Active Directory-inställningarna för network.privilegedadaccount kontot (i de här exemplen sqluser@CONTOSO.COM) aktiverar du följande alternativ under fliken Konto i avsnittet Kontoalternativ :

    • Det här kontot stöder Kerberos AES 128-bitarskryptering
    • Det här kontot stöder Kerberos AES 256-bitarskryptering

Skapa nyckelfliksfilen

När du har skapat användaren och SPN:erna kan du skapa nyckelfliken med hjälp av följande steg.

  1. Växla till oracle användaren:

    su mssql
    
  2. Logga in som Active Directory-användare med kommandot kinit :

    kinit privilegeduser@CONTOSO.COM
    
  3. Skapa nyckelfliksfilen:

    /opt/mssql/bin/mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser
    

    När du uppmanas att starta om SQL Server-tjänsten för att implementera den nya Active Directory-konfigurationen kan du göra det i nästa avsnitt.

  4. Bekräfta att nyckelfliken har skapats med rätt poster:

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

    Du bör se utdata som liknar det här exemplet:

    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)
    

    /var/opt/mssql/mssql.conf Om filen inte ägs av mssqlmåste du konfigurera mssql-conf för att ange network.kerberoskeytabfile värdena och network.privilegedadaccount enligt föregående steg. Ange lösenordet när du uppmanas att göra det.

    /opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
    /opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluser
    
  5. Verifiera konfigurationen för att säkerställa att Active Directory-autentisering fungerar utan problem.

    /opt/mssql/bin/mssql-conf validate-ad-config /var/opt/mssql/secrets/mssql.keytab
    

    Du bör se utdata som liknar följande exempel:

    Detected Configuration:
    Default Realm: CONTOSO.COM
    Keytab: /var/opt/mssql/secrets/mssql.keytab
    Reverse DNS Result: sql1.contoso.com
    SQL Server Port: 1433
    Detected SPNs (SPN, KVNO):
    (MSSQLSvc/sql1.CONTOSO.COM:1433, 4)
    (MSSQLSvc/sql1.CONTOSO.COM, 4)
    (MSSQLSvc/sql1:1433, 4)
    (MSSQLSvc/sql1, 4)
    Privileged Account (Name, KVNO):
    (sqluser, 4)
    

Skapa nyckelfliksfilen för SQL Server-tjänsten manuellt

Om du har installerat adutil och integrerat den med mssql-conf kan du gå vidare till Skapa nyckelfliksfilen för SQL Server-tjänsten med mssql-conf.

  1. Skapa keytab-filen som innehåller poster för varje av de fyra SPN som skapades tidigare och en för användaren.

    adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H sql1.contoso.com --password '<password>' -s MSSQLSvc
    

    Försiktighet

    Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

    De möjliga kommandoradsalternativen är:

    • -k: Sökvägen där mssql.keytab filen skapas. I föregående exempel bör katalogen /var/opt/mssql/secrets/ redan finnas på värdmaskinen.
    • -p: Porten som ska användas för att generera SPN. Om det inte anges genereras SPN utan port.
    • -H: Värdnamnet som ska användas för att generera SPN. Om det inte anges används datorns FQDN. I det här fallet är sql1 värdnamnet och FQDN är sql1.contoso.com.
    • -s: Tjänstnamnet som ska användas för att generera SPN. I det här exemplet är MSSQLSvcSQL Server-tjänstnamnet .
    • --password: Lösenordet för det privilegierade Active Directory-användarkontot som skapades tidigare.
    • -e eller --enctype: Krypteringstyper för nyckelfliksposten. Använd en kommaavgränsad lista med värden. Om det inte anges visas en interaktiv fråga.

    Du kan välja mer än en krypteringstyp, så länge som din värd och domän stöder krypteringstypen. I det här exemplet kan du välja aes256-cts-hmac-sha1-96 och aes128-cts-hmac-sha1-96. Du bör dock undvika arcfour-hmac i en produktionsmiljö eftersom den har svag kryptering.

    Om du vill välja krypteringstyp utan att fråga kan du ange val av krypteringstyp med argumentet -e i föregående kommando. Om du vill ha mer hjälp om alternativen adutil keytab kör du det här kommandot:

    adutil keytab createauto --help
    
  2. Lägg till en post i nyckelfliken för huvudnamnet och lösenordet som SQL Server använder för att ansluta till Active Directory:

    adutil keytab create -k /var/opt/mssql/secrets/mssql.keytab -p sqluser --password '<password>'
    

    Försiktighet

    Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

    • -k: Sökväg där du vill skapa mssql.keytab filen.
    • -p: Huvudnamn som ska läggas till i keytab.

    Skriver adutil keytab [ create | autocreate ] inte över de tidigare filerna. De läggs bara till i filen om de redan finns.

  3. Kontrollera att användaren mssql äger den skapade nyckelfliken mssql och att endast användaren har läs- och skrivåtkomst till filen. Du kan köra kommandona chown och chmod på följande sätt:

    chown mssql /var/opt/mssql/secrets/mssql.keytab
    chmod 440 /var/opt/mssql/secrets/mssql.keytab
    

Konfigurera SQL Server för att använda nyckelfliken

Kör kommandona nedan för att konfigurera SQL Server att använda den nyckelflik som skapades i föregående steg och ange det privilegierade Active Directory-kontot som användaren skapade tidigare. I vårt exempel är sqluseranvändarnamnet .

/opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
/opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluser

Starta om SQL Server

Kör följande kommando för att starta om SQL Server-tjänsten:

sudo systemctl restart mssql-server

Skapa Active Directory-baserade SQL Server-inloggningar i Transact-SQL

Anslut till SQL Server-instansen och kör följande kommandon för att skapa inloggningen och bekräfta att den finns.

CREATE LOGIN [contoso\privilegeduser]
    FROM WINDOWS;

SELECT name
FROM sys.server_principals;

Ansluta till SQL Server med Hjälp av Active Directory-autentisering

Om du vill ansluta med SSMS loggar du in på SQL Server-instansen med dina Windows-autentiseringsuppgifter.

Du kan också använda ett verktyg som sqlcmd-verktyget för att ansluta till SQL Server-instansen med Windows-autentisering.

sqlcmd -E -S 'sql1.contoso.com'