Delen via


Zelfstudie: Adutil gebruiken om Active Directory-verificatie te configureren met SQL Server in Linux

Van toepassing op:SQL Server - Linux

In deze zelfstudie wordt uitgelegd hoe u Windows Active Directory-verificatie configureert voor SQL Server in Linux met adutil. Zie zelfstudie: Active Directory-verificatie gebruiken met SQL Server op Linux voor een andere methode voor het configureren van Active Directory-verificatie met behulp van ktpass.

Deze zelfstudie bestaat uit de volgende taken:

  • adutil- installeren
  • Linux-machine toevoegen aan uw Active Directory-domein
  • Een Active Directory-gebruiker maken voor SQL Server en de SPN (Service Principal Name) instellen met behulp van adutil
  • Het keytabbestand van de SQL Server-service (sleuteltabel) maken
  • SQL Server configureren voor het gebruik van het keytab-bestand
  • Op Active Directory gebaseerde SQL Server-aanmeldingen maken met behulp van Transact-SQL
  • Verbinding maken met SQL Server met behulp van Active Directory-verificatie

Vereiste voorwaarden

Voordat u Active Directory-verificatie configureert, hebt u het volgende nodig:

  • Een Windows-domeincontroller met Active Directory Domain Services in uw netwerk.
  • Het hulpprogramma adutil dat is geïnstalleerd op een hostcomputer die lid is van een domein.

Voorbereiding van domeincomputers

Zorg ervoor dat er een doorstuurhostvermelding (A) is toegevoegd in Active Directory voor het IP-adres van de Linux-host. In deze zelfstudie is het IP-adres van de hostmachine sql110.0.0.10. In het volgende voorbeeld voegen we de doorstuurhostvermelding toe in Active Directory. De vermelding zorgt ervoor dat wanneer gebruikers verbinding maken met sql1.contoso.com, deze de juiste host bereikt.

Schermopname van hostrecord toevoegen.

Voor deze zelfstudie gebruikt u een omgeving in Azure met drie virtuele machines. Eén virtuele machine (VM) is een Windows Server-computer met de naam adVM.contoso.com, die wordt uitgevoerd als een domeincontroller (DC) met de domeinnaam contoso.com. De tweede VM is een clientcomputer met Windows 10 met de naam winbox, waarop SQL Server Management Studio (SSMS) is geïnstalleerd. De derde computer is een Ubuntu 18.04 LTS-computer met de naam sql1, die als host fungeert voor SQL Server.

De Linux-hostcomputer toevoegen aan uw Active Directory-domein

Als u sql1 aan het Active Directory-domein wilt toevoegen, raadpleeg dan SQL Server op een Linux-host toevoegen aan een Active Directory-domein.

Adutil installeren

Als u adutil wilt installeren, volgt u de stappen in het artikel Inleiding tot adutil - Active Directory-hulpprogramma op de hostcomputer die u in de vorige stap aan het domein hebt toegevoegd.

Adutil gebruiken om een Active Directory-gebruiker voor SQL Server te maken en de SPN (Service Principal Name) in te stellen

  1. Verkrijg of vernieuw de Kerberos TGT (ticket-granting ticket) door de opdracht kinit te gebruiken. U moet een bevoegd account voor de kinit opdracht gebruiken en de hostcomputer moet al deel uitmaken van het domein. Het account heeft toestemming nodig om verbinding te maken met het domein en accounts en SPN's in het domein te maken.

    In dit voorbeeldscript wordt al een bevoegde gebruiker met de naam privilegeduser@CONTOSO.COM gemaakt op de domeincontroller.

    kinit privilegeduser@CONTOSO.COM
    
  2. Maak met behulp van adutil de nieuwe gebruiker aan om deze als bevoegd Active Directory-account voor SQL Server te gebruiken.

    Wachtwoorden kunnen op drie verschillende manieren worden opgegeven. Als u meer dan een van deze methoden gebruikt, hebben ze voorrang in de volgende volgorde:

    • Gebruik de wachtwoordvlag: --password <password>
    • In een omgevingsvariabele: ADUTIL_ACCOUNT_PWD
    • Interactieve invoer bij een opdrachtregelprompt

    De omgevingsvariabele of interactieve invoermethoden zijn veiliger dan de wachtwoordvlag.

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

    U kunt de naam van het account opgeven met behulp van de onderscheidende naam (--distname) zoals eerder weergegeven, of u kunt de naam van de Organisatorische Eenheid (OE) gebruiken. De OE-naam (--ou) heeft voorrang op de onderscheidende naam in het geval dat u beide opgeeft. U kunt de volgende opdracht uitvoeren voor meer informatie:

    adutil user create --help
    

    Waarschuwing

    Uw wachtwoord moet voldoen aan het standaard SQL Server-wachtwoordbeleid . Standaard moet het wachtwoord ten minste acht tekens lang zijn en tekens bevatten uit drie van de volgende vier sets: hoofdletters, kleine letters, basis-10 cijfers en symbolen. Wachtwoorden mogen maximaal 128 tekens lang zijn. Gebruik wachtwoorden die zo lang en complex mogelijk zijn.

  3. Registreer SPN's voor de principal die u eerder heeft gemaakt. U moet de FQDN (Fully Qualified Domain Name) van de computer gebruiken. In deze zelfstudie gebruiken we de standaardpoort van SQL Server, 1433. Uw poortnummer kan afwijken.

    adutil spn addauto -n sqluser -s MSSQLSvc -H sql1.contoso.com -p 1433
    
    • addauto maakt automatisch de SPN's, zolang er voldoende bevoegdheden voor het kinit account zijn.
    • -n: De naam van het account waaraan de SPN's worden toegewezen.
    • -s: de servicenaam die moet worden gebruikt voor het genereren van SPN's. In dit geval is dit voor de SQL Server-service. Daarom is MSSQLSvcde servicenaam.
    • -H: de hostnaam die moet worden gebruikt voor het genereren van SPN's. Als dit niet is opgegeven, wordt de FQDN van de lokale host gebruikt. In dit geval is sql1 de hostnaam en de FQDN.sql1.contoso.com
    • -p: de poort die moet worden gebruikt voor het genereren van SPN's. Als dit niet is opgegeven, worden SPN's zonder poort gegenereerd. SQL-verbindingen werken alleen in dit geval wanneer het SQL Server-exemplaar luistert naar de standaardpoort 1433.

Het keytabbestand van de SQL Server-service maken met mssql-conf

U kunt adutil installeren en integreren met mssql-conf, om de keytab rechtstreeks te maken en configureren met behulp van mssql-conf . Deze methode heeft de voorkeur voor het maken van een keytabbestand van de SQL Server-service. Anders kunt u het keytabbestand van de SQL Server-service handmatig maken.

Vereiste voorwaarden

  1. Zorg ervoor dat de mssql gebruiker eigenaar is van het /var/opt/mssql/mssql.conf bestand en niet root. Anders moet u de mssql-conf-opdrachten uitvoeren met behulp van sudo.

  2. Schakel op een domeincontroller in de Active Directory-instellingen voor het network.privilegedadaccount account (in deze voorbeelden sqluser@CONTOSO.COM) de volgende opties in op het tabblad Account , in de sectie Accountopties :

    • Dit account ondersteunt Kerberos AES 128-bits versleuteling
    • Dit account ondersteunt Kerberos AES 256-bits versleuteling

Het keytab-bestand maken

Zodra u de gebruiker en SPN's hebt gemaakt, kunt u de keytab maken met behulp van de volgende stappen.

  1. Overschakelen naar de oracle gebruiker:

    su mssql
    
  2. Meld u aan als de Active Directory-gebruiker met behulp van de kinit opdracht:

    kinit privilegeduser@CONTOSO.COM
    
  3. Maak het keytab-bestand:

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

    Wanneer u wordt gevraagd de SQL Server-service opnieuw te starten om de nieuwe Active Directory-configuratie te gebruiken, kunt u dit doen in de volgende sectie.

  4. Controleer of de keytab is gemaakt met de juiste vermeldingen:

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

    De uitvoer moet er ongeveer uitzien als in dit voorbeeld:

    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)
    

    Als het /var/opt/mssql/mssql.conf bestand niet in het bezit van mssql is, moet u het mssql-conf configureren om de network.kerberoskeytabfile en network.privilegedadaccount waarden in te stellen volgens de vorige stappen. Typ het wachtwoord wanneer u hierom wordt gevraagd.

    /opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
    /opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluser
    
  5. Valideer uw configuratie om ervoor te zorgen dat Active Directory-verificatie zonder problemen werkt.

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

    U zou uitvoer moeten zien die lijkt op het volgende voorbeeld:

    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)
    

Het keytabbestand van de SQL Server-service handmatig maken

Als u adutil hebt geïnstalleerd en geïntegreerd met mssql-conf, kunt u doorgaan naar het keytabbestand van de SQL Server-service maken met behulp van mssql-conf.

  1. Maak het keytab-bestand met vermeldingen voor elk van de vier SPN's die u eerder hebt gemaakt en één voor de gebruiker.

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

    Waarschuwing

    Uw wachtwoord moet voldoen aan het standaard SQL Server-wachtwoordbeleid . Standaard moet het wachtwoord ten minste acht tekens lang zijn en tekens bevatten uit drie van de volgende vier sets: hoofdletters, kleine letters, basis-10 cijfers en symbolen. Wachtwoorden mogen maximaal 128 tekens lang zijn. Gebruik wachtwoorden die zo lang en complex mogelijk zijn.

    De mogelijke opdrachtregelopties zijn:

    • -k: het pad waar het mssql.keytab bestand is gemaakt. In het vorige voorbeeld moet de map /var/opt/mssql/secrets/ al aanwezig zijn op de host.
    • -p: de poort die moet worden gebruikt voor het genereren van SPN's. Als dit niet is opgegeven, worden SPN's zonder poort gegenereerd.
    • -H: de hostnaam die moet worden gebruikt voor het genereren van SPN's. Als dit niet is opgegeven, wordt de FQDN van de lokale host gebruikt. In dit geval is sql1 de hostnaam en de FQDN.sql1.contoso.com
    • -s: de servicenaam die moet worden gebruikt voor het genereren van SPN's. In dit voorbeeld is MSSQLSvcde naam van de SQL Server-service.
    • --password: het wachtwoord van het bevoegde Active Directory-gebruikersaccount dat eerder is gemaakt.
    • -e of --enctype: versleutelingstypen voor de keytabvermelding. Gebruik een door komma's gescheiden lijst met waarden. Als dit niet is opgegeven, wordt er een interactieve prompt weergegeven.

    U kunt meer dan één versleutelingstype kiezen, zolang uw host en domein het versleutelingstype ondersteunen. In dit voorbeeld kunt u kiezen aes256-cts-hmac-sha1-96 en aes128-cts-hmac-sha1-96. U moet echter vermijden arcfour-hmac in een productieomgeving omdat deze zwakke versleuteling heeft.

    Als u het versleutelingstype wilt kiezen zonder te vragen, kunt u uw keuze voor het versleutelingstype opgeven met behulp van het -e argument in de vorige opdracht. Voer deze opdracht uit voor meer hulp bij de adutil keytab opties:

    adutil keytab createauto --help
    
  2. Voeg een vermelding toe in de keytab voor de principal-naam en het wachtwoord die SQL Server gebruikt om verbinding te maken met Active Directory:

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

    Waarschuwing

    Uw wachtwoord moet voldoen aan het standaard SQL Server-wachtwoordbeleid . Standaard moet het wachtwoord ten minste acht tekens lang zijn en tekens bevatten uit drie van de volgende vier sets: hoofdletters, kleine letters, basis-10 cijfers en symbolen. Wachtwoorden mogen maximaal 128 tekens lang zijn. Gebruik wachtwoorden die zo lang en complex mogelijk zijn.

    • -k: Pad waar u het mssql.keytab bestand wilt maken.
    • -p: Principal die moet worden toegevoegd aan de keytab.

    adutil keytab [ create | autocreate ] overschrijft de vorige bestanden niet, maar voegt gegevens toe aan het bestand als het al aanwezig is.

  3. Zorg ervoor dat de mssql gebruiker eigenaar is van de gemaakte keytab en dat alleen de mssql gebruiker lees-/schrijftoegang tot het bestand heeft. U kunt de chown en chmod opdrachten als volgt uitvoeren:

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

SQL Server configureren voor het gebruik van de keytab

Voer de onderstaande opdrachten uit om SQL Server te configureren voor het gebruik van de keytab die u in de vorige stap hebt gemaakt en stel het bevoegde Active Directory-account in als de gebruiker die u eerder hebt gemaakt. In ons voorbeeld is sqluserde gebruikersnaam .

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

SQL Server opnieuw starten

Voer de volgende opdracht uit om de SQL Server-service opnieuw op te starten:

sudo systemctl restart mssql-server

Op Active Directory gebaseerde SQL Server-aanmeldingen maken in Transact-SQL

Maak verbinding met het SQL Server-exemplaar en voer de volgende opdrachten uit om de aanmelding te maken en controleer of deze bestaat.

CREATE LOGIN [contoso\privilegeduser]
    FROM WINDOWS;

SELECT name
FROM sys.server_principals;

Verbinding maken met SQL Server met behulp van Active Directory-verificatie

Als u verbinding wilt maken met SSMS, logt u in bij het SQL Server-exemplaar met uw Windows-referenties.

U kunt ook een hulpprogramma zoals het sqlcmd-hulpprogramma gebruiken om verbinding te maken met het SQL Server-exemplaar met behulp van Windows-verificatie.

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