Udostępnij za pomocą


Szyfrowanie i sprawdzanie poprawności certyfikatów w OLE DB

Dotyczy do:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSystem Platform Analitycznych (PDW)Baza danych SQL w Microsoft Fabric

pobierz sterownik OLE DB

Program SQL Server zawsze szyfruje pakiety sieciowe skojarzone z logowaniem. Jeśli podczas uruchamiania na serwerze nie zostanie udostępniony żaden certyfikat, program SQL Server generuje certyfikat z podpisem własnym, który jest używany do szyfrowania pakietów logowania.

Certyfikaty z podpisem własnym nie gwarantują bezpieczeństwa. Zaszyfrowane uzgadnianie jest oparte na NT LAN Manager (NTLM). Zdecydowanie zaleca się aprowizację weryfikowalnego certyfikatu w SQL Server w celu zapewnienia bezpiecznej łączności. Protokół TLS (Transport Security Layer) można zabezpieczyć tylko za pomocą weryfikacji certyfikatu.

Aplikacje mogą również żądać szyfrowania całego ruchu sieciowego przy użyciu słów kluczowych parametrów połączenia lub właściwości połączenia. Słowa kluczowe to "Szyfruj" dla OLE DB w przypadku używania ciągu dostawcy z IDbInitialize::Initialize, lub "Użyj szyfrowania dla danych" dla ADO i OLE DB w przypadku używania ciągu inicjującego z IDataInitialize. Szyfrowanie można również skonfigurować na komputerze klienckim w rejestrze przy użyciu opcji Force Protocol Encryption (Wymuś szyfrowanie protokołu ). Aby uzyskać więcej informacji, zobacz Ustawienia rejestru. Domyślnie szyfrowanie całego ruchu sieciowego dla połączenia wymaga certyfikatu aprowizacji na serwerze. Ustawiając klienta tak, aby ufał certyfikatowi na serwerze, możesz stać się podatny na ataki typu man-in-the-middle. Jeśli wdrażasz weryfikowalny certyfikat na serwerze, upewnij się, że zmieniłeś ustawienia klienta dotyczące ufania certyfikatowi na FALSE.

Aby uzyskać informacje o słowach kluczowych parametrów połączenia, zobacz Używanie słów kluczowych parametrów połączenia ze sterownikiem OLE DB dla SQL Server.

Aby włączyć szyfrowanie, które ma być używane, gdy certyfikat nie jest aprowizowany na serwerze, Force Protocol Encryption należy ustawić Trust Server Certificate i klienta. W takim przypadku szyfrowanie używa certyfikatu serwera z podpisem własnym bez sprawdzania poprawności, jeśli na serwerze nie jest obsługiwany żaden weryfikowalny certyfikat.

Zachowanie szyfrowania i sprawdzania poprawności certyfikatu

Ustawienia aplikacji nigdy nie obniżają poziomu zabezpieczeń ustawionego w rejestrze, ale mogą go wzmocnić. Aby uzyskać więcej informacji, zobacz Ustawienia rejestru. Jeśli na przykład Force Protocol Encryption nie jest ustawiona dla klienta, aplikacja może sama zażądać szyfrowania. Aby zagwarantować szyfrowanie nawet wtedy, gdy certyfikat serwera nie jest aprowizowany, aplikacja może zażądać szyfrowania i włączyć TrustServerCertificate. Jeśli TrustServerCertificate jednak nie jest włączona w konfiguracji rejestru klienta, nadal wymagany jest aprowizowany certyfikat serwera.

Wersja 19 sterownika OLE DB dla programu SQL Server wprowadza zmiany powodujące niezgodność w interfejsach API związanych z szyfrowaniem. Aby uzyskać więcej informacji, zobacz Zmiany właściwości szyfrowania.

Wersja główna 19

W poniższej tabeli opisano ocenę ustawień szyfrowania:

