Udostępnij za pomocą


Korzystanie ze zintegrowanego uwierzytelniania

pobierz sterownika ODBC

Sterownik MICROSOFT ODBC dla programu SQL Server w systemie Linux i macOS obsługuje połączenia korzystające ze zintegrowanego uwierzytelniania Kerberos. Obsługuje centrum dystrybucji kluczy MIT Kerberos (KDC) i współpracuje z Ogólnym interfejsem aplikacji usług zabezpieczeń (GSSAPI) oraz bibliotekami Kerberos v5.

Począwszy od wersji 17.6 sterownik obsługuje również zintegrowane uwierzytelnianie za pomocą identyfikatora Microsoft Entra ID (dawniej Azure Active Directory) przy użyciu konta federacyjnego, niezależnie od ograniczeń biblioteki systemowej. Aby uzyskać więcej informacji, zobacz Using Microsoft Entra ID (Korzystanie z identyfikatora Entra firmy Microsoft ).

Używanie zintegrowanego uwierzytelniania do nawiązywania połączenia z programem SQL Server z poziomu aplikacji ODBC

Zintegrowane uwierzytelnianie Kerberos można włączyć, określając Trusted_Connection=tak w parametrach połączenia programu SQLDriverConnect lub SQLConnect. Przykład:

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

Podczas nawiązywania połączenia za pomocą nazwy DSN można również dodać Trusted_Connection=yes do wpisu DSN w pliku odbc.ini.

Opcję -E opcji sqlcmd oraz opcję -T opcji bcp można również użyć do określenia zintegrowanego uwierzytelniania; zobacz Łączenie z narzędziem sqlcmd oraz Łączenie z narzędziem bcp po więcej informacji.

Upewnij się, że główna nazwa użytkownika klienta, który ma nawiązać połączenie z SQL Server, jest już uwierzytelniona za pomocą centrum dystrybucji kluczy Kerberos.

SerwerSPN i FailoverPartnerSPN nie są obsługiwane.

Wdrażanie aplikacji sterownika ODBC dla systemu Linux lub macOS przeznaczonej do uruchamiania jako usługi

Administrator systemu może wdrożyć aplikację do uruchamiania jako usługi korzystającej z uwierzytelniania Kerberos w celu nawiązania połączenia z programem SQL Server.

Najpierw należy skonfigurować protokół Kerberos na kliencie, a następnie upewnić się, że aplikacja może używać poświadczeń protokołu Kerberos domyślnego podmiotu zabezpieczeń.

Upewnij się, że używasz kinit lub PAM (Pluggable Authentication Module), aby uzyskać i buforować bilet TGT dla podmiotu używanego przez połączenie za pomocą jednej z następujących metod.

  • Uruchom polecenie kinit, przekazując główną nazwę i hasło.

  • Uruchom polecenie kinit, przekazując nazwę główną i lokalizację pliku keytab zawierającego klucz podmiotu zabezpieczeń utworzonego przez ktutilprogram .

  • Upewnij się, że logowanie do systemu zostało wykonane za pomocą PAM Kerberos.

Gdy aplikacja działa jako usługa, ponieważ poświadczenia protokołu Kerberos wygasają zgodnie z projektem, odnów poświadczenia, aby zapewnić ciągłą dostępność usługi. Sterownik ODBC nie odnawia samodzielnie poświadczeń; upewnij się, że istnieje cron zadanie lub skrypt, który okresowo uruchamia się w celu odnowienia poświadczeń przed ich wygaśnięciem. Aby uniknąć konieczności podawania hasła przy każdym odnowieniu, możesz użyć pliku keytab.

Konfiguracja i używanie protokołu Kerberos zawiera szczegółowe informacje na temat zabezpieczania usług w systemie Linux za pomocą Kerberos.

Śledzenie dostępu do bazy danych

Administrator bazy danych może utworzyć dziennik inspekcji dostępu do bazy danych podczas korzystania z kont systemowych w celu uzyskania dostępu do programu SQL Server przy użyciu zintegrowanego uwierzytelniania.

Logowanie do SQL Server używa konta systemowego i nie ma funkcji w systemie Linux do zaimpersonowania kontekstu zabezpieczeń. W związku z tym do określenia użytkownika jest wymagane więcej.

Aby przeprowadzić inspekcję działań w programie SQL Server w imieniu użytkowników innych niż konto systemowe, aplikacja musi używać Transact-SQL EXECUTE AS.

Aby zwiększyć wydajność aplikacji, aplikacja może używać buforowania połączeń z zintegrowanym uwierzytelnianiem i inspekcją. Jednak łączenie puli połączeń, zintegrowane uwierzytelnianie i inspekcja tworzy zagrożenie bezpieczeństwa, ponieważ menedżer sterowników unixODBC zezwala różnym użytkownikom na ponowne używanie połączeń w puli. Aby uzyskać więcej informacji, zobacz Buforowanie połączeń ODBC.

