Feed abonnieren

Letztes Jahr wurde die Ansible-Rolle microsoft.sql.server in Red Hat Enterprise Linux (RHEL) eingeführt. Mit der Veröffentlichung von RHEL 8.8 und 9.2 erhält diese Rolle ein neues Update mit verschiedenen neuen Funktionen:

  • Konfigurieren der Authentifizierung von SQL Server mit Active Directory Server
  • Erweiterte Verwaltungsfunktionen für Always On-Verfügbarkeitsgruppen, einschließlich Unterstützung für das Konfigurieren asynchroner Verfügbarkeitsreplikate und von Read-Scale Always auf Clustern
  • Konfigurieren und Verwalten von SQL Server 2022 auf RHEL 8 und RHEL 9

Dieser Artikel behandelt die Integration mit Active Directory (AD) und führt Sie durch den gesamten Prozess:

  1. Stellen Sie sicher, dass Sie die Anforderungen zum Konfigurieren der AD-Authentifizierung für SQL Server erfüllen.
  2. Bereiten Sie eine Ansible Inventory-Datei vor.
  3. Untersuchen Sie die festzulegenden Variablen und bereiten Sie eine Ansible Playbook-Datei vor, welche die Rolle zum automatischen Konfigurieren der Authentifizierung mit Active Directory verwendet.
  4. Führen Sie die Rolle aus.
  5. Beenden Sie die Konfiguration.
  6. Überprüfen Sie, ob die Authentifizierung wie erwartet funktioniert.

Voraussetzungen

Stellen Sie vor dem Start fest, dass Sie die Voraussetzungen für die Rolle erfüllen.

  1. Sie müssen einen Active Directory-Server ausführen und über Ihren RHEL-Rechner auf diesen zugreifen können. Eine Übersicht der Voraussetzungen finden Sie in der Microsoft-Dokumentation unter Join SQL Server on a Linux host to an Active Directory domain. Bei Problemen mit den Voraussetzungen finden Sie Informationen unter Troubleshoot Active Directory authentication for SQL Server on Linux and containers.
  2. Stellen Sie sicher, dass die DNS-Suche funktioniert. Sie sollten den Active Directory-Server mit seiner IP-Adresse und seinen kurzen und vollständigen DNS-Namen von Ihrem RHEL-Rechner aus erfolgreich per Ping erreichen können.
  3. Stellen Sie sicher, dass die Reverse-DNS-Suche funktioniert. Beim Ausführen des Befehls nslookup für die IP-Adresse des Active Directory-Servers muss der Name den richtigen DNS-Namen ergeben und der DNS-Name muss wiederum die richtige IP-Adresse ergeben.
  4. Stellen Sie sicher, dass Sie Zugriff und Anmeldedaten für einen Active Directory-Nutzer mit der Berechtigung zum Erstellen von Nutzerkonten und Service Principal Names (SPNs) in der Domain haben.

Vorbereiten eines Ansible Inventory

Das Inventory darf nur RHEL-Server enthalten, die Sie für die Active Directory-Authentifizierung konfigurieren möchten. In diesem Beispiel wird die Inventory-Datei inventory.ymlverwendet, die einen einzelnen RHEL-Knoten enthält rhel-sql-server.example.com:

$ cat inventory.yml
---
all:
hosts:
rhel-sql-server.example.com

Anwenden der Rolle

Als Nächstes benötigen Sie ein Playbook, um die Authentifizierung mit Active Directory zu konfigurieren. Dies ist am einfachsten, wenn Sie sich zunächst ein Beispiel für ein Playbook ansehen, Variablen und Parameter nach Bedarf anpassen und es als Basis für Ihr eigenes Playbook verwenden.

Beachten Sie, dass für die Rolle einige Passwörter mit Variablen festgelegt werden müssen. Die Beispiele in diesem Artikel stellen diese Variablen in Klartext bereit. In der Produktion müssen Sie jedoch Ansible Vault verwenden, um Passwörter zu verschlüsseln.

Beispiel-Playbook

Hier ist ein Beispiel-Playbook, das als playbook.ymlgespeichert ist. Es konfiguriert die Authentifizierung mit Active Directory:

---
- name: Configure with AD server authentication
hosts: all
vars:
# General variables
mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula: true
mssql_accept_microsoft_cli_utilities_for_sql_server_eula: true
mssql_accept_microsoft_sql_server_standard_eula: true
mssql_version: 2022
mssql_password: "p@55w0rD"
mssql_edition: Evaluation
mssql_manage_firewall: true
# AD Integration required variables
mssql_ad_configure: true
mssql_ad_sql_user_name: sqluser
mssql_ad_sql_password: "p@55w0rD1"
ad_integration_realm: domain.com
ad_integration_user: Administrator
ad_integration_password: Secret123
# AD Integration optional variables
mssql_ad_sql_user_dn: "CN=sqluser,CN=Users,DC=DOMAIN,DC=COM"
mssql_ad_netbios_name: domain