Ustawienia rejestru klienta Force Protocol Encryption Parametry połączenia/atrybut połączenia Szyfruj/Użyj szyfrowania danych Wynikowe szyfrowanie
0 (wartość domyślna) Nie/opcjonalnie Opcjonalnie
0 (wartość domyślna) Tak/Obowiązkowe (domyślnie) Obowiązkowy
0 (wartość domyślna) Surowy Surowy
1 Nie/opcjonalnie Obowiązkowy
1 Tak/Obowiązkowe (domyślnie) Obowiązkowy
1 Surowy Surowy
2 Ignorowane Surowy

W poniższej tabeli opisano wynikowe szyfrowanie i walidację:

Szyfrowanie Ustawienie rejestru klienta certyfikatu serwera zaufania Parametry połączenia/atrybut połączenia Certyfikat serwera zaufania Wynik
Opcjonalnie N/A N/A Szyfrowanie odbywa się tylko dla pakietów LOGIN.
Obowiązkowy 0 Ignorowane Szyfrowanie odbywa się tylko wtedy, gdy istnieje weryfikowalny certyfikat serwera, w przeciwnym razie próba połączenia zakończy się niepowodzeniem.
Obowiązkowy 1 (ustawienie domyślne) Nie (domyślnie) Szyfrowanie odbywa się tylko wtedy, gdy istnieje weryfikowalny certyfikat serwera, w przeciwnym razie próba połączenia zakończy się niepowodzeniem.
Obowiązkowy 1 (ustawienie domyślne) Tak Szyfrowanie jest zawsze wykonywane, ale może korzystać z certyfikatu serwera z podpisem własnym.
Surowy N/A N/A Szyfrowanie odbywa się tylko wtedy, gdy istnieje weryfikowalny certyfikat serwera, w przeciwnym razie próba połączenia zakończy się niepowodzeniem.

Uwaga / Notatka

W wersjach od 19.0 do 19.3 podczas instalacji domyślne ustawienie rejestru klienta certyfikatu serwera zaufania jest odczytywane z ustawienia rejestru w wersji 18, jeśli istnieje.

Ostrzeżenie

Powyższa tabela zawiera jedynie przewodnik po zachowaniu systemu w różnych konfiguracjach. Aby zapewnić bezpieczną łączność, upewnij się, że zarówno klient, jak i serwer wymagają szyfrowania (aby uzyskać informacje o konfiguracji po stronie serwera, zobacz Konfigurowanie ustawień szyfrowania w SQL Server). Upewnij się również, że serwer ma weryfikowalny certyfikat i że TrustServerCertificate ustawienie na kliencie jest ustawione na wartość FALSE.

Uwaga / Notatka

Począwszy od wersji 19.2 sterownika OLE DB, połączenia TDS 8.0 można skonfigurować do korzystania z protokołu TLS 1.3. Aby uzyskać więcej informacji, zobacz Obsługa protokołu TLS 1.3.

Wersja główna 18 z nowymi metodami uwierzytelniania

W przypadku wersji 18.x.x, w celu zwiększenia bezpieczeństwa, gdy używane są nowe słowa kluczowe parametrów połączenia uwierzytelniania lub tokenu dostępu (lub odpowiadające im właściwości), sterownik zastępuje domyślną wartość szyfrowania, ustawiając ją na yes. Zastępowanie odbywa się w czasie inicjowania obiektu źródła danych. Jeśli szyfrowanie jest ustawione przed inicjalizacją w dowolny sposób, wartość jest przestrzegana i nie jest zastępowana.

Uwaga / Notatka

W aplikacjach ADO i w aplikacjach, które uzyskują IDBInitialize interfejs za pośrednictwem IDataInitialize::GetDataSourceprogramu , komponent podstawowy implementujący interfejs jawnie ustawia szyfrowanie na wartość nodomyślną . W związku z tym nowe właściwości/słowa kluczowe uwierzytelniania uwzględniają to ustawienie, a wartość szyfrowania nie jest zastępowana. W związku z tym zaleca się , aby te aplikacje jawnie ustawiły Use Encryption for Data=true zastępowanie wartości domyślnej.

