Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Piattaforma di strumenti analitici (PDW)
Importante
SQL Server Native Client (SNAC) non viene fornito con:
- SQL Server 2022 (16.x) e versioni successive
- SQL Server Management Studio 19 e versioni successive
SQL Server Native Client (SQLNCLI o SQLNCLI11) e il provider OLE DB Microsoft legacy per SQL Server (SQLOLEDB) non sono consigliati per lo sviluppo di nuove applicazioni.
Per i nuovi progetti, usare uno dei driver seguenti:
Per SQLNCLI fornito come componente del motore di database di SQL Server (versioni dal 2012 al 2019), vedere questa Eccezione relativa al ciclo di vita del supporto.
SQL Server esegue sempre la crittografia dei pacchetti di rete associati all'accesso. Se non è stato eseguito il provisioning di alcun certificato nel server all'avvio, SQL Server genera un certificato autofirmato usato per crittografare i pacchetti di accesso.
I certificati autofirmati non garantiscono la sicurezza. Lo handshake crittografato è basato su NT LAN Manager (NTLM). È consigliabile effettuare il provisioning di un certificato verificabile in SQL Server per la connettività sicura. Il protocollo TLS (Transport Security Layer) può essere reso sicuro solo con la convalida del certificato.
Le applicazioni possono anche richiedere la crittografia di tutto il traffico di rete usando parole chiave della stringa di connessione o proprietà di connessione. Le parole chiave sono "Encrypt" per ODBC e OLE DB quando si usa una stringa del provider con IDbInitialize::Initialize
o "Use Encryption for Data" per ADO e OLE DB quando si usa una stringa di inizializzazione con IDataInitialize
. Questa operazione può essere configurata anche da Gestione configurazione SQL Server usando l'opzione Force Protocol Encryption e configurando il client per richiedere connessioni crittografate. Per impostazione predefinita, la crittografia di tutto il traffico di rete per una connessione richiede il provisioning di un certificato nel server. Impostando il client in modo che consideri attendibile il certificato nel server, si è vulnerabili agli attacchi man-in-the-middle. Se si distribuisce un certificato verificabile nel server, assicurarsi di modificare le impostazioni client relative all'attendibilità del certificato in FALSE
.
Per informazioni sulle parole chiave stringa di connessione, vedere Uso delle parole chiave della stringa di connessione con SQL Server Native Client.
Per abilitare la crittografia da usare quando non viene eseguito il provisioning di un certificato nel server, è possibile usare Gestione configurazione SQL Server per impostare sia le opzioni Force Protocol Encryption che Trust Server Certificate . In questo caso, la crittografia usa un certificato server autofirmato senza convalida se non è stato effettuato il provisioning di alcun certificato verificabile nel server.
Le applicazioni possono anche usare la parola chiave o l'attributo TrustServerCertificate
di connessione associato per garantire che la crittografia avvenga. Le impostazioni dell'applicazione non riducono mai il livello di sicurezza impostato da Gestione configurazione client di SQL Server, ma potrebbero rafforzarlo. Ad esempio, se Force Protocol Encryption non è impostato per il client, un'applicazione potrebbe richiedere la crittografia stessa. Per garantire la crittografia anche quando non viene effettuato il provisioning di un certificato server, un'applicazione potrebbe richiedere la crittografia e TrustServerCertificate
. Tuttavia, se TrustServerCertificate
non è abilitato nella configurazione client, è ancora necessario un certificato del server di cui è stato effettuato il provisioning. Nella tabella seguente vengono descritti tutti i casi:
Impostazione client Forza crittografia protocollo | Impostazione client Considera attendibile certificato server | Attributo/stringa di connessione Encrypt/Use Encryption for Data | Attributo/stringa di connessione Trust Server Certificate | Risultato |
---|---|---|---|---|
NO | N/D | Nessuno (impostazione predefinita) | Ignorato | Nessuna crittografia. |
NO | N/D | Sì | Nessuno (impostazione predefinita) | La crittografia viene applicata solo se è disponibile un certificato server verificabile. In caso contrario, il tentativo di connessione non riesce. |
NO | N/D | Sì | Sì | La crittografia viene sempre applicata, ma può essere utilizzato un certificato server auto-firmato. |
Sì | NO | Ignorato | Ignorato | La crittografia viene applicata solo se è disponibile un certificato server verificabile. In caso contrario, il tentativo di connessione non riesce. |
Sì | Sì | Nessuno (impostazione predefinita) | Ignorato | La crittografia viene sempre applicata, ma può essere utilizzato un certificato server auto-firmato. |
Sì | Sì | Sì | Nessuno (impostazione predefinita) | La crittografia viene applicata solo se è disponibile un certificato server verificabile. In caso contrario, il tentativo di connessione non riesce. |
Sì | Sì | Sì | Sì | La crittografia viene sempre applicata, ma può essere utilizzato un certificato server auto-firmato. |
Attenzione
La tabella precedente è solo una guida al comportamento del sistema con configurazioni diverse. Per garantire la connettività sicura, assicurarsi che sia il client che il server richiedano la crittografia. Assicurarsi inoltre che il server disponga di un certificato verificabile e che l'impostazione TrustServerCertificate
nel client sia impostata su FALSE
.
Provider OLE DB di SQL Server Native Client
Il provider OLE DB di SQL Server Native Client supporta la crittografia senza convalida tramite l'aggiunta della SSPROP_INIT_TRUST_SERVER_CERTIFICATE
proprietà di inizializzazione dell'origine dati, implementata nel DBPROPSET_SQLSERVERDBINIT
set di proprietà. È stata aggiunta anche una nuova parola chiave della stringa di connessione, TrustServerCertificate
, . Accetta o yes
valorino
; no
è l'impostazione predefinita. Quando si usano componenti del servizio, accetta o false
valoritrue
; false
è l'impostazione predefinita.
Per altre informazioni sui miglioramenti apportati al DBPROPSET_SQLSERVERDBINIT
set di proprietà, vedere Initialization and Authorization Properties (Native Client OLE DB Provider).
Driver ODBC di SQL Server Native Client
Il driver ODBC di SQL Server Native Client supporta la crittografia senza convalida tramite aggiunte alle funzioni SQLSetConnectAttr e SQLGetConnectAttr .
SQL_COPT_SS_TRUST_SERVER_CERTIFICATE
è stato aggiunto per accettare SQL_TRUST_SERVER_CERTIFICATE_YES
o SQL_TRUST_SERVER_CERTIFICATE_NO
, con SQL_TRUST_SERVER_CERTIFICATE_NO
l'impostazione predefinita. È stata aggiunta anche una nuova parola chiave della stringa di connessione, TrustServerCertificate
, . Accetta o yes
valorino
; no
è l'impostazione predefinita.