Die Variablen im Beispiel-Playbook sind in 3 Abschnitte unterteilt: allgemeine, erforderliche und optionale Variablen.

Allgemeine Variablen

Variablen, welche die Endnutzer-Lizenzvereinbarung (EULA) akzeptieren, müssen auf true festgelegt werden, um zu bestätigen, dass Sie den Bedingungen des Pakets mssql-Server zustimmen. Dazu zählen:

  • mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula
  • mssql_accept_microsoft_cli_utilities_for_sql_server_eula
  • mssql_accept_microsoft_sql_server_standard_eula

Weitere Variablen:

  • mssql_version definiert die Version (2017, 2019 oder 2022) des SQL Servers, den Sie verwalten möchten.
  • mssql_password legt das Passwort für den sa Nutzer fest
  • mssql_edition definiert die Edition, die für SQL Server konfiguriert werden soll
  • mssql_manage_firewall aktiviert die Firewall und öffnet die erforderlichen Ports. Dies ist eine optionale Variable. Verwenden Sie diese Option nur, wenn die Rolle die Firewall für Sie verwalten soll.

Erforderliche Variablen für die AD-Integration

Diese Variablen sind erforderlich:

  • mssql_ad_configure: Gibt an, ob die Active Directory-Authentifizierung konfiguriert werden soll.
  • mssql_ad_sql_user_name: Name der Nutzerin oder des Nutzers, der auf dem Active Directory-Server erstellt werden soll, um die Authentifizierung für SQL Server zu aktivieren. Die Rolle verwendet adutil, was erfordert, dass Nutzer mit der Berechtigung für den Zugriff als privilegierte Nutzer erstellt werden.
  • mssql_ad_sql_password: Passwort für die Nutzer, die erstellt werden.
  • ad_integration_realm: Name des Active Directory-Realm.
  • ad_integration_user: Name der berechtigten Nutzer in Active Directory. Diese Nutzer müssen bereits in der Domain vorhanden sein.
  • ad_integration_password: Passwort für die Nutzer.

Optionale Variablen für die AD-Integration

Diese Variablen sind optional:

  • mssql_ad_sql_user_dn: Sie müssen diese Variable festlegen, wenn Ihr AD-Server Nutzerkonten in einer benutzerdefinierten Organisationseinheit (OU, Organizational Unit) und nicht in der Standard-Organisationseinheit für Nutzer speichert. Standardmäßig erstellt die Rolle den definierten Namen basierend auf den Werten, die für die Variablen mssql_ad_sql_user_name und ad_integration_realm bereitgestellt werden, und verwendet die Nutzer OU (beispielsweise CN=sqluser,CN=Users, DC=DOMAIN,DC=COM). Sie können diesen Namen überschreiben, indem Sie einen definierten Namen angeben.
  • mssql_ad_net bios_name: Sie müssen diese Variable festlegen, wenn der NetBIOS-Domain-Name Ihres AD-Servers nicht der ersten Subdomain des Domain-Namens entspricht, den Sie mit der Variablen ad_integration_realm bereitstellen (Sie haben beispielsweise ad_integration_realm zu domain.contoso.com festgelgt, aber Ihr NetBIOS Domain Name ist nicht domain.) Dieser Wert wird zum Erstellen der {{ mssql_ad_netBIOS_name }}\{ad_integration_user }}-Anmeldung in SQL Server verwendet.

Ausführen der Ansible-Rolle

Wenn die Voraussetzungen erfüllt sind und das Ansible Inventory und das Playbook vorliegen, können Sie das Playbook ausführen.

$ ansible-playbook -i inventory.yml playbook.yml

Hinzufügen von Domain-Nutzern zu SQL Server

Bevor ein Nutzer sich anmelden kann, müssen Sie sie zu SQL Server hinzufügen. Führen Sie dazu den folgenden T-SQL-Befehl für die einzelnen AD Domain-Nutzer aus:

CREATE LOGIN \[<domain>**<username>*\] FROM WINDOWS;

Aktivieren zusätzlicher Verschlüsselungsarten

Nachdem Sie die Rolle zum Konfigurieren der Active Directory-Authentifizierung ausgeführt haben, müssen Sie dem mit der Variablen mssql_ad_sql_user_name definierten Nutzer in Active Directory die Kerberos-Verschlüsselungstypen AES128 und AES256 hinzufügen. Sie können dies mit der Active Directory-Webbenutzeroberfläche oder mit PowerShell durchführen.

Web-Benutzeroberfläche (UI)

Öffnen Sie die Web-UI Ihres AD Servers, und melden Sie sich an.

  1. Navigieren Sie zu Tools > Active Directory Users and Computers > [domain] > Users > [sqluser] > Account
  2. Wählen Sie in der Liste Account options den Eintrag This account supports Kerberos AES 128 bit Encryption und This account supports Kerberos AES 256 bit Encryption aus.
  3. Klicken Sie auf Apply.

PowerShell

