Verknüpfen eines Hosts für SQL Server für Linux mit einer Active Directory-Domäne

Gilt für:SQL Server – Linux

Dieser Artikel enthält allgemeine Anleitungen zum Verknüpfen eines Linux-Hostcomputers für SQL Server mit einer Active Directory-Domäne. Es gibt zwei Möglichkeiten: Sie können entweder ein integriertes SSSD-Paket oder ein Drittanbietertool für Active Directory verwenden. Beispielsweise können Sie die folgenden Drittanbieterprodukte für den Domänenbeitritt verwenden: PowerBroker Identity Services (PBIS), One Identity und Centrify. Außerdem wird in diesem Artikel ausführlich beschrieben, wie Sie Ihre Active Directory-Konfiguration überprüfen können. Wir werden jedoch keine Anweisungen dazu bereitstellen, wie Sie mithilfe von Drittanbietertools einen Computer mit einer Domäne verknüpfen können.

Voraussetzungen

Bevor Sie die Active Directory-Authentifizierung konfigurieren können, müssen Sie einen Active Directory-Domänencontroller (Windows) für Ihr Netzwerk einrichten. Verknüpfen Sie dann Ihren Host für SQL Server für Linux mit einer Active Directory-Domäne.

Die in diesem Artikel beispielhaft beschriebenen Schritte dienen lediglich zur Orientierung und beziehen sich auf die Betriebssysteme Ubuntu 16.04, Red Hat Enterprise Linux (RHEL) 7.x und SUSE Linux Enterprise Server (SLES) 12. Die tatsächlichen Schritte können sich je nach Konfiguration Ihrer gesamten Umgebung und Version des Betriebssystems geringfügig unterscheiden. So verwendet Ubuntu 18.04 als Tool für die Netzwerkverwaltung und -konfiguration beispielsweise Netplan, während Red Hat Enterprise Linux (RHEL) 8.x unter anderem nmcli verwendet. Es wird empfohlen, dass Sie sich mit den System- und Domänenadministratoren für Ihre Umgebung in Verbindung setzen, um genaue Informationen zu Tools, Konfiguration und Anpassung sowie zur Behandlung von möglicherweise auftretenden Problemen zu erhalten.

Hinweis

Informationen zum Konfigurieren von Active Directory mit neueren Versionen von Ubuntu, RHEL oder SLES finden Sie unter Tutorial: Verwenden von adutil zum Konfigurieren der Active Directory-Authentifizierung mit SQL Server für Linux.

Reverse DNS (rDNS)

Wenn Sie einen Computer, auf dem Windows Server ausgeführt wird, als Domänencontroller einrichten, verfügen Sie möglicherweise nicht standardmäßig über eine rDNS-Zone. Stellen Sie sicher, dass für den Domänencontroller und die IP-Adresse des Linux-Computers, auf dem SQL Server ausgeführt wird, eine gültige rDNS-Zone vorhanden ist.

Sorgen Sie außerdem dafür, dass ein auf Ihre Domänencontroller verweisender PTR-Eintrag vorhanden ist.

Überprüfen der Verbindung mit einem Domänencontroller

Überprüfen Sie, ob Sie den Domänencontroller mithilfe des kurzen und des vollqualifizierten Domänennamens (Fully Qualified Domain Name, FQDN) sowie mithilfe des Hostnamens des Domänencontrollers kontaktieren können. Die IP-Adresse des Domänencontrollers sollte auch in den FQDN des Domänencontrollers aufgelöst werden:

ping contoso
ping contoso.com
ping dc1.contoso.com
nslookup <IP address of dc1.contoso.com>

Tipp

In diesem Tutorial werden die Beispielnamen contoso.com (für die Domäne) und CONTOSO.COM (für den Bereich) verwendet. Außerdem wird DC1.CONTOSO.COM als vollqualifizierter Domänenname des Domänencontrollers verwendet. Diese Namen müssen Sie durch eigene ersetzen.

Wenn eine dieser Namensprüfungen fehlschlägt, aktualisieren Sie Ihre Domänensuchliste. In den folgenden Abschnitten finden Sie Anweisungen für Ubuntu, Red Hat Enterprise Linux (RHEL) und SuSE Linux Enterprise Server (SLES).

