Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Ważne
Klient natywny SQL Servera (SNAC) nie jest dostarczany z:
- SQL Server 2022 (16.x) i nowsze wersje
- SQL Server Management Studio 19 i nowsze wersje
Program SQL Server Native Client (SQLNCLI lub SQLNCLI11) oraz starszy dostawca microsoft OLE DB dla programu SQL Server (SQLOLEDB) nie są zalecane w przypadku tworzenia nowych aplikacji.
W przypadku nowych projektów użyj jednego z następujących sterowników:
- sterownik Microsoft ODBC dla programu SQL Server
- sterownik Microsoft OLE DB dla programu SQL Server
W przypadku programu SQLNCLI dostarczanego jako składnik aparatu bazy danych programu SQL Server (wersje 2012–2019), proszę sprawdzić wyjątek cyklu wsparcia .
Program SQL Server zawsze szyfruje pakiety sieciowe skojarzone z logowaniem. Jeśli podczas uruchamiania nie zainicjowano obsługi administracyjnej certyfikatu, program SQL Server generuje certyfikat z podpisem własnym 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). Aby zapewnić bezpieczną łączność, należy aprowizować weryfikowalny certyfikat w programie SQL Server. 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 odBC i OLE DB w przypadku używania ciągu dostawcy z elementami IDbInitialize::Initialize
lub "Użyj szyfrowania dla danych" dla ADO i OLE DB podczas używania ciągu inicjowania za IDataInitialize
pomocą polecenia . Można to również skonfigurować za pomocą menedżera konfiguracji programu SQL Server przy użyciu opcji Wymuszanie szyfrowania protokołu i przez skonfigurowanie klienta do żądania zaszyfrowanych połączeń. Domyślnie szyfrowanie całego ruchu sieciowego dla połączenia wymaga aprowizowania certyfikatu na serwerze. Ustawiając klienta, aby ufał certyfikatowi na serwerze, jesteś narażony na ataki typu man-in-the-middle. Jeśli wdrożysz weryfikowalny certyfikat na serwerze, upewnij się, że zmienisz ustawienia klienta dotyczące zaufania certyfikatowi na FALSE
.
Aby uzyskać informacje o słowach kluczowych parametrów połączenia, zobacz Using Connection String Keywords with SQL Server Native Client (Używanie słów kluczowych parametrów połączenia z klientem natywnym programu SQL Server).
Aby włączyć szyfrowanie, które ma być używane, gdy certyfikat nie jest aprowizowany na serwerze, można użyć menedżera konfiguracji programu SQL Server do ustawienia opcji Wymuszanie szyfrowania protokołu i certyfikatu serwera zaufania . W takim przypadku szyfrowanie używa certyfikatu serwera z podpisem własnym bez sprawdzania poprawności, jeśli na serwerze nie zainicjowano obsługi administracyjnej certyfikatu weryfikowalnego.
Aplikacje mogą również używać słowa kluczowego lub skojarzonego TrustServerCertificate
z nim atrybutu połączenia, aby zagwarantować, że szyfrowanie odbywa się. Ustawienia aplikacji nigdy nie zmniejszają poziomu zabezpieczeń ustawionych przez program SQL Server Client Configuration Manager, ale mogą je wzmocnić. Jeśli na przykład dla klienta nie ustawiono szyfrowania wymuszonego protokołu , aplikacja może zażądać szyfrowania. Aby zagwarantować szyfrowanie nawet wtedy, gdy certyfikat serwera nie jest aprowizowany, aplikacja może zażądać szyfrowania i TrustServerCertificate
. Jeśli TrustServerCertificate
jednak nie jest włączona w konfiguracji klienta, aprowizowany certyfikat serwera jest nadal wymagany. W poniższej tabeli opisano wszystkie przypadki:
Wymuszanie ustawienia klienta szyfrowania protokołu | 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 |
---|---|---|---|---|
Nie. | N/A | Nie (ustawienie domyślne) | Ignorowane | Nie ma szyfrowania. |
Nie. | N/A | Tak | Nie (ustawienie domyślne) | Szyfrowanie odbywa się tylko wtedy, gdy istnieje weryfikowalny certyfikat serwera, w przeciwnym razie próba połączenia zakończy się niepowodzeniem. |
Nie. | N/A | Tak | Tak | Szyfrowanie zawsze występuje, ale może używać certyfikatu serwera z podpisem własnym. |
Tak | Nie. | Ignorowane | Ignorowane | Szyfrowanie odbywa się tylko wtedy, gdy istnieje weryfikowalny certyfikat serwera, w przeciwnym razie próba połączenia zakończy się niepowodzeniem. |
Tak | Tak | Nie (ustawienie domyślne) | Ignorowane | Szyfrowanie zawsze występuje, ale może używać certyfikatu serwera z podpisem własnym. |
Tak | Tak | Tak | Nie (ustawienie domyślne) | Szyfrowanie odbywa się tylko wtedy, gdy istnieje weryfikowalny certyfikat serwera, w przeciwnym razie próba połączenia zakończy się niepowodzeniem. |
Tak | Tak | Tak | Tak | Szyfrowanie zawsze występuje, ale może używać certyfikatu serwera z podpisem własnym. |
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. Upewnij się również, że serwer ma weryfikowalny certyfikat i że TrustServerCertificate
ustawienie na kliencie jest ustawione na FALSE
wartość .
Dostawca OLE DB natywnego klienta programu SQL Server
Dostawca OLE DB natywnego klienta programu SQL Server obsługuje szyfrowanie bez walidacji przez dodanie SSPROP_INIT_TRUST_SERVER_CERTIFICATE
właściwości inicjowania źródła danych, która jest implementowana w DBPROPSET_SQLSERVERDBINIT
zestawie właściwości. Ponadto dodano nowe słowo kluczowe parametrów połączenia , TrustServerCertificate
. Akceptuje yes
lub no
wartości; no
jest wartością domyślną. W przypadku korzystania ze składników usługi akceptuje true
lub false
wartości; false
jest wartością domyślną.
Aby uzyskać więcej informacji na temat ulepszeń zestawu DBPROPSET_SQLSERVERDBINIT
właściwości, zobacz Inicjowanie i autoryzacja Właściwości (natywny dostawca OLE DB klienta natywnego).
Sterownik ODBC klienta natywnego programu SQL Server
Sterownik ODBC klienta natywnego programu SQL Server obsługuje szyfrowanie bez walidacji za pomocą dodatków do funkcji SQLSetConnectAttr i SQLGetConnectAttr .
SQL_COPT_SS_TRUST_SERVER_CERTIFICATE
dodano polecenie w celu zaakceptowania elementu SQL_TRUST_SERVER_CERTIFICATE_YES
lub SQL_TRUST_SERVER_CERTIFICATE_NO
, z SQL_TRUST_SERVER_CERTIFICATE_NO
ustawieniem domyślnym. Ponadto dodano nowe słowo kluczowe parametrów połączenia , TrustServerCertificate
. Akceptuje yes
lub no
wartości; no
jest wartością domyślną.