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

Gilt für:SQL Server unter Linux

Dieser Artikel gibt allgemeine Anleitungen, wie man einen Linux-Host, der SQL Server betreibt, mit einer Active Directory-Domäne verbindet. Es gibt zwei Möglichkeiten: Sie können entweder ein integriertes SSSD-Paket oder ein Drittanbietertool für Active Directory verwenden. Beispiele für Drittanbieter-Domain-Join-Produkte sind PowerBroker Identity Services (PBIS),One Identity Safeguard Authentication Services (VAS) 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.

Note

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, müssen Sie einen Computer mit Windows Server als Active Directory-Domänencontroller in Ihrem Netzwerk einrichten. Verbinden Sie dann den Linux-Host, auf dem SQL Server ausgeführt wird, 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 je nach Umgebung und Betriebssystemversion leicht variieren. Zum Beispiel verwendet Ubuntu 18.04 Netplan, während RHEL 8.x unter anderem nmcli zur Verwaltung und Konfiguration von Netzwerken 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.

Note

Ab SQL Server 2025 (17.x) wird SUSE Linux Enterprise Server (SLES) nicht unterstützt.

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.

Stelle außerdem sicher, dass PTR-Datensätze, die auf deine Domänencontroller hinweisen, existieren.

Ü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 ebenfalls auf den vollständig qualifizierten Domainnamen (FQDN) des Domänencontrollers aufgelöst werden:

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

Tip

In diesem Tutorial werden die Beispielnamen contoso.com (für die Domäne) und CONTOSO.COM (für den Bereich) verwendet. Außerdem verwendet es DC1.CONTOSO.COM als beispielhaften vollqualifizierten Domänennamen des Domänencontrollers. Sie müssen diese Namen durch Ihre eigenen Werte 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:

Verteilung 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“

Das Ziel ist, /etc/resolv.conf für Ihre Distribution korrekt zu konfigurieren, um die Auflösung von Domänennamen zu ermöglichen. 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 ist 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. Oder bearbeiten Sie eine andere Schnittstellen-Konfigurationsdatei entsprechend:

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

    Die Ausgabe sieht etwa folgendermaßen aus:

    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 Ausgabe sieht etwa folgendermaßen aus:

    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 Ausgabe sieht etwa folgendermaßen aus:

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

Einer Active Directory-Domäne beitreten

Nachdem Sie die grundlegende Konfiguration und Verbindung mit dem Domänencontroller überprüft haben, gibt es zwei Möglichkeiten, einen Linux-Host, der den SQL Server betreibt, mit der Active Directory-Domäne zu verbinden:

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

Diese Methode verbindet den Linux-Host, der SQL Server betreibt, mit einer Active Directory-Domäne über Realmd- und SSD-Pakete.

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.

Verteilung 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 Beitritt zu Active Directory mithilfe der Windows-Domänenmitgliedschaft
Ubuntu So richten Sie SSSD mit Active Directory ein

Verwenden Sie die folgenden Schritte, um einen Linux-Host zu verbinden, der SQL Server betreibt, mit einer Active Directory-Domäne:

  1. Verwenden Sie Realmd, um Ihren Host-Rechner mit Ihrer Active Directory-Domain zu verbinden. Sie müssen zunächst sowohl die Realmd- als auch die Kerberos-Clientpakete auf dem SQL Server Linux-Host mit dem Paketmanager Ihrer Linux-Distribution 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
    

    Sie sollten die Meldung Successfully enrolled machine in realm sehen.

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

    Fehlermeldung Recommendation
    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. Realm-Namen unterscheiden zwischen Groß- und Kleinschreibung, werden in der Regel in Großbuchstaben geschrieben und können mit dem Befehl realm discover contoso.com identifiziert 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.

    Verwenden Sie, id um zu bestätigen, dass SSSD die Domain-Benutzer- und Gruppenmitgliedschaften auflösen kann:

    id user@contoso.com
    

    Die Ausgabe sollte die Benutzer-ID, die Gruppen-ID und die Gruppenmitgliedschaften des Domain-Nutzers zeigen:

    uid=1348601103(user@contoso.com) gid=1348600513(domain group@contoso.com) groups=1348600513(domain group@contoso.com)
    

    Verwenden Sie kinit, um ein Kerberos-Ticket für einen Domänenbenutzer anzufordern:

    kinit user@CONTOSO.COM
    

    Der Befehl sollte nach dem Passwort des Domänenbenutzers fragen:

    Password for user@CONTOSO.COM:
    

    Verwenden Sie klist, um das Kerberos-Ticket zu überprüfen:

    klist
    

    Die Ausgabe sollte den Domänenbenutzer als Standardprinzipal identifizieren:

    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 Entdecken und Beitreten einer AD-Domäne mit SSSD.

Option 2: Verwenden Sie Dienstprogramme von Drittanbietern für Active Directory

Sie können auch Hilfsprogramme von Drittanbietern wie PBIS, VAS oder Centrify verwenden. Dieser Artikel enthält keine Anweisungen für jedes einzelne Hilfsprogramm. Zuerst müssen Sie eines dieser Dienstprogramme verwenden, um dem Linux-Host, der SQL Server betreibt, der Domäne beizutreten, bevor Sie fortfahren.

SQL Server verwendet keinen Code oder keine Bibliotheken von Drittanbieter-Integratoren für Active Directory-bezogene Abfragen. SQL Server fragt Active Directory bei diesem Setup immer mithilfe von direkten Aufrufen der OpenLDAP-Bibliothek ab. Die Drittanbieter-Integratoren werden nur verwendet, um den Linux-Host mit einer Active Directory-Domäne zu verbinden, und SQL Server hat keine direkte Kommunikation mit diesen Tools.

Important

Weitere Informationen zur Verwendung der mssql-conf network.disablesssd Konfigurationsoption finden Sie im Abschnitt "Zusätzliche Konfigurationsoptionen" des Artikels "Verwenden der Active Directory-Authentifizierung mit SQL Server unter Linux".

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 Ausgabe sieht etwa folgendermaßen aus:

[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 das FQDN deines Hosts nicht zurückgibt oder das FQDN falsch ist, füge einen Reverse-DNS-Eintrag für den Linux-Host, der den SQL Server betreibt, zu deinem DNS-Server hinzu.

Nächster Schritt

In diesem Artikel haben Sie einen Linux-Host konfiguriert, der SQL Server mit Active Directory-Authentifizierung ausführt. Um die Konfiguration von SQL Server unter Linux für die Unterstützung von Active Directory-Konten abzuschließen, folgen Sie diesen Anweisungen.