Ubuntu 16.04

  1. Bearbeiten Sie die Datei /etc/network/interfaces so, dass Ihre Active Directory-Domäne in die Domänensuchliste aufgenommen wird:

    # The primary network interface
    auto eth0
    iface eth0 inet dhcp
    dns-nameservers <Domain controller IP address>
    dns-search <Active Directory domain name>
    

    Hinweis

    Die Netzwerkschnittstelle eth0 kann je nach Computer abweichen. Führen Sie ifconfig aus, um herauszufinden, welche Schnittstelle für Ihren Computer verwendet wird. Kopieren Sie dann die Schnittstelle, die eine IP-Adresse aufweist sowie Bytes übertragen und empfangen hat.

  2. Nachdem Sie diese Datei bearbeitet haben, sollten Sie den Netzwerkdienst neu starten:

    sudo ifdown eth0 && sudo ifup eth0
    
  3. Überprüfen Sie als Nächstes, ob die Datei /etc/resolv.conf eine Zeile wie die Folgende enthält:

    search contoso.com com
    nameserver <Domain controller IP address>
    

Ubuntu 18.04

  1. Bearbeiten Sie die Datei [sudo vi /etc/netplan/******.yaml], sodass Ihre Active Directory-Domäne in die Domänensuchliste aufgenommen wird:

    network:
      ethernets:
        eth0:
                dhcp4: true
    
                dhcp6: true
                nameservers:
                        addresses: [<Domain controller IP address>]
                        search: [<Active Directory domain name>]
      version: 2
    

    Hinweis

    Die Netzwerkschnittstelle eth0 kann je nach Computer abweichen. Führen Sie ifconfig aus, um herauszufinden, welche Schnittstelle für Ihren Computer verwendet wird. Kopieren Sie dann die Schnittstelle, die eine IP-Adresse aufweist sowie Bytes übertragen und empfangen hat.

  2. Nachdem Sie diese Datei bearbeitet haben, sollten Sie den Netzwerkdienst neu starten:

    sudo netplan apply
    
  3. Überprüfen Sie als Nächstes, ob die Datei /etc/resolv.conf eine Zeile wie die Folgende enthält:

    search contoso.com com
    nameserver <Domain controller IP address>
    

RHEL 7.x

  1. Bearbeiten Sie die Datei /etc/sysconfig/network-scripts/ifcfg-eth0 so, dass Ihre Active Directory-Domäne in die Domänensuchliste aufgenommen wird. Stattdessen können Sie auch eine andere Konfigurationsdatei entsprechend bearbeiten:

    PEERDNS=no
    DNS1=<Domain controller IP address>
    DOMAIN="contoso.com com"
    
  2. Nachdem Sie diese Datei bearbeitet haben, sollten Sie den Netzwerkdienst neu starten:

    sudo systemctl restart network
    
  3. Überprüfen Sie als Nächstes, ob die Datei /etc/resolv.conf eine Zeile wie die Folgende enthält:

    search contoso.com com
    nameserver <Domain controller IP address>
    
  4. Wenn Sie weiterhin nicht den Domänencontroller pingen können, suchen Sie den vollqualifizierten Domänennamen und die IP-Adresse des Domänencontrollers. Ein Beispiel für den Domänennamen ist DC1.CONTOSO.COM. Fügen Sie /etc/hosts den folgenden Eintrag hinzu:

    <IP address> DC1.CONTOSO.COM CONTOSO.COM CONTOSO
    

SLES 12

  1. Bearbeiten Sie die Datei /etc/sysconfig/network/config so, dass die IP-Adresse des Domänencontrollers für DNS-Abfragen verwendet und Ihre Active Directory-Domäne in die Domänensuchliste aufgenommen wird:

    NETCONFIG_DNS_STATIC_SEARCHLIST=""
    NETCONFIG_DNS_STATIC_SERVERS="<Domain controller IP address>"
    
  2. Nachdem Sie diese Datei bearbeitet haben, sollten Sie den Netzwerkdienst neu starten:

    sudo systemctl restart network
    
  3. Überprüfen Sie als Nächstes, ob die Datei /etc/resolv.conf eine Zeile wie die Folgende enthält:

    search contoso.com com
    nameserver <Domain controller IP address>
    

Verknüpfen mit der Active Directory-Domäne

Nachdem Sie die Basiskonfiguration und die Konnektivität mit dem Domänencontroller überprüft haben, haben Sie zwei Möglichkeiten, um einen Linux-Hostcomputer für SQL Server mit dem Active Directory-Domänencontroller zu verknüpfen:

Option 1: Verwenden eines SSSD-Pakets zur Verknüpfung mit der Active Directory-Domäne

Bei dieser Methode wird der SQL Server-Host mithilfe von realmd und SSSD-Paketen mit einer Active Directory-Domäne verknüpft.

Hinweis

Diese Methode wird bevorzugt, um einen Linux-Host mit einem Active Directory-Domänencontroller zu verknüpfen.

Führen Sie die folgenden Schritte aus, um einen SQL Server-Host mit einer Active Directory-Domäne zu verknüpfen:

  1. Verwenden Sie realmd, um den Hostcomputer mit Ihrer Active Directory-Domäne zu verknüpfen. Zuvor müssen Sie mithilfe des Paket-Managers für Ihre Linux-Distribution sowohl das realmd- als auch das Kerberos-Clientpaket auf dem SQL Server-Hostcomputer installieren:

    RHEL:

    sudo yum install realmd krb5-workstation
    

    SLES 12:

    Diese Schritte gelten speziell für SLES 12.

    sudo zypper addrepo https://download.opensuse.org/repositories/network/SLE_12/network.repo
    sudo zypper refresh
    sudo zypper install realmd krb5-client sssd-ad
    

    Ubuntu 16.04:

    sudo apt-get install realmd krb5-user software-properties-common python-software-properties packagekit
    

    Ubuntu 18.04:

    sudo apt-get install realmd krb5-user software-properties-common python3-software-properties packagekit
    sudo apt-get install adcli libpam-sss libnss-sss sssd sssd-tools
    
  2. Wenn Sie bei der Installation des Pakets für den Kerberos-Client aufgefordert werden, einen Bereichsnamen einzugeben, geben Sie Ihren Domänennamen in Großbuchstaben ein.

  3. Nachdem Sie sich vergewissert haben, dass Ihr DNS ordnungsgemäß konfiguriert wurde, führen Sie den folgenden Befehl aus, um der Domäne beizutreten. Sie müssen sich mit einem Active Directory-Konto authentifizieren, das über ausreichende Berechtigungen in Active Directory verfügt, um einen neuen Computer mit der Domäne verknüpfen zu können. Mithilfe des folgenden Befehls wird ein neues Computerkonto in Active Directory und die KEYTAB-Datei für den Host (/etc/krb5.keytab) erstellt. Außerdem werden die Domäne in /etc/sssd/sssd.conf konfiguriert und /etc/krb5.conf aktualisiert.

    Legen Sie den Hostnamen des Computers aufgrund eines Problems mit realmd zunächst auf den FQDN anstatt auf den Computernamen fest. Andernfalls erstellt realmd möglicherweise nicht alle erforderlichen SPNs für den Computer, und DNS-Einträge werden nicht automatisch aktualisiert, auch wenn der Domänencontroller dynamische DNS-Updates unterstützt.

    sudo hostname <old hostname>.contoso.com
    

    Nachdem Sie den obigen Befehl ausgeführt haben, sollte die Datei „/etc/hostname“ Folgendes enthalten: <alter Hostname>.contoso.com.

    sudo realm join contoso.com -U 'user@CONTOSO.COM' -v
    

    Dann sollte die Meldung Successfully enrolled machine in realm angezeigt werden.

    In der folgenden Tabelle sind einige Fehlermeldungen,die Sie erhalten könnten, einschließlich möglicher Lösungen aufgeführt:

    Fehlermeldung Empfehlung
    Necessary packages are not installed Installieren Sie diese Pakete mithilfe des Paket-Managers für Ihre Linux-Distribution, bevor Sie den Befehl „realm join“ erneut ausführen.
    Insufficient permissions to join the domain Vergewissern Sie sich bei einem Domänenadministrator, ob Sie über ausreichende Berechtigungen verfügen, um Linux-Computer mit einer Domäne verknüpfen zu können.
    KDC reply did not match expectations Sie haben möglicherweise nicht den richtigen Bereichsnamen für den Benutzer angegeben. Bei Bereichsnamen wird die Groß-/Kleinschreibung beachtet. Normalerweise werden sie in Großbuchstaben geschrieben und können über den Befehl „realm discover contoso.com“ ermittelt werden.

    SQL Server verwendet SSSD und NSS, um Benutzerkonten und Gruppen Sicherheits-IDs zuzuordnen. SSSD muss konfiguriert sein und ausgeführt werden, damit SQL Server erfolgreich Anmeldeinformationen für Active Directory erstellen kann. realmd tut dies in der Regel zwar automatisch beim Domänenbeitritt, aber in einigen Fällen müssen Sie sich selbst darum kümmern.

    Weitere Informationen finden Sie unter Manuelles Konfigurieren von SSSD und Konfigurieren von NSS für SSSD.

  4. Überprüfen Sie, ob Sie jetzt über die Domäne Informationen zum Benutzer erfassen und als dieser Benutzer ein Kerberos-Ticket abrufen können. Im folgenden Beispiel werden dafür die Befehle id, kinit und klist verwendet.

    id user@contoso.com
    
    uid=1348601103(user@contoso.com) gid=1348600513(domain group@contoso.com) groups=1348600513(domain group@contoso.com)
    
    kinit user@CONTOSO.COM
    
    Password for user@CONTOSO.COM:
    
    klist
    Ticket cache: FILE:/tmp/krb5cc_1000
    Default principal: user@CONTOSO.COM
    

    Hinweis

    Wenn id user\@contoso.comNo such user zurückgibt, vergewissern Sie sich, dass der SSSD-Dienst erfolgreich gestartet wurde, indem Sie den Befehl sudo systemctl status sssd ausführen. Wenn der Dienst ausgeführt, aber der Fehler weiterhin angezeigt wird, können Sie versuchen, die ausführliche Protokollierung für SSSD zu aktivieren. Weitere Informationen finden Sie in der Red Hat-Dokumentation zur Behandlung von Problemen mit SSSD.

    Wenn kinit user\@CONTOSO.COMKDC reply didn't match expectations while getting initial credentials zurückgibt, vergewissern Sie sich, dass Sie den Bereichsnamen in Großbuchstaben angegeben haben.

Weitere Informationen finden Sie in der Red Hat-Dokumentation zum Ermitteln und Verknüpfen von Identitätsdomänen.

Option 2: Verwenden von OpenLDAP-Drittanbietertools

Sie können auch Hilfsprogramme von Drittanbietern wie PBIS, VAS oder Centrify verwenden. In diesem Artikel können aber keine Anweisungen zu den einzelnen Hilfsprogrammen bereitgestellt werden. Sie müssen zunächst mithilfe eines dieser Hilfsprogramme den Linux-Host für SQL Server mit der Domäne verknüpfen, bevor Sie fortfahren können.

SQL Server verwendet keinen Integratorcode oder Bibliotheken von Drittanbietern für Active Directory-bezogene Abfragen. SQL Server fragt Active Directory bei diesem Setup immer mithilfe von direkten Aufrufen der OpenLDAP-Bibliothek ab. Die Drittanbieterintegratoren werden nur verwendet, um den Linux-Host mit der Active Directory-Domäne zu verknüpfen. SQL Server kommuniziert nicht direkt mit diesen Hilfsprogrammen.

Wichtig

Lesen Sie sich die Empfehlungen für die Verwendung der mssql-conf-Konfiguration network.disablesssd im Abschnitt Zusätzliche Konfigurationsoptionen des Artikels Verwenden der Active Directory-Authentifizierung mit SQL Server für Linux durch.

Vergewissern Sie sich, dass /etc/krb5.conf ordnungsgemäß konfiguriert ist. Bei den meisten Drittanbietern für Active Directory erfolgt diese Konfiguration automatisch. Überprüfen Sie jedoch die Datei /etc/krb5.conf auf die folgenden Werte, um zukünftige Probleme zu vermeiden:

[libdefaults]
default_realm = CONTOSO.COM

[realms]
CONTOSO.COM = {
}

[domain_realm]
contoso.com = CONTOSO.COM
.contoso.com = CONTOSO.COM

Überprüfen, ob das Reverse-DNS ordnungsgemäß konfiguriert ist

Der folgende Befehl sollte den vollqualifizierten Domänennamen des Hosts zurückgeben, der SQL Server ausführt, z. B. SqlHost.contoso.com.

host <IP address of SQL Server host>

Die Ausgabe dieses Befehls sollte in etwa wie folgt aussehen: <reversed IP address>.in-addr.arpa domain name pointer SqlHost.contoso.com. Wenn dieser Befehl nicht den vollqualifizierten Domänennamen des Hosts zurückgibt oder wenn dieser falsch ist, fügen Sie dem DNS-Server einen Reverse-DNS-Eintrag für Ihren Host für SQL Server für Linux hinzu.

Nächster Schritt

In diesem Artikel haben wir die Voraussetzungen für die Konfiguration eines Hostcomputers für SQL Server für Linux über die Active Directory-Authentifizierung behandelt. Um die Konfiguration von SQL Server unter Linux für die Unterstützung von Active Directory-Konten abzuschließen, folgen Sie diesen Anweisungen.