Freigeben über


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.

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.

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. Sie sollten 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.

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.

Um die richtige Namensauflösung der Domäne sicherzustellen, ist es wichtig, die /etc/resolv.conf-Datei zu aktualisieren, wenn während der Namensüberprüfung Abweichungen gefunden werden. Das Update-Verfahren variiert je nach Verteilung; daher ist es ratsam, die offizielle Dokumentation zu konsultieren, um genaue Anleitungen zu erhalten. Die folgende Liste enthält Links für einige Verteilungen und deren Hauptversionen:

Distribution Referenzartikel
RHEL 8 Manuelle Konfiguration der /etc/resolv.conf
RHEL 9 Manuelle Konfiguration der /etc/resolv.conf
SLES 15 Einstellungen für NETCONFIG_DNS_STATIC_SEARCHLIST und NETCONFIG_DNS_STATIC_SERVERS
Ubuntu Abschnitt „Namensauflösung“

Ziel ist es, /etc/resolv.conf für Ihre Verteilung richtig zu konfigurieren, um die Namensauflösung von Domänen zu erleichtern. Wenn Ihre Domäne beispielsweise contoso.com ist und die Active Directory-IP-Adresse 10.0.0.4 lautet, sollte /etc/resolv.conf entsprechend eingerichtet werden, um eine erfolgreiche Namensauflösung vom Host sicherzustellen.

cat /etc/resolv.conf

Hier sehen Sie das Ergebnis.

# Generated by NetworkManager
search contoso.com com
nameserver 10.0.0.4

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:

    sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
    

    Die Inhalte sollte in etwa wie im folgenden Beispiel aussehen:

    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:

    sudo vi /etc/resolv.conf
    

    Die Inhalte sollte in etwa wie im folgenden Beispiel aussehen:

    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:

    sudo vi /etc/hosts
    

    Die Inhalte sollte in etwa wie im folgenden Beispiel aussehen:

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

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.

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

Die aktuellsten Anweisungen finden Sie in der offiziellen Dokumentation der Vertriebspartner.

Distribution Referenzartikel
RHEL 8 Ermitteln und Beitreten zu einer AD-Domäne mithilfe von SSSD
RHEL 9 Ermitteln und Beitreten zu einer AD-Domäne mithilfe von SSSD
SLES Hinzufügen von AD mithilfe des Bereichs unter SUSE Linux Enterprise Server 15
Ubuntu So richten Sie SSSD mit Active Directory ein

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
    

  1. 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.

  2. 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 diesen Befehl ausgeführt haben, sollte ihre /etc/hostname-Datei <old hostname>.contoso.com enthalten.

    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.

  3. Ü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
    

    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 network.disablesssd-Konfiguration 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:

sudo vi /etc/krb5.conf

Die Inhalte sollte in etwa wie im folgenden Beispiel aussehen:

[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.