Nutzung der Integrierten Authentifizierung

ODBC-Treiber herunterladen

Der Microsoft ODBC Driver for SQL Server unter Linux und macOS unterstützt Verbindungen, die eine integrierte Kerberos-Authentifizierung verwenden. Er unterstützt das MIT Kerberos Key Distribution Center (KDC) und kann mit der Generic Security Services Anwendungsprogramm-Schnittstelle (GSSAPI) und mit Kerberos v5-Bibliotheken ausgeführt werden.

Ab Version 17.6 unterstützt der Treiber auch die integrierte Authentifizierung mit Microsoft Entra ID (ehemals Azure Active Directory) unter Verwendung eines Verbundkontos, und zwar ungeachtet der Einschränkungen der Systembibliothek. Weitere Informationen finden Sie unter Verwenden von Microsoft Entra ID.

Herstellen einer Verbindung zu SQL Server über eine ODBC-Anwendung mithilfe der integrierten Authentifizierung

Sie können eine integrierte Kerberos-Authentifizierung aktivieren, indem Sie Trusted_Connection=yes in der Verbindungszeichenfolge von SQLDriverConnect oder SQLConnectangeben. Beispiel:

Driver='ODBC Driver 18 for SQL Server';Server=your_server;Encrypt=yes;Trusted_Connection=yes  

Beim Herstellen einer Verbindung mit einem DSN können Sie auch Trusted_Connection=yes zum DSN-Eintrag in odbc.ini hinzufügen.

Die -E-Option von sqlcmd und die -T-Option von bcp können ebenfalls zum Festlegen der integrierten Authentifizierung verwendet werden. Weitere Informationen dazu finden Sie unter Connecting with sqlcmd (Herstellen einer Verbindung mit sqlcmd) und Connecting with bcp (Herstellen einer Verbindung mit bcp).

Stellen Sie sicher, dass der Clientprinzipal, der mit SQL Server verbunden werden soll, bereits mit Kerberos KDC authentifiziert ist.

ServerSPN und FailoverPartnerSPN werden nicht unterstützt.

Bereitstellen einer ODBC-Treiberanwendung zur Ausführung als Dienst unter Linux oder macOS

Ein Systemadministrator kann eine Anwendung bereitstellen, die als Dienst laufen soll, der eine Kerberos-Authentifizierung verwendet, um sich mit SQL Serverzu verbinden.

Sie müssen zuerst Kerberos auf dem Client konfigurieren und anschließend sicherstellen, dass die Anwendung die Kerberos-Anmeldeinformationen des Prinzipals Standard verwenden kann.

Stellen Sie sicher, dass Sie kinit oder PAM (Pluggable Authentication Module) verwenden, um das TGT für den Prinzipal, der die Verbindung verwendet, abzurufen und zwischenzuspeichern:

  • Führen Sie kinit aus und geben Sie Prinzipalnamen und -kennwort an.

  • Führen Sie kinit aus und geben Sie einen Prinzipalnamen und einen Speicherort einer Schlüsseltabellendatei an, die den von ktutil erstellten Prinzipalschlüssel enthält.

  • Stellen Sie sicher, dass die Anmeldung beim System mithilfe des Kerberos-PAM (Pluggable Authentication Module) vorgenommen wurde.

Wenn eine Anwendung als Dienst ausgeführt wird, da die Kerberos-Anmeldeinformationen programmbedingt ablaufen, erneuern Sie die Anmeldeinformationen, um eine kontinuierliche Verfügbarkeit des Diensts sicherzustellen. Der ODBC-Treiber erneuert Anmeldeinformationen nicht selbst. Stellen Sie also sicher, dass regelmäßig ein cron-Auftrag oder -Skript ausgeführt wird, um die Anmeldeinformationen zu erneuern, bevor sie ablaufen. Sie können eine Schlüsseltabellendatei verwenden, um zu vermeiden, dass das Kennwort für jede Erneuerung angegeben werden muss.

Kerberos-Konfiguration und Verwendung bietet ausführliche Informationen zu Methoden zum kerberisieren von Diensten unter Linux.

Nachverfolgen von Zugriffen auf eine Datenbank

Ein Datenbankadministrator kann einen Audit-Trail des Zugriffs auf eine Datenbank erstellen, wenn Systemkonten genutzt werden, um mithilfe integrierter Authentifizierung auf SQL Server zuzugreifen.

Beim Anmelden bei SQL Server wird das Systemkonto verwendet und es gibt keine Funktionen für Linux, um die Identität des Sicherheitskontexts zu wechseln. Aus diesem Grund muss der Benutzer genauer bestimmt werden.

Zur Überwachung von Aktivitäten in SQL Server unter einer anderen Identität als dem Systemkonto muss die Anwendung die Transact-SQL-Anweisung EXECUTE AS (Ausführen als) verwenden.

Zum Verbessern der Anwendungsleistung kann eine Anwendung Verbindungspooling mit integrierten Authentifizierung und Überwachung verwenden. Das Kombinieren von Verbindungspooling, integrierter Authentifizierung und Überwachung stellt jedoch ein Sicherheitsrisiko dar, da der UnixODBC-Treiber-Manager unterschiedlichen Benutzern ermöglicht, gepoolte Verbindungen wiederzuverwenden. Weitere Informationen finden Sie unter ODBC-Verbindungspooling.

