Tutorial: Verwenden der Active Directory-Authentifizierung für SQL Server für LinuxTutorial: Use Active Directory authentication with SQL Server on Linux

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) : LinuxAnwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) - Linux

In diesem Tutorial wird erläutert, wie Sie SQL ServerSQL Server unter Linux konfigurieren, um die Active Directory-Authentifizierung (AD) zu unterstützen, die auch als integrierte Authentifizierung bezeichnet wird.This tutorial explains how to configure SQL ServerSQL Server on Linux to support Active Directory (AD) authentication, also known as integrated authentication. Eine Übersicht dazu finden Sie unter Active Directory-Authentifizierung für SQL Server für Linux.For an overview, see Active Directory authentication for SQL Server on Linux.

Dieses Tutorial umfasst die folgenden Aufgaben:This tutorial consists of the following tasks:

  • Verknüpfen des SQL ServerSQL Server-Hosts mit der AD-DomäneJoin SQL ServerSQL Server host to AD domain
  • Erstellen eines AD-Benutzers für SQL ServerSQL Server und Festlegen eines SPNCreate AD user for SQL ServerSQL Server and set SPN
  • Konfigurieren der KEYTAB-Datei für den SQL ServerSQL Server-DienstConfigure SQL ServerSQL Server service keytab
  • Sichern der KEYTAB-DateiSecure the keytab file
  • Konfigurieren von SQL Server für die Verwendung der KEYTAB-Datei für die Kerberos-AuthentifizierungConfigure SQL Server to use the keytab file for Kerberos authentication
  • Erstellen von AD-basierten Anmeldeinformationen in Transact-SQLCreate AD-based logins in Transact-SQL
  • Herstellen einer Verbindung mit SQL ServerSQL Server über die AD-AuthentifizierungConnect to SQL ServerSQL Server using AD Authentication

VoraussetzungenPrerequisites

Bevor Sie die AD-Authentifizierung konfigurieren können, müssen Sie Folgendes tun:Before you configure AD Authentication, you need to:

Verknüpfen des SQL ServerSQL Server-Hosts mit der AD-DomäneJoin SQL ServerSQL Server host to AD domain

Verknüpfen Sie Ihren Linux-Host für SQL Server mit einem Active Directory-Domänencontroller.Join your SQL Server Linux host with an Active Directory domain controller. Informationen dazu finden Sie unter Verknüpfen von eines Linux-Hosts für SQL Server mit einer Active Directory-Domäne.For information on how to join an active directory domain, see Join SQL Server on a Linux host to an Active Directory domain.

Erstellen eines AD-Benutzers (oder -MSA) für SQL ServerSQL Server und Festlegen eines SPNCreate AD user (or MSA) for SQL ServerSQL Server and set SPN

Hinweis

