Mobile-Menu

Berechtigungen auf Datenbankservern mit Linux steuern So binden Sie SQL auf Linux-Servern an Active Directory an

Von Thomas Joos

Wer SQL-Server 2019/2022 auf Linux betreibt, kann den Server und damit auch die Datenbanken an Active Directory anbinden und mit denselben Berechtigungen arbeiten wie auf Windows-Servern. Wir zeigen die Vorgehensweise.

Anbieter zum Thema

Das SQL Server Management Studio kann auch SQL-Server verwalten, die auf Linux installiert sind.
Das SQL Server Management Studio kann auch SQL-Server verwalten, die auf Linux installiert sind.
(Bild: Joos / Microsoft)

SQL-Server 2019/2022 lässt sich auch auf Linux-Servern installieren. Da Server wie Ubuntu 21.10 auch eine native Anbindung an Active Directory ermöglichen, ist es eine geschickte Vorgehensweise, Linux-Computer in Microsoft-Netzwerken ebenfalls an Active Directory anzubinden und über diesen Weg auch die lokalen SQL-Installationen mit Active Directory zu verbinden.

Ubuntu und andere Distributionen mit Active Directory verbinden

Generell ist die Anbindung von Ubuntu an Active Directory ab Version 21.04 ideal für den Betrieb mit SQL-Server. Die Distribution kann auch bereits bei der Installation des Betriebssystems an Active Directory angebunden werden. Das geht aber auch jederzeit nach der Installation des Servers. Um im laufenden Betrieb von Ubuntu eine Anbindung an Active Directory vorzunehmen, sind jedoch noch einige weitere Pakete notwendig. Ubuntu setzt für die Active-Directory-Integration auf den Active-Directory-Client „System Security Services Daemon“ (SSSD).

Bildergalerie
Bildergalerie mit 9 Bildern

Ubuntu aktualisieren und in Active Directory aufnehmen

Unabhängig davon kann es sinnvoll sein, vor der Installation von SQL-Server 2019/2022 auf einem Ubuntu-Server und der Integration in Active Directory das Betriebssystem auf den aktuellen Stand zu bringen:

sudo apt updatesudo apt upgradesudo apt dist-upgradesudo apt -y install realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin packagekit

Nach der Installation der notwendigen Pakete für die Einbindung in Active Directory und der Aktualisierung des Betriebssystems kann die Integration in Active Directory erfolgen. Wir gehen im Folgenden von der Aufnahme eines Ubuntu-Computers in die Domäne mit der FQDN "joos.int" aus. Bei den entsprechenden Befehlen müssen für die jeweilige Umgebung dann die echten Daten verwendet werden.

Sind die notwendigen Erweiterungen für die Anbindung an Active Directory installiert, besteht der nächste Schritt darin, mit "nslookup" zu überprüfen, ob der Computer die Domänencontroller und die Domäne auflösen kann. Danach erfolgt ein Test der Verbindung mit "realm discover joos.int" Um den Computer danach in die Domäne aufzunehmen, kann der folgende Befehl verwendet werden:

sudo realm join joos.int

Ob die erfolgreiche Aufnahme funktioniert hat, kann mit der Abfrage eines Benutzerkontos erfolgen, zum Beispiel mit:

id administrator@joos.int

Danach steht der Computer in Active Directory zur Verfügung und Active-Directory-Benutzer lassen sich auf dem Server und in SQL Server verwenden.

SQL-Server 2019 auf Linux installieren

Die Installation von SQL-Server 2019 auf Linux kann komplett über die Paketquellen erfolgen. Das funktioniert auch auf aktuellen Ubuntu-Systemen. Auch hier sollte zunächst eine Aktualisierung des Systems durchgeführt werden, wie bereits oben beschrieben. Danach kann SQL-Server 2019/2022 auf Linux installiert werden. Die installierte Ubuntu-Version kann wiederum im Terminal mit dem Befehl "lsb_release -a" angezeigt werden. Im ersten Schritt wird das Ubuntu-Repository für SQL-Server 2019 auf dem Computer registriert. Hier muss auf die richtige Version geachtet werden:

wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/16.04/mssql-server-2019.list)"

Danach erfolgt die Aktualisierung der Paketquellen und die eigentliche Installation des Datenbankservers:

