Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytický platformní systém (PDW)
Důležité
SQL Server Native Client (SNAC) není dodáván s:
- SQL Server 2022 (16.x) a novější verze
- SQL Server Management Studio 19 a novější verze
Pro vývoj nových aplikací se nedoporučuje nativní klient SQL Serveru (SQLNCLI nebo SQLNCLI11) a starší zprostředkovatel Microsoft OLE DB pro SQL Server (SQLOLEDB).
Pro nové projekty použijte jeden z následujících ovladačů:
Informace o SQLNCLI, které se dodává jako součást databázového stroje SQL Serveru (verze 2012 až 2019), naleznete v tomto support lifecycle exception.
SQL Server vždy šifruje síťové pakety spojené s protokolováním. Pokud se na serveru při spuštění nezřídil žádný certifikát, SQL Server vygeneruje certifikát podepsaný svým držitelem, který se používá k šifrování přihlašovacích paketů.
Certifikáty podepsané svým držitelem nezaručují bezpečnost. Šifrovaný handshake je založen na NT LAN Manager (NTLM). Pro zabezpečené připojení byste měli zřídit ověřitelný certifikát na SQL Serveru. Transport Security Layer (TLS) lze zabezpečit pouze pomocí ověření certifikátu.
Aplikace můžou také požadovat šifrování veškerého síťového provozu pomocí klíčových slov připojovacího řetězce nebo vlastností připojení. Klíčová slova jsou "Encrypt" pro ODBC a OLE DB při použití řetězce zprostředkovatele s IDbInitialize::Initialize, nebo "Použít šifrování pro data" pro ADO a OLE DB při použití inicializačního řetězce s IDataInitialize. Sql Server Configuration Manager to může nakonfigurovat také pomocí možnosti Vynucení šifrování protokolu a konfigurací klienta tak, aby požadoval šifrovaná připojení. Ve výchozím nastavení šifrování veškerého síťového provozu pro připojení vyžaduje, aby se na serveru zřídil certifikát. Nastavením klienta tak, aby důvěřoval certifikátu na serveru, jste zranitelní vůči útokům typu man-in-the-middle. Pokud na server nasadíte ověřitelný certifikát, ujistěte se, že změníte nastavení klienta o důvěryhodnosti certifikátu na FALSE.
Informace o klíčových slovech připojovacího řetězce naleznete v tématu Použití klíčových slov připojovacího řetězce s nativním klientem SQL Serveru.
Pokud chcete povolit šifrování, které se má použít v případě, že certifikát není zřízený na serveru, můžete použít sql Server Configuration Manager k nastavení možnosti Vynucené šifrování protokolu i certifikátu důvěryhodného serveru . V takovém případě šifrování používá certifikát serveru podepsaný svým držitelem bez ověření, pokud na serveru nebyl zřízen žádný ověřitelný certifikát.
Aplikace můžou také použít TrustServerCertificate klíčové slovo nebo jeho přidružený atribut připojení k zajištění toho, aby se šifrování uskutečnilo. Nastavení aplikace nikdy nesnižuje úroveň zabezpečení nastavenou nástrojem SQL Server Client Configuration Manager, ale může ji posílit. Pokud například pro klienta není nastavené vynucené šifrování protokolu , může aplikace požádat o šifrování sama. Pokud chcete zaručit šifrování i v případě, že certifikát serveru není zřízený, může aplikace požadovat šifrování a TrustServerCertificate. Pokud TrustServerCertificate ale není v konfiguraci klienta povolená, je stále vyžadován zřízený certifikát serveru. Následující tabulka popisuje všechny případy:
| Nastavení klienta Vynutit šifrování protokolu | Nastavení klienta certifikátu důvěryhodného serveru | Připojovací řetězec/atribut připojení Šifrování/Použití šifrování dat | Připojovací řetězec/atribut připojení Certifikát důvěryhodného serveru | Výsledek |
|---|---|---|---|---|
| Ne | není k dispozici | Ne (výchozí) | Ignorovaný | Nedojde k žádnému šifrování. |
| Ne | není k dispozici | Ano | Ne (výchozí) | K šifrování dochází pouze v případě, že existuje ověřitelný certifikát serveru, jinak se pokus o připojení nezdaří. |
| Ne | není k dispozici | Ano | Ano | K šifrování vždy dochází, ale může používat certifikát serveru podepsaný svým držitelem. |
| Ano | Ne | Ignorovaný | Ignorovaný | K šifrování dochází pouze v případě, že existuje ověřitelný certifikát serveru, jinak se pokus o připojení nezdaří. |
| Ano | Ano | Ne (výchozí) | Ignorovaný | K šifrování vždy dochází, ale může používat certifikát serveru podepsaný svým držitelem. |
| Ano | Ano | Ano | Ne (výchozí) | K šifrování dochází pouze v případě, že existuje ověřitelný certifikát serveru, jinak se pokus o připojení nezdaří. |
| Ano | Ano | Ano | Ano | K šifrování vždy dochází, ale může používat certifikát serveru podepsaný svým držitelem. |
Upozornění
Předchozí tabulka poskytuje pouze vodítko pro chování systému v různých konfiguracích. Pro zabezpečené připojení se ujistěte, že klient i server vyžadují šifrování. Také se ujistěte, že server má ověřitelný certifikát a že TrustServerCertificate nastavení v klientovi je nastavené na FALSE.
Zprostředkovatel OLE DB nativního klienta SQL Serveru
Zprostředkovatel OLE DB nativního klienta SQL Serveru podporuje šifrování bez ověření prostřednictvím přidání SSPROP_INIT_TRUST_SERVER_CERTIFICATE inicializační vlastnosti zdroje dat, která je implementována DBPROPSET_SQLSERVERDBINIT v sadě vlastností. Kromě toho se přidalo nové klíčové slovo TrustServerCertificatepřipojovacího řetězce. Přijímá yes nebo no hodnoty. no Je to výchozí hodnota. Při použití komponent služby přijímá true nebo false hodnoty. false Je to výchozí hodnota.
Další informace o vylepšeních sady DBPROPSET_SQLSERVERDBINIT vlastností naleznete v tématu Inicializace a autorizační vlastnosti (Nativní klient OLE DB Provider).
Ovladač ODBC nativního klienta SQL Serveru
Ovladač ODBC nativního klienta SQL Serveru podporuje šifrování bez ověření prostřednictvím přidání funkcí SQLSetConnectAttr a SQLGetConnectAttr .
SQL_COPT_SS_TRUST_SERVER_CERTIFICATE byla přidána k přijetí nebo SQL_TRUST_SERVER_CERTIFICATE_YESSQL_TRUST_SERVER_CERTIFICATE_NO, s SQL_TRUST_SERVER_CERTIFICATE_NO výchozím nastavením. Kromě toho se přidalo nové klíčové slovo TrustServerCertificatepřipojovacího řetězce. Přijímá yes nebo no hodnoty. no Je to výchozí hodnota.