Führen Sie in der PowerShell den Befehl Set-ADUser aus und ersetzen Sie <sqluser> durch den Nutzernamen, den Sie als Variable mssql_ad_sql_user_name festgelegt haben:

Set-ADUser -Identity <sqluser> -KerberosEncryptionType AES128,AES256

Verifizieren der Authentifizierung mit Active Directory

Nachdem Sie nun die Rolle zum Konfigurieren der AD Server-Authentifizierung ausgeführt und Ihrem Nutzer <sqluser> die erforderlichen Verschlüsselungstypen hinzugefügt haben, können Sie sich mit einer der folgenden Methoden authentifizieren:

  • Windows oder RHEL: Azure Data Studio (ADS)
  • Windows: SQL Server Management Studio (SSMS)
  • RHEL: Linux-Terminal

Azure Data Studio (ADS)

Wenn Sie ADS noch nicht installiert haben, befolgen Sie die Microsoft-Dokumentation, um Azure Data Studio herunterzuladen und zu installieren.

Starten Sie ADS nach der Installation.

  1. Klicken Sie auf Create a connection.
  2. Wählen Sie in der Liste Authentication type den Eintrag Windows Authentication aus.
  3. Füllen Sie die anderen Felder aus, und klicken Sie auf Connect

Sie können jetzt SQL Server verwenden.

Azure Data Studio user interface

SQL Server Management Studio (SSMS)

Melden Sie sich zunächst unter Windows als der Nutzer an, den Sie für die Anmeldung bei SQL Server verwenden möchten, und starten Sie dann SSMS.

  1. Wählen Sie im Bereich Connect to Server den Eintrag Database Engine aus der Liste Server type aus.
  2. Geben Sie im Feld Server name den vollständig qualifizierten Domain Name (FQDN) der RHEL-Instanz ein, für die Sie die Rolle ausgeführt haben
  3. Wählen Sie in der Liste Authentication die Option Windows Authenticationaus, und füllen Sie diese Felder aus:
    • Server type: Database Engine
    • Server name: Geben Sie Ihren Servernamen ein
    • Authentication: Windows Authentication
  4. Klicken Sie auf Connect
SQL Server Management Studio user interface

Linux-Terminal

Zum Verifizieren der Authentifizierung über ein Linux-Terminal melden Sie sich per SSH als der von der Rolle erstellte Nutzer am Server an.

$ ssh -l <sqluser>@<domain.com> <client.domain.com>

Rufen Sie ein Kerberos-Ticket für den Nutzer von Active Directory ab, den Sie authentifizieren möchten:

$ kinit <AD_user_name>@<DOMAIN.COM>

Verwenden Sie sqlcmd, um sich bei SQL Server anzumelden und beispielsweise eine Abfrage zum Abrufen des aktuellen Nutzers auszuführen:

/opt/mssql-tools/bin/sqlcmd -S. -Q 'SELECT SYSTEM_USER'

Fazit

Mit der Rolle microsoft.sql.server können Sie die Integration mit Active Directory für die Nutzerauthentifizierung automatisieren. Die Rolle verwendet die Rolle redhat.rhel_system_roles.ad_integration, um eine Verbindung zu Active Directory herzustellen. Die Rolle redhat.rhel_system_roles.firewall dient der Konfiguration der Firewall. Dies erfolgt auf konsistente Weise. Red Hat bietet weitere Systemrollen zum Verwalten verschiedener Services und Tools auf RHEL. Wenn Sie Ihre Workflows automatisieren möchten, sehen Sie sich die Liste der verfügbaren RHEL-Systemrollen an und lesen Sie die Dokumentation oder die entsprechenden Blogbeiträge zu diesem Thema. Das Angebot ist groß!

Wenn Sie sich mehr über microsoft.sql.server Rolle erfahren wollen, empfehlen wir Ihnen einen Blick in die offizielle Dokumentation.


Über den Autor

Sergei Petrosian is a technical writer at Red Hat working on Satellite and Foreman documentation.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

Nach Thema durchsuchen

automation icon

Automatisierung

Das Neueste zum Thema IT-Automatisierung für Technologien, Teams und Umgebungen

AI icon

Künstliche Intelligenz

Erfahren Sie das Neueste von den Plattformen, die es Kunden ermöglichen, KI-Workloads beliebig auszuführen

open hybrid cloud icon

Open Hybrid Cloud

Erfahren Sie, wie wir eine flexiblere Zukunft mit Hybrid Clouds schaffen.

security icon

Sicherheit

Erfahren Sie, wie wir Risiken in verschiedenen Umgebungen und Technologien reduzieren

edge icon

Edge Computing

Erfahren Sie das Neueste von den Plattformen, die die Operations am Edge vereinfachen

Infrastructure icon

Infrastruktur

Erfahren Sie das Neueste von der weltweit führenden Linux-Plattform für Unternehmen

application development icon

Anwendungen

Entdecken Sie unsere Lösungen für komplexe Herausforderungen bei Anwendungen

Original series icon

Original Shows

Interessantes von den Experten, die die Technologien in Unternehmen mitgestalten