Aby zwiększyć bezpieczeństwo, nowe metody uwierzytelniania uwzględniają to TrustServerCertificate ustawienie (i odpowiadające mu słowa kluczowe/właściwości parametrów połączenia) niezależnie od ustawienia szyfrowania klienta. W związku z tym certyfikat serwera jest sprawdzany domyślnie. Sterownik określa, czy należy sprawdzić poprawność certyfikatu serwera w następujący sposób:

Ustawienie klienta certyfikatu serwera zaufania Parametry połączenia/atrybut połączenia Certyfikat serwera zaufania Walidacja certyfikatu
0 Nie (domyślnie) Tak
0 Tak Tak
1 Nie (domyślnie) Tak
1 Tak Nie.

W poniższej tabeli opisano ocenę ustawień szyfrowania:

Ustawienie klienta Force Protocol Encryption Parametry połączenia/atrybut połączenia Szyfruj/Użyj szyfrowania danych Wynikowe szyfrowanie
0 Nie (domyślnie) Nie.
0 Tak Tak
1 Nie (domyślnie) Tak
1 Tak Tak

W poniższej tabeli opisano wynikowe szyfrowanie i walidację:

Wynikowe szyfrowanie Walidacja certyfikatu Wynik
Nie. Nie. Szyfrowanie odbywa się tylko dla pakietów LOGIN.
Nie. Tak Szyfrowanie odbywa się dla pakietów LOGIN tylko wtedy, gdy istnieje weryfikowalny certyfikat serwera, w przeciwnym razie próba połączenia zakończy się niepowodzeniem.
Tak Nie. Szyfrowanie całego ruchu sieciowego odbywa się zawsze, ale może być używane przy użyciu certyfikatu serwera z podpisem własnym.
Tak Tak Szyfrowanie całego ruchu sieciowego odbywa się tylko wtedy, gdy istnieje weryfikowalny certyfikat serwera, w przeciwnym razie próba połączenia zakończy się niepowodzeniem.

Wersja główna 18 ze starszymi metodami uwierzytelniania

W poniższej tabeli opisano wyniki szyfrowania i walidacji dla starszych metod uwierzytelniania:

Ustawienie klienta Force Protocol Encryption Ustawienie klienta certyfikatu serwera zaufania Parametry połączenia/atrybut połączenia Szyfruj/Użyj szyfrowania danych Parametry połączenia/atrybut połączenia Certyfikat serwera zaufania Wynik
0 N/A Nie (domyślnie) N/A Szyfrowanie odbywa się tylko dla pakietów LOGIN.
0 N/A Tak Nie (domyślnie) Szyfrowanie całego ruchu sieciowego odbywa się tylko wtedy, gdy istnieje weryfikowalny certyfikat serwera, w przeciwnym razie próba połączenia zakończy się niepowodzeniem.
0 N/A Tak Tak Szyfrowanie całego ruchu sieciowego odbywa się zawsze, ale może być używane przy użyciu certyfikatu serwera z podpisem własnym.
1 0 Ignorowane Ignorowane Szyfrowanie całego ruchu sieciowego odbywa się tylko wtedy, gdy istnieje weryfikowalny certyfikat serwera, w przeciwnym razie próba połączenia zakończy się niepowodzeniem.
1 1 Nie (domyślnie) N/A Szyfrowanie całego ruchu sieciowego odbywa się zawsze, ale może być używane przy użyciu certyfikatu serwera z podpisem własnym.
1 1 Tak Nie (domyślnie) Szyfrowanie całego ruchu sieciowego odbywa się tylko wtedy, gdy istnieje weryfikowalny certyfikat serwera, w przeciwnym razie próba połączenia zakończy się niepowodzeniem.
1 1 Tak Tak Szyfrowanie całego ruchu sieciowego odbywa się zawsze, ale może być używane przy użyciu certyfikatu serwera z podpisem własnym.

Zobacz także

sterownik OLE DB dla funkcji programu SQL Server
Właściwości inicjalizacji i autoryzacji
Słowa kluczowe parametrów połączenia
Główne różnice między wersjami
Ustawienia rejestru