Tags: Datenbanken, Linux, Active Directory
Nach der Installation von SQL Server auf Linux kann man nur mit SQL-Benutzern darauf zugreifen. Das SQL Management Studio zeigt AD-Benutzer zwar an, sie lassen sich aber nicht hinzufügen. Die folgende Anleitung zeigt, wie man den Linux-Server in die Domäne aufnimmt und AD-User auf dem SQL Server berechtigt.
Damit auch Benutzer aus dem Active Directory auf dem Linux MS SQL Server verwendet werden können, sind einige Einstellungen vonnöten. Dazu gehört vor allem, dass der Linux-Server mit dem AD verbunden wird.
Im ersten Schritt sollte man prüfen, ob der Linux-Server den Domänennamen auflösen kann. Dazu verwende ich Ping nach dem Muster
ping contoso.de
Netzwerk-Interface konfigurieren
Ist die Domäne nicht erreichbar oder wird diese nicht gefunden, so muss man die Domänen-Suchliste unter Linux aktualisieren. Dazu bearbeitet man die Datei /etc/network/interfaces. Für diesen Zweck eignet sich ein beliebiger Texteditor, zum Beispiel
sudo nano /etc/network/interfaces
Ab Ubuntu 18.04 konfiguriert man die Netzwerkschnittstelle durch Editieren der yaml-Datei:
sudo nano /etc/netplan/*.yaml
Die folgenden Screenshots beruhen auf dieser Variante.
Normalerweise sollte die Netzwerkschnittstelle eth0 heißen, aber die Bezeichnung kann davon abweichen. Den tatsächlichen Namen des Interfaces kann man mit dem Befehl ifconfig herausfinden.
In unserem Beispiel hört die Netzwerkschnittstelle auf die Bezeichnung ens33. Für ihre statische IP-Konfiguration trägt man die IP-Adresse, das Gateway und den bzw. die DNS-Server in die yaml-datei ein.
Dabei sollte man Zeilenumbrüche und Einrückungen genau so einfügen, wie im Screenshot zu sehen. Zu beachten ist außerdem, dass keine Tabulatoren zulässig sind.
Nach dem Speichern der Datei übernimmt man die darin enthaltenen Einstellungen mit
sudo netplan apply
Der Befehl moniert eventuell vorhandene Syntaxfehler.
Eine andere Möglichkeit wäre, die Daten per DHCP zuzuweisen und keine statische IP Adresse zu verwenden. In diesem Fall würde die Konfiguration so aussehen:
Danach sollte man die Datei /etc/resolv.conf prüfen, hier müsste zumindest die Suchdomäne enthalten sein. Andernfalls funktioniert die Namensauflösung für die Domäne nicht.
Domain Join mit dem Linux-Server
Microsoft empfiehlt für den Domänenbeitritt von Linux das SSSD-Paket. Dabei installiert man zuerst realmd und den Kerberos-Client:
sudo apt -y install realmd libnss-sss libpam-sss sssd sssd-tools adcli samba-common-bin oddjob oddjob-mkhomedir packagekit
Danach erfolgt der Beitritt zur Domäne:
sudo realm join contoso.de -U 'administrator' -v
Beim administrativen Benutzer verwendet man am besten nur den SAMAccountName und nicht den UniversalPrincipalName, damit ist der AD-Join nicht möglich.
Das Computer-Objekt des Linux-Servers sollte nun im Active Directory sichtbar sein.
Ab hier können nun Active Directory-Benutzer auch über das SQL Management Studio berechtigt werden. Es ist allerdings weiterhin nicht möglich, mit diesen Konten zu arbeiten, sprich die Authentifizierung und dadurch auch der Zugriff über PowerShell funktioniert nicht.
keytab-Datei anlegen
Daher müssen noch weitere Einstellungen getätigt werden. Dazu zählt das Erstellen einer keytab-Datei, sie wird für die Authentifizierung über Kerberos benötigt. Sie ist grundsätzlich verschlüsselt und ermöglicht es, dass sich ein Principal auf einen Host verbinden kann, ohne dafür ein Kennwort einzugeben.
Als Erstes muss man dafür im Active Directory einen Benutzer anlegen, dessen Kennwort nie abläuft und das nicht geändert werden kann. Mit PowerShell würde man so vorgehen:
New-ADUser lxmssql -AccountPassword (Read-Host -AsSecureString "Enter Password") `
-PasswordNeverExpires $true -Enabled $true
Danach setzt man auf dem Domänen-Controller einen SPN für den Linux-SQL-Server. Wichtig dabei ist, dass man den eben erstellten Benutzer mit aufnimmt.
setspn -A MSSQLSvc/linuxsql.smartsocke.com:1433 lxmssql
Als nächstes erstellt man auf dem Linux-Server die keytab-Datei:
sudo kvno lxmssql@SMARTSOCKE.COM
sudo kvno MSSQLSvc/linuxsql.smartsocke.com:1433@SMARTSOCKE.COM
Die Datei selbst wird mit folgenden Befehlen erzeugt:
sudo ktutil
addent -password -p MSSQLSvc/linuxsql.smartsocke.com:1433@SMARTSOCKE.COM -k 2 -e aes256-cts-hmac-sha1-96
addent -password -p MSSQLSvc/linuxsql.smartsocke.com:1433@SMARTSOCKE.com -k 2 -e rc4-hmac
wkt /var/opt/mssql/secrets/mssql.keytab
exit
Anschließend sichert man die frisch erstelle keytab-Datei ab, indem man die Berechtigungen auf die Datei so setzt, dass nur der mssql-Benutzer die Erlaubnis zum Lesen erhält.
sudo chown mssql:mssql /var/opt/mssql/secrets/mssql.keytab
sudo chmod 400 /var/opt/mssql/secrets/mssql.keytab
Zum Schluss muss man dem SQL Server nur noch vermitteln, dass er die keytab-Datei nutzen soll:
sudo /opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
sudo systemctl restart mssql-server
Damit wäre die Konfiguration abgeschlossen.
Jetzt lassen sich AD-User für den SQL Server berechtigen, und darüber hinaus ist jetzt auch der Zugriff per PowerShell im Kontext eines AD-Benutzers möglich.
Update: Die Konfiguration auf der Linux-Seite will Microsoft mit adutil vereinfachen. Das Tool wurde kürzlich als Public Preview freigegeben.
Zum Schluss sollten Sie auf die Systemzeit, das Datum und die Zeitzone des Linux-Servers achten. Es kann sein, dass Ubuntu nach der Installation in der Zeitzone UTC liegt. In diesem Fall kann es passieren, dass keine Active Directory-Benutzer für SQL berechtigt werden können.
Täglich Know-how für IT-Pros mit unserem Newsletter
Roland Eich ist gelernter Fachinformatiker für Systemintegration und in der IT seit über 14 Jahren zu Hause. Roland deckt aufgrund seiner Erfahrungen ein breites Spektrum der Microsoft-Produktpalette ab.Zudem besitzt er verschiedene Zertifizierungen (MCITP, MCSA und MCSE, ITIL, PRINCE2).
// Kontakt: E-Mail //
Ähnliche Beiträge
- Veeam Backup & Replication v11: Continuous Data Protection, gehärtetes Repository, erweitertes Instant Recovery
- Microsoft SQL 2019 Server (Express) auf Linux installieren
- Apache, MySQL und PHP in Subsystem für Linux 2 (WSL2) installieren
- Datenbanken erstellen und SQL-Befehle absetzen mit PowerShell
- Thomas-Krenn: Server mit kostenlosem Univention Corporate Server
Weitere Links
2 Kommentare
Wäre es nicht sinnvoller, bei dieser Anforderung den MS SQL gleich unter Windows Server zu betreiben?
Hallo Herr Jelinski,
jedes Unternehmen tickt da anders. Was man natürlich beachten sollte wäre zum einen die Lizenzkosten für das Windows-System und natürlich läuft Linux etwas performanter als Windows. Ist halt alles irgendwie Gefühls- oder Glaubenssache.
Ich persönlich finde es gar nicht so verkehrt, teste gerade einen SQLer auf Linux bisher alles recht erfolgreich.
Beste Grüße
Roland Eich