Vor der Wiederverwendung muss eine Anwendung gepoolte Verbindungen durch Ausführen von sp_reset_connection zurücksetzen.

Verwalten von Benutzeridentitäten mithilfe von Active Directory

Ein Systemadministrator, der für Anwendungen zuständig ist, muss keine separaten Sätze von Anmeldeinformationen für SQL Serververwalten. Es ist möglich, Active Directory als ein Schlüsselverteilungscenter (KDC) für die integrierte Authentifizierung zu konfigurieren. Weitere Informationen finden Sie im Artikel zu Microsoft Kerberos.

Verbindungsserver und verteilte Abfragen nutzen

Entwickler können eine Anwendung bereitstellen, die einen Verbindungsserver oder verteilte Abfragen nutzt. Dies geschieht ohne einen Datenbankadministrator, der separate Sätze von SQL-Anmeldeinformationen verwaltet. In diesem Fall muss ein Entwickler eine Anwendung so konfigurieren, dass sie integrierte Authentifizierung nutzt:

  • Der Benutzer meldet sich bei einem Clientcomputer an und authentifiziert sich beim Anwendungsserver.

  • Der Anwendungsserver ist mit anderem Datenbanknamen authentifiziert und stellt eine Verbindung mit SQL Server her.

  • SQL Server ist als Datenbankbenutzer bei einer anderen Datenbank (SQL Server) authentifiziert.

Nachdem die integrierte Authentifizierung konfiguriert ist, werden Anmeldeinformationen für den Verbindungsserver übergeben.

Integrierte Authentifizierung und sqlcmd

Verwenden Sie für den Zugriff auf SQL Server mithilfe der integrierten Authentifizierung die -E-Option sqlcmd. Stellen Sie sicher, dass das Konto, auf dem sqlcmd ausgeführt wird, dem Kerberos-Standardclientprinzipal zugeordnet ist.

Integrierte Authentifizierung und bcp

Verwenden Sie für den Zugriff auf SQL Server mithilfe der integrierten Authentifizierung die -T-Option bcp. Stellen Sie sicher, dass das Konto, auf dem bcp ausgeführt wird, dem Kerberos-Standardclientprinzipal zugeordnet ist.

Es ist ein Fehler, -T mit den Optionen -U oder -P zu verwenden.

Unterstützte Syntax für einen von SQL Server registrierten SPN

Die Syntax, die SPNs in den Attributen für Verbindungszeichenfolgen und Verbindungen verwenden, lautet wie folgt:

Syntax BESCHREIBUNG
MSSQLSvc/fqdn:port Der vom Anbieter erstellte Standard-SPN, wenn TCP verwendet wird. port ist eine TCP-Portnummer. fqdn ist ein vollqualifizierter Domänenname.

Authentifizieren eines Linux- oder macOS-Computers mit Active Directory

Geben Sie zum Konfigurieren von Kerberos Daten in die Datei krb5.conf ein. krb5.conf befindet sich in /etc/, mithilfe der Syntax export KRB5_CONFIG=/home/dbapp/etc/krb5.conf können Sie jedoch auf eine andere Datei verweisen. Im Folgenden finden Sie eine krb5.conf-Beispieldatei:

[libdefaults]  
default_realm = YYYY.CORP.CONTOSO.COM  
dns_lookup_realm = false  
dns_lookup_kdc = true  
ticket_lifetime = 24h  
forwardable = yes  
  
[domain_realm]  
.yyyy.corp.contoso.com = YYYY.CORP.CONTOSO.COM  
.zzzz.corp.contoso.com = ZZZZ.CORP.CONTOSO.COM  

Wenn Ihr Linux- oder macOS-Computer zur Verwendung des Dynamic Host Configuration-Protokolls (DHCP) mit einem Windows-DHCP-Server konfiguriert ist, der die zu verwendenden DNS-Server bereitstellt, können Sie dns_lookup_kdc=true verwenden. Jetzt können Sie Kerberos verwenden, um sich bei Ihrer Domäne anzumelden, indem Sie den Befehl kinit alias@YYYY.CORP.CONTOSO.COM verwenden. Parameter, die an kinit übergeben werden, berücksichtigen die Groß-/Kleinschreibung, und der SQL Server-Computer, der für die Domäne konfiguriert wurde, muss den Benutzer alias@YYYY.CORP.CONTOSO.COM für die Anmeldung aufweisen. Sie können nun vertrauenswürdige Verbindungen (Trusted_Connection=YES in einer Verbindungszeichenfolge bcp -T oder sqlcmd -E) verwenden.

Die Uhrzeit auf dem Linux- oder macOS-Computer und die Uhrzeit im Schlüsselverteilungscenter müssen nah aneinander liegen. Stellen Sie sicher, dass die Systemzeit richtig eingestellt ist, d.h., dass die Network Time Protocol (NTP) verwendet wird.

Wenn die Kerberos-Authentifizierung fehlschlägt, verwendet der ODBC-Treiber unter Linux oder macOS nicht die NTLM-Authentifizierung.

Weitere Informationen zur Authentifizierung Ihres Linux- oder macOS-Computers mit Active Directory finden Sie unter Linux-Clients mit Active Directory authentifizieren. Weitere Informationen zur Konfiguration von Kerberos finden Sie in der Kerberos-Dokumentation des MIT.

Weitere Informationen

Programmierrichtlinien

Versionsanmerkungen

Verwenden von Microsoft Entra ID