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
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"
Nachdem Sie diese Datei bearbeitet haben, sollten Sie den Netzwerkdienst neu starten:
sudo systemctl restart network
Ü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>
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.
Führen Sie die folgenden Schritte aus, um einen SQL Server-Host mit einer Active Directory-Domäne zu verknüpfen:
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:
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.
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.
Ü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.com
No such user
zurückgibt, vergewissern Sie sich, dass der SSSD-Dienst erfolgreich gestartet wurde, indem Sie den Befehlsudo 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.COM
KDC 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.