Przed ponownym użyciem aplikacja musi zresetować połączenia w puli, wykonując polecenie sp_reset_connection.

Zarządzanie tożsamościami użytkowników przy użyciu usługi Active Directory

Administrator systemu aplikacji nie musi zarządzać oddzielnymi zestawami poświadczeń logowania dla programu SQL Server. Istnieje możliwość skonfigurowania usługi Active Directory jako centrum dystrybucji kluczy (KDC) na potrzeby zintegrowanego uwierzytelniania. Aby uzyskać więcej informacji, zobacz Microsoft Kerberos .

Korzystanie z serwera połączonego i zapytań rozproszonych

Deweloperzy mogą wdrożyć aplikację korzystającą z serwera połączonego lub zapytań rozproszonych bez administratora bazy danych, który utrzymuje oddzielne zestawy poświadczeń SQL. W takiej sytuacji deweloper musi skonfigurować aplikację do używania zintegrowanego uwierzytelniania:

  • Użytkownik loguje się do komputera klienckiego i uwierzytelnia się na serwerze aplikacji.

  • Serwer aplikacji uwierzytelnia się jako inną bazę danych i nawiązuje połączenie z programem SQL Server.

  • Program SQL Server uwierzytelnia się jako użytkownik bazy danych w innej bazie danych (SQL Server).

Po skonfigurowaniu zintegrowanego uwierzytelniania poświadczenia zostaną przekazane do połączonego serwera.

Zintegrowane uwierzytelnianie i narzędzie sqlcmd

Aby uzyskać dostęp do programu SQL Server przy użyciu zintegrowanego uwierzytelniania, użyj opcji -Esqlcmd. Upewnij się, że konto, które uruchamia sqlcmd, jest skojarzone z domyślnym głównym klientem Kerberos.

Zintegrowane uwierzytelnianie i bcp

Aby uzyskać dostęp do programu SQL Server przy użyciu zintegrowanego uwierzytelniania, użyj opcji -Tbcp. Upewnij się, że konto, które uruchamia bcp, jest skojarzone z domyślnym podmiotem głównym klienta Kerberos.

Jest to błąd podczas używania -T z opcją -U lub -P .

Obsługiwana składnia dla głównej nazwy usługi zarejestrowanej przez program SQL Server

Składnia, którą używają SPN-y w ciągu połączenia lub atrybutach połączenia, jest następująca:

Składnia Description
MSSQLSvc/fqdn:port Domyślna nazwa SPN wygenerowana przez dostawcę, gdy jest używany protokół TCP. port to numer portu TCP. nazwa fqdn jest w pełni kwalifikowaną nazwą domeny.

Uwierzytelnianie komputera z systemem Linux lub macOS przy użyciu usługi Active Directory

Aby skonfigurować protokół Kerberos, wprowadź dane w krb5.conf pliku. krb5.conf znajduje się w /etc/ pliku , ale możesz odwołać się do innego pliku przy użyciu składni, np. export KRB5_CONFIG=/home/dbapp/etc/krb5.conf. Oto przykładowy krb5.conf plik:

[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  

Jeśli komputer z systemem Linux lub macOS jest skonfigurowany do używania protokołu DHCP (Dynamic Host Configuration Protocol) z serwerem DHCP systemu Windows dostarczającym serwery DNS do użycia, można użyć dns_lookup_kdc=true. Teraz możesz użyć protokołu Kerberos, aby zalogować się do domeny, wydając polecenie kinit alias@YYYY.CORP.CONTOSO.COM. Parametry przekazane do kinit są wrażliwe na wielkość liter, a komputer z programem SQL Server skonfigurowany do domeny musi mieć dodanego tego użytkownika alias@YYYY.CORP.CONTOSO.COM do logowania. Teraz możesz użyć zaufanych połączeń (Trusted_Connection=YES w parametrach połączenia, bcp -T lub sqlcmd -E).

Czas na komputerze z systemem Linux lub macOS oraz czas w centrum dystrybucji kluczy Kerberos (KDC) muszą być zbliżone. Upewnij się, że czas systemowy jest ustawiony poprawnie, np. przy użyciu protokołu NTP (Network Time Protocol).

Jeśli uwierzytelnianie Kerberos zakończy się niepowodzeniem, sterownik ODBC w systemie Linux lub macOS nie używa uwierzytelniania NTLM.

Aby uzyskać więcej informacji na temat uwierzytelniania komputerów z systemem Linux lub macOS przy użyciu usługi Active Directory, zobacz Uwierzytelnianie klientów systemu Linux przy użyciu usługi Active Directory. Aby uzyskać więcej informacji na temat konfigurowania protokołu Kerberos, zobacz dokumentację protokołu MIT Kerberos.

Zobacz też

Wytyczne dotyczące programowania

Notatki o wydaniu

Korzystanie z identyfikatora Entra firmy Microsoft