Verwenden Sie für die folgenden Schritte Ihren vollqualifizierten Domänennamen.The following steps use your fully qualified domain name. Wenn Sie in Azure arbeiten, müssen Sie einen erstellen ,bevor Sie fortfahren können.If you are on Azure, you must create one before you proceed.

  1. Führen Sie auf Ihrem Domänencontroller den PowerShell-Befehl New-ADUser aus, um einen neuen AD-Benutzer mit einem Kennwort zu erstellen, das niemals abläuft.On your domain controller, run the New-ADUser PowerShell command to create a new AD user with a password that never expires. Im folgenden Beispiel hat das Konto den Namen mssql. Sie können aber jeden beliebigen Namen auswählen.The following example names the account mssql, but the account name can be anything you like. Sie werden aufgefordert, ein neues Kennwort für das Konto einzugeben.You'll be prompted to enter a new password for the account.

    Import-Module ActiveDirectory
    
    New-ADUser mssql -AccountPassword (Read-Host -AsSecureString "Enter Password") -PasswordNeverExpires $true -Enabled $true
    

    Hinweis

    Es hat sich als Sicherheitsmethode bewährt, ein dediziertes AD-Konto für SQL Server zu verwenden, damit die Anmeldeinformationen für SQL Server nicht für andere Dienste freigegeben werden, die dasselbe Konto verwenden.It is a security best practice to have a dedicated AD account for SQL Server, so that SQL Server's credentials aren't shared with other services using the same account. Sie können jedoch als Alternative auch ein vorhandenes AD-Konto wiederverwenden, wenn Sie das Kennwort für das Konto kennen. Sie benötigen dieses, um im nächsten Schritt eine KEYTAB-Datei zu erstellen.However, you can optionally reuse an existing AD account if you know the account's password (which is required to generate a keytab file in the next step). Außerdem sollte das Konto 128-Bit- und 256-Bit-Kerberos-AES-Verschlüsselung (Attribut msDS-SupportedEncryptionTypes) für das Benutzerkonto unterstützen können.Additionally, the account should be enabled to support 128-bit and 256-bit Kerberos AES encryption (msDS-SupportedEncryptionTypes attribute) on the user account.

  2. Legen Sie den Dienstprinzipalnamen (Service Principle Name, SPN) für dieses Konto mithilfe des Tools setspn.exe fest.Set the ServicePrincipalName (SPN) for this account using the setspn.exe tool. Der SPN muss genau wie im folgenden Beispiel angegeben formatiert werden.The SPN must be formatted exactly as specified in the following example. Sie können den vollqualifizierten Domänennamen des Hostcomputers für SQL ServerSQL Server ermitteln, indem Sie hostname --all-fqdns auf de Host SQL ServerSQL Server ausführen.You can find the fully qualified domain name of the SQL ServerSQL Server host machine by running hostname --all-fqdns on the SQL ServerSQL Server host. In der Regel wird der TCP-Port 1433 verwendet, es sei denn, Sie haben SQL ServerSQL Server so konfiguriert, dass eine andere Portnummer verwendet wird.The TCP port should be 1433 unless you have configured SQL ServerSQL Server to use a different port number.

    setspn -A MSSQLSvc/**<fully qualified domain name of host machine>**:**<tcp port>** mssql
    setspn -A MSSQLSvc/**<netbios name of the host machine>**:**<tcp port>** mssql
    

    Hinweis

    Wenn Sie die Fehlermeldung Insufficient access rights erhalten, prüfen Sie zusammen mit Ihrem Domänenadministrator, ob Sie über die nötigen Berechtigungen verfügen, um einen SPN für dieses Konto festzulegen.If you receive an error, Insufficient access rights, check with your domain administrator that you have sufficient permissions to set an SPN on this account. Für das Konto, das zum Registrieren des SPN verwendet wird, benötigen Sie die Schreibberechtigungen für servicePrincipalName.The account that is used to register an SPN will need the Write servicePrincipalName permissions. Weitere Informationen finden Sie unter Registrieren eines Dienstprinzipalnamens für Kerberos-Verbindungen.For more information, see Register a Service Principal Name for Kerberos Connections.

    Wenn Sie den TCP-Port später ändern, müssen Sie den Befehl setspn noch einmal mit der neuen Portnummer ausführen.If you change the TCP port in the future, you must run the setspn command again with the new port number. Außerdem müssen Sie den neuen SPN zur KEYTAB-Datei des SQL Server-Diensts hinzufügen, indem Sie die im nächsten Abschnitt beschriebenen Schritte ausführen.You also need to add the new SPN to the SQL Server service keytab by following the steps in the next section.

Weitere Informationen finden Sie unter Registrieren eines Dienstprinzipalnamens für Kerberos-Verbindungen.For more information, see Register a Service Principal Name for Kerberos Connections.

Konfigurieren der KEYTAB-Datei für den SQL ServerSQL Server-DienstConfigure SQL ServerSQL Server service keytab

Zum Konfigurieren der AD-Authentifizierung für SQL Server unter Linux benötigen Sie ein AD-Konto (MSA oder AD-Benutzerkonto) sowie den im vorherigen Abschnitt erstellten SPN.Configuring AD authentication for SQL Server on Linux requires an AD account (MSA or an AD user account) and the SPN created in the the previous section.

Wichtig

Wird das Kennwort für das AD-Konto oder für das Konto, dem die SPN zugewiesen sind, geändert, müssen Sie die KEYTAB-Datei mit dem neuen Kennwort und der Schlüsselversionsnummer (Key Version Number, KVNO) aktualisieren.If the password for the AD account is changed or the password for the account that the SPNs are assigned to is changed, you must update the keytab with the new password and Key Version Number (KVNO). Einige Dienste rotieren die Kennwörter möglicherweise auch automatisch.Some services might also rotate the passwords automatically. Überprüfen Sie sämtliche Richtlinien für die Kennwortrotation, die für die betreffenden Konten gelten, und passen Sie geplante Wartungsaktivitäten an diese an, um unerwartete Ausfallzeiten zu vermeiden.Review any password rotation policies for the accounts in question and align them with scheduled maintenance activities to avoid unexpected downtime.

KEYTAB-Einträge für den SPNSPN keytab entries

  1. Überprüfen Sie die KVNO des AD-Kontos, das Sie im vorherigen Schritt erstellt haben.Check the Key Version Number (KVNO) for the AD account created in the previous step. Normalerweise lautet diese 2, aber es kann auch ein anderer Integerwert sein, wenn Sie das Kennwort des Kontos mehrmals geändert haben.Usually it is 2, but it could be another integer if you changed the account's password multiple times. Führen Sie auf dem Hostcomputer für SQL Server die folgenden Befehle aus:On the SQL Server host machine, run the following commands:

    • In den folgenden Beispielen wird davon ausgegangen, dass sich user in der Domäne @CONTOSO.COM befindet.The below examples assume the user is in the @CONTOSO.COM domain. Ändern Sie den Benutzer- und Domänennamen in Ihren Benutzer- und Domänennamen.Modify the user and domain name to your user and domain name.
    kinit user@CONTOSO.COM
    kvno user@CONTOSO.COM
    kvno MSSQLSvc/**<fully qualified domain name of host machine>**:**<tcp port>**@CONTOSO.COM
    

    Hinweis

    Es kann einige Minuten dauern, bis die SPNs für Ihre Domäne übernommen werden, insbesondere, wenn die Domäne groß ist.SPNs can take several minutes to propagate through your domain, especially if the domain is large. Wenn Sie die Fehlermeldung kvno: Server not found in Kerberos database while getting credentials for MSSQLSvc/**<fully qualified domain name of host machine>**:**<tcp port>**@CONTOSO.COM erhalten, warten Sie einige Minuten, und versuchen Sie es noch mal.If you receive the error, kvno: Server not found in Kerberos database while getting credentials for MSSQLSvc/**<fully qualified domain name of host machine>**:**<tcp port>**@CONTOSO.COM, please wait a few minutes and try again.
    Die obigen Befehle funktionieren nur, wenn der Server, wie im vorherigen Abschnitt beschrieben, einer AD-Domäne hinzugefügt wurde.The above commands will only work if the server has been joined to an AD domain, which was covered in the previous section.

  2. Fügen Sie über ktpass für jeden SPN KEYTAB-Einträge hinzu, indem Sie in der Eingabeaufforderung eines Windows-Computers die folgenden Befehle eingeben:Using ktpass, add keytab entries for each SPN using the following commands on a Windows machine Command Prompt:

    • <DomainName>\<UserName>: Ein MSA oder AD-Benutzerkonto.<DomainName>\<UserName> - Could be an MSA or AD user account
    • @CONTOSO.COM: Verwenden Sie Ihren Domänennamen.@CONTOSO.COM - Use your domain name
    • /kvno <#>: Ersetzen Sie <#> durch die KVNO, die Sie in einem vorherigen Schritt erhalten haben./kvno <#> - Replace <#> with the KVNO obtained in an earlier step
    • <StrongPassword>: Verwenden Sie ein sicheres Kennwort.<StrongPassword> - Use a strong password
    ktpass /princ MSSQLSvc/<fully qualified domain name of host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser <DomainName>\<UserName> /out mssql.keytab -setpass -setupn /kvno <#> /pass <StrongPassword>
    
    ktpass /princ MSSQLSvc/<fully qualified domain name of host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <StrongPassword>
    
    ktpass /princ MSSQLSvc/<netbios name of the host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <StrongPassword>
    
    ktpass /princ MSSQLSvc/<netbios name of the host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <StrongPassword>
    
    ktpass /princ <UserName>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <StrongPassword>
    
    ktpass /princ <UserName>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <StrongPassword>
    

    Hinweis

    Mit den obigen Befehlen werden für die AD-Authentifizierung sowohl AES- als auch RC4-Verschlüsselungsmethoden zugelassen.The commands above allow both AES and RC4 encryption ciphers for AD authentication. RC4 ist eine ältere Verschlüsselungsmethode. Ist ein höherer Sicherheitsgrad erforderlich, können Sie die KEYTAB-Einträge auch nur mithilfe der AES-Verschlüsselung erstellen.RC4 is an older encryption cipher and if a higher degree of security is required, you can choose to create the keytab entries with only the AES encryption cipher. Die letzten zwei UserName-Einträge müssen kleingeschrieben werden, da sonst die Authentifizierung der Berechtigungen fehlschlagen kann.The last two UserName entries must be in lowercase, or the permssion authentication might fail.

  3. Nach dem Ausführen des obigen Befehls sollte eine KEYTAB-Datei namens „mssql.keytab“ vorhanden sein.After executing the above command, you should have a keytab file named mssql.keytab. Kopieren Sie die Datei auf den SQL Server-Computer in den Ordner /var/opt/mssql/secrets.Copy the file over to the SQL Server machine under the folder /var/opt/mssql/secrets.

  4. Schützen Sie die KEYTAB-Datei.Secure the keytab file.

    Jeder Benutzer mit Zugriff auf diese KEYTAB-Datei kann die Identität von SQL Server in der Domäne annehmen. Stellen Sie daher sicher, dass Sie den Zugriff auf die Datei so einschränken, dass nur das MSSQL-Konto über Lesezugriff verfügt:Anyone with access to this keytab file can impersonate SQL Server on the domain, so make sure you restrict access to the file such that only the mssql account has read access:

    sudo chown mssql:mssql /var/opt/mssql/secrets/mssql.keytab
    sudo chmod 400 /var/opt/mssql/secrets/mssql.keytab
    
  5. Legen Sie mithilfe des Tools mssql-conf die folgende Konfigurationsoption fest, um das Konto anzugeben, das für den Zugriff auf die KEYTAB-Datei verwendet werden soll.The following configuration option needs to be set with the mssql-conf tool to specify the account to be used while accessing the keytab file.

    sudo mssql-conf set network.privilegedadaccount <username>
    

    Hinweis

    Geben Sie nur den Benutzernamen an und nicht etwa „Domänenname\Benutzername“ oder username@domain.Only include the username and not domainname\username or username@domain. SQL Server fügt den Domänennamen nach Bedarf intern hinzu, wenn dieser Benutzername verwendet wird.SQL Server internally adds domain name as required along with this username when used.

  6. Gehen Sie wie im Folgenden beschrieben vor, um die SQL Server-Instanz so zu konfigurieren, dass die KEYTAB-Datei für die Kerberos-Authentifizierung verwendet wird.Use the following steps to configure SQL Server to start using the keytab file for Kerberos authentication.

    sudo mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
    sudo systemctl restart mssql-server
    

    Tipp

    Optional können Sie die UDP-Verbindungen mit dem Domänencontroller deaktivieren, um die Leistung zu verbessern.Optionally, disable UDP connections to the domain controller to improve performance. In vielen Fällen schlagen UDP-Verbindungen beim Herstellen einer Verbindung mit einem Domänencontroller immer wieder fehl. Sie können deshalb in den Konfigurationsoptionen in der Datei /etc/krb5.conf festlegen, dass UDP-Aufrufe übersprungen werden sollen.In many cases, UDP connections consistently fail when connecting to a domain controller, so you can set config options in /etc/krb5.conf to skip UDP calls. Bearbeiten Sie die Datei /etc/krb5.conf, und legen Sie die folgenden Optionen fest:Edit /etc/krb5.conf and set the following options:

    /etc/krb5.conf
    [libdefaults]
    udp_preference_limit=0
    

Nun können Sie AD-basierte Anmeldeinformationen in SQL Server verwenden.At this point, you are ready to use AD-based logins in SQL Server.

Erstellen von AD-basierten Anmeldeinformationen in Transact-SQLCreate AD-based logins in Transact-SQL

  1. Stellen Sie eine Verbindung mit SQL Server her, und erstellen Sie neue AD-basierte Anmeldeinformationen:Connect to SQL Server and create a new, AD-based login:

    CREATE LOGIN [CONTOSO\user] FROM WINDOWS;
    
  2. Überprüfen Sie danach, ob diese Anmeldeinformationen in der Systemkatalogsicht sys.server_principals aufgeführt werden:Verify that the login is now listed in the sys.server_principals system catalog view:

    SELECT name FROM sys.server_principals;
    

Herstellen einer Verbindung mit SQL Server über die AD-AuthentifizierungConnect to SQL Server using AD Authentication

Melden Sie sich über Ihre Domänenanmeldeinformationen bei einem Clientcomputer an.Log in to a client machine using your domain credentials. Nun können Sie eine Verbindung mit SQL Server herstellen, ohne Ihr Kennwort über die AD-Authentifizierung erneut eingeben zu müssen.Now you can connect to SQL Server without reentering your password by using AD Authentication. Wenn Sie Anmeldeinformationen für eine AD-Gruppe erstellen, kann jeder AD-Benutzer, der Mitglied dieser Gruppe ist, auf die gleiche Weise eine Verbindung herstellen.If you create a login for an AD group, any AD user who is a member of that group can connect in the same way.

Der genaue Verbindungszeichenfolgenparameter, den die Clients benötigen, um die AD-Authentifizierung verwenden zu können, ist davon abhängig, welchen Treiber Sie verwenden.The specific connection string parameter for clients to use AD Authentication depends on which driver you are using. Beispiele dazu finden Sie in den folgenden Abschnitten.Consider the examples in the following sections.

sqlcmd auf einem in die Domäne eingebundenen Linux-Clientsqlcmd on a domain-joined Linux client

Melden Sie sich mithilfe von ssh und Ihren Domänenanmeldeinformationen bei einem in die Domäne eingebundenen Linux-Client an:Log in to a domain-joined Linux client using ssh and your domain credentials:

ssh -l user@contoso.com client.contoso.com

Stellen Sie sicher, dass das Paket mssql-tools installiert wurde, und stellen Sie dann mithilfe von sqlcmd eine Verbindung her, ohne die Anmeldeinformationen anzugeben:Make sure you've installed the mssql-tools package, then connect using sqlcmd without specifying any credentials:

sqlcmd -S mssql-host.contoso.com

Im Gegensatz zu SQL Windows können Sie die Kerberos-Authentifizierung für lokale Verbindungen in SQL Linux verwenden.Different from SQL Windows, Kerberos authentication works for local connection in SQL Linux. Dafür ist jedoch die Bereitstellung des FQDN des Linux-Hosts für SQL Server erforderlich. Die AD-Authentifizierung funktioniert nicht beim Herstellen einer Verbindung mit „.“, „localhost“, „127.0.0.1“ usw.However, you still need to provide the FQDN of the SQL Linux host, and AD Authentication will not work if you attempt to connect to '.' ,'localhost','127.0.0.1',etc.

SSMS auf einem in die Domäne eingebundenen Windows-ClientSSMS on a domain-joined Windows client

Melden Sie sich mithilfe Ihrer Domänenanmeldeinformationen bei einem in die Domäne eingebundenen Windows-Client an.Log in to a domain-joined Windows client using your domain credentials. Vergewissern Sie sich, dass SQL Server Management Studio installiert ist, und stellen Sie dann eine Verbindung mit Ihrer SQL Server-Instanz her (z. B. mssql-host.contoso.com), indem Sie im Dialogfeld Mit Server verbinden Windows-Authentifizierung angeben.Make sure SQL Server Management Studio is installed, then connect to your SQL Server instance (for example, mssql-host.contoso.com) by specifying Windows Authentication in the Connect to Server dialog.

AD-Authentifizierung mit anderen ClienttreibernAD Authentication using other client drivers

In der folgenden Tabelle werden die Empfehlungen für andere Clienttreiber beschrieben:The following table describes recommendations for other client drivers:

ClienttreiberClient driver EmpfehlungRecommendation
JDBCJDBC Verwenden Sie die integrierte Kerberos-Authentifizierung, um eine Verbindung mit der SQL Server-Instanz herzustellen.Use Kerberos Integrated Authentication to Connect SQL Server.
ODBCODBC Verwenden Sie die integrierte Authentifizierung.Use Integrated Authentication.
ADO.NETADO.NET Verwenden Sie die Syntax der Verbindungszeichenfolge.Connection String Syntax.

Zusätzliche KonfigurationsoptionenAdditional configuration options

Wenn Sie Hilfsprogramme von Drittanbietern wie PBIS, VAS oder Centrify verwenden, um den Linux-Host mit der AD-Domäne zu verknüpfen, und Sie erzwingen möchten, dass die SQL Server-Instanz die OpenLDAP-Bibliothek direkt verwendet, können Sie die Option disablesssd wie folgt mithilfe des Tools mssql-conf konfigurieren:If you are using third-party utilities such as PBIS, VAS, or Centrify to join the Linux host to AD domain and you would like to force SQL server in using the openldap library directly, you can configure the disablesssd option with mssql-conf as follows:

sudo mssql-conf set network.disablesssd true
systemctl restart mssql-server

Hinweis

Einige Hilfsprogramme wie realmd richten die SSSD ein, wohingegen andere Tools wie PBIS, VAS und Centrify dies nicht tun.There are utilities such as realmd which set up SSSD, while other tools such as PBIS, VAS and Centrify do not setup SSSD. Wenn das Hilfsprogramm, das verwendet wird, um die AD-Domäne zu verknüpfen, nicht SSSD einrichtet, empfiehlt es sich, die Option disablesssd auf true festzulegen.If the utility used to join AD domain does not setup SSSD, it is recommended to configure disablesssd option to true. Dies ist zwar nicht zwingend notwendig, weil die SQL Server-Instanz versucht, SSSD zu verwenden, bevor sie auf den OpenLDAP-Mechanismus zurückgreift, aber Sie würden dadurch die Leistung verbessern, weil die Instanz dann direkt OpenLDAP-Aufrufe durchführt und den SSSD-Mechanismus umgeht.While it is not required as SQL Server will attempt to use SSSD for AD before falling back to openldap mechanism, it would be more performant to configure it so SQL Server makes openldap calls directly bypassing the SSSD mechanism.

Wenn Ihr Domänencontroller LDAPS unterstützt, können Sie erzwingen, dass alle Verbindungen der SQL Server-Instanz mit den Domänencontrollern über LDAPS erfolgen.If your domain controller supports LDAPS, you can force all connections from SQL Server to the domain controllers to be over LDAPS. Führen Sie den Bash-Befehl ldapsearch -H ldaps://contoso.com:3269 aus, um zu überprüfen, ob der Client den Domänencontroller über LDAPS kontaktieren kann.To check your client can contact the domain controller over ldaps, run the following bash command, ldapsearch -H ldaps://contoso.com:3269. Wenn Sie festlegen möchten, dass SQL Server nur LDAPS verwendet, führen Sie Folgendes aus:To set SQL Server to only use LDAPS, run the following:

sudo mssql-conf set network.forcesecureldap true
systemctl restart mssql-server

Dann wird LDAPS vor SSSD verwendet, wenn der Domänenbeitritt auf dem Host über das SSSD-Paket erfolgt ist und die Option disablesssd nicht auf TRUE festgelegt wurde.This will use LDAPS over SSSD if AD domain join on host was done via SSSD package and disablesssd is not set to true. Wenn sowohl disablesssd als auch forcesecureldap auf TRUE festgelegt sind, wird das LDAPS-Protokoll gegenüber Aufrufen der OpenLDAP-Bibliothek bevorzugt, die von der SQL Server-Instanz ausgeführt werden.If disablesssd is set to true along with forcesecureldap being set to true, then it will use LDAPS protocol over openldap library calls made by SQL Server.

Vorgehensweise ab Version SQL Server 2017 CU14Post SQL Server 2017 CU14

Ab SQL Server 2017 CU14, können Sie auch die Option enablekdcfromkrb5 verwenden, um zu erzwingen, dass die SQL Server-Instanz anstelle eines DNS-Reverse-Lookups für den KDC-Server die krb5-Bibliothek für die KDC-Suche verwendet. Voraussetzung dafür ist, dass die SQL Server-Instanz mithilfe eines Drittanbieters mit der Domäne verknüpft und die Option disablesssd auf TRUE festgelegt wurde, sodass OpenLDAP-Aufrufe für die allgemeine AD-Suche verwendet werden.Starting with SQL Server 2017 CU14, if SQL Server was joined to an AD domain controller using third-party providers and is configured to use openldap calls for general AD lookup by setting disablesssd to true, you can also use enablekdcfromkrb5 option to force SQL Server to use krb5 library for KDC lookup instead of reverse DNS lookup for KDC server.

Dies kann in Szenarios nützlich sein, in denen Sie die Domänencontroller, mit denen die SQL Server-Instanz kommuniziert, manuell konfigurieren möchten.This may be useful for the scenario where you want to manually configure the domain controllers that SQL Server attempts to communicate with. Sie können den OpenLDAP-Bibliotheksmechanismus mithilfe der KDC-Liste in der Datei krb5.conf verwenden.And you use the openldap library mechanism by using the KDC list in krb5.conf.

Legen Sie zunächst die Optionen disablesssd und enablekdcfromkrb5conf auf TRUE fest, und starten Sie dann die SQL Server-Instanz neu:First, set disablesssd and enablekdcfromkrb5conf to true and then restart SQL Server:

sudo mssql-conf set network.disablesssd true
sudo mssql-conf set network.enablekdcfromkrb5conf true
systemctl restart mssql-server

Konfigurieren Sie anschließend wie folgt die KDC-Liste in der Datei /etc/krb5.conf:Then configure the KDC list in /etc/krb5.conf as follows:

[realms]
CONTOSO.COM = {
  kdc = dcWithGC1.contoso.com
  kdc = dcWithGC2.contoso.com
}

Hinweis

Es wird zwar nicht empfohlen, aber es ist trotzdem möglich, Hilfsprogramme wie realmd zu verwenden, die SSSD einrichten, während der Linux-Host der Domäne beitritt, wenn Sie die Option disablesssd auf TRUE festlegen, sodass die SQL Server-Instanz OpenLDAP-Aufrufe anstelle von SSSD für Aufrufe im Zusammenhang mit AD verwendet.While it is not recommended, it is possible to use utilities, such as realmd, that set up SSSD while joining the Linux host to the domain, while configuring disablesssd to true so that SQL Server uses openldap calls instead of SSSD for Active Directory related calls.

Nächste SchritteNext steps

In diesem Tutorial haben wir erläutert, wie Sie die Active Directory-Authentifizierung mit SQL Server für Linux einrichten können.In this tutorial, we walked through how to set up Active Directory authentication with SQL Server on Linux. Sie haben Folgendes gelernt:You learned how to:

  • Verknüpfen des SQL ServerSQL Server-Hosts mit der AD-DomäneJoin SQL ServerSQL Server host to AD domain
  • Erstellen eines AD-Benutzers für SQL ServerSQL Server und Festlegen eines SPNCreate AD user for SQL ServerSQL Server and set SPN
  • Konfigurieren der KEYTAB-Datei für den SQL ServerSQL Server-DienstConfigure SQL ServerSQL Server service keytab
  • Erstellen von AD-basierten Anmeldeinformationen in Transact-SQLCreate AD-based logins in Transact-SQL
  • Herstellen einer Verbindung mit SQL ServerSQL Server über die AD-AuthentifizierungConnect to SQL ServerSQL Server using AD Authentication

Lernen Sie als Nächstes weitere Sicherheitsszenarios für SQL Server für Linux kennen.Next, explore other security scenarios for SQL Server on Linux.