sudo apt-get updatesudo apt-get install -y mssql-server

Die Einrichtung erfolgt nach der Installation mit dem folgenden Befehl:

sudo /opt/mssql/bin/mssql-conf setup

Bei der Installation auf Ubuntu muss noch darauf geachtet werden, dass der TCP-Port 1433 auf dem Server freigeschaltet wird. Das erfolgt im Terminal mit dem Befehl:

sudo ufw allow from any to any port 1433 proto tcp

Sinnvoll kann auch die Installation der SQL-Server-Tools sein, damit die notwendigen Konfigurationen für die Anbindung an Active Directory durchgeführt werden kann:

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.listsudo apt-get install mssql-tools unixodbc-devexport PATH="/opt/mssql-tools/bin:$PATH" >> ~/.profile

Anschließend ist eine weitere Aktualisierung des Servers sinnvoll:

sudo apt-get updatesudo apt-get upgradesudo reboot

SQL-Server auf Linux mit Active Directory verbinden

Wenn ein Linux-Computer Mitglied in Active Directory ist und auch SQL-Server auf dem Server installiert ist, kann eine Verbindung des Datenbank-Servers mit Active Directory konfiguriert werden. Wichtig ist, dass der Linux-Computer fehlerfrei dem Active Directory beigetreten ist. Dazu ist in Active Directory ein Benutzerkonto nötig, das für den SQL-Server auf Linux zum Einsatz kommen kann. Es gibt hierfür die Möglichkeit, ein normales Benutzerkonto oder ein verwaltetes Dienstkonto zu verwenden. In jedem Fall sollte das Benutzerkonto nur für diesen SQL-Server auf Linux zum Einsatz kommen. Das Konto kann auf Domänencontrollern auch mit der PowerShell erstellt werden:

New-ADServiceAccount -Name <Kontoname> -Enabled $true -AccountPassword (Read-Host -AsSecureString "Enter Password") -RestrictToSingleComputer;

Danach wird auf dem Domänencontroller noch ein SPN für den Server gesetzt. Auch das lässt sich in der PowerShell durchführen:

setspn -A MSSQLSvc/<FQDN des Hosts>:<TCP-Port> <Name des Kontos>setspn -A MSSQLSvc/<NETBios-Name des Hosts>:<TCP-Port> <Name des Kontos>

Beispiel:
setspn -A MSSQLSvc/ubuntu.joos.int:1433 linuxsqlsetspn -A MSSQLSvc/ubuntu:1433 linuxsql

Auf dem Linux-Server kann danach die keytab-Datei erstellt werden, die den Linux-Server mit dem Benutzerkonto in Active Directory verbindet. Die Datei ist verschlüsselt und die Basis für die Authentifizierung zwischen dem Linux-Server, SQL und Active Directory:

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Netzwerktechnik, IP-Kommunikation und UCC

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung
sudo kvno linuxsql@joos.intsudo kvno MSSQLSvc/linuxsql.joos.int:1433@joos.intsudo ktutiladdent -password -p

Hier ist auch die Key Version Number (KVN) des Benutzerkontos wichtig, welches für SQL in Linux zum Einsatz kommt. Die Nummer kann in der PowerShell auf dem Domänencontroller abgefragt werden:

get-ADServiceAccount -Identity <Name des Kontos> -property msDS-KeyVersionNumber

Die weiteren Befehle sehen dann zum Beispiel folgendermaßen aus:

ktpass /princ MSSQLSvc/<fully qualified domain name of host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser <DomainName>\<UserName> /out mssql.keytab -setpass -setupn /kvno <#> /pass <StrongPassword>ktpass /princ MSSQLSvc/<fully qualified domain name of host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <StrongPassword>ktpass /princ MSSQLSvc/<netbios name of the host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <StrongPassword>ktpass /princ MSSQLSvc/<netbios name of the host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <StrongPassword>ktpass /princ <UserName>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <StrongPassword>ktpass /princ <UserName>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <StrongPassword>

Die einzelnen Schritte sind ausführlich in der Microsoft-Dokumentation auf der Seite "Tutorial: Verwenden der Active Directory-Authentifizierung für SQL Server für Linux" zu finden. Nach der Umsetzung der Befehle kann der Linux-Server mit Berechtigungen aus Active Directory arbeiten.

(ID:48226112)