Crittografia e convalida dei certificati in OLE DB

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Download del driver OLE DB

SQL Server esegue sempre la crittografia dei pacchetti di rete associati all'accesso. Se non è stato eseguito il provisioning di nessun certificato nel server quando viene avviato, SQL Server genera un certificato autofirmato utilizzato per crittografare 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 garantire una connettività sicura. Il protocollo TLS (Transport Security Layer) può essere reso sicuro solo con la convalida del certificato.

Le applicazioni possono inoltre richiedere l'attivazione della crittografia per tutto il traffico di rete mediante le parole chiave della stringa di connessione o le proprietà di connessione. Le parole chiave sono "Encrypt" per OLE DB quando si usa una stringa del provider con IDbInitialize::Initializeo "Use Encryption for Data" per ADO e OLE DB quando si usa una stringa di inizializzazione con IDataInitialize. È anche possibile configurare la crittografia nel computer client nel Registro di sistema usando l'opzione Forza crittografia protocollo. Per altre informazioni, vedere Impostazioni del Registro di sistema. Per impostazione predefinita, la crittografia di tutto il traffico di rete per una connessione richiede che nel server sia stato effettuato il provisioning di un certificato. Se si imposta il client in modo che consideri attendibile il certificato nel server, l'ambiente può risultare vulnerabile agli attacchi man-in-the-middle. Se si distribuisce un certificato verificabile nel server, assicurarsi di impostare le opzioni client relative all'attendibilità del certificato su FALSE.

Per informazioni sulle parole chiave della stringa di connessione, vedere Uso delle parole chiave delle stringhe di connessione con driver OLE DB per SQL Server.

Per abilitare la crittografia da usare quando non è stato effettuato il provisioning di un certificato nel server, è possibile impostare le Force Protocol Encryption impostazioni del Registro di sistema client e 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.

Comportamento di crittografia e convalida di certificati

Le impostazioni dell'applicazione non riducono mai il livello di sicurezza impostato nel Registro di sistema, ma possono rafforzarlo. Per altre informazioni, vedere Impostazioni del Registro di sistema. Un'applicazione può ad esempio richiedere la crittografia, se non è stata impostata l'opzione Force Protocol Encryption per il client. Per garantire che la crittografia venga applicata anche quando non è stato effettuato il provisioning di un certificato server, un'applicazione può richiedere la crittografia e abilitare TrustServerCertificate. Se tuttavia l'opzione TrustServerCertificate non è attivata nella configurazione client, è comunque necessario il provisioning di un certificato server.

La versione 19 di OLE DB Driver per SQL Server introduce modifiche che causano un'interruzione nelle API correlate alla crittografia. Per altre informazioni, vedere Modifiche alle proprietà di crittografia.

Versione principale 19

La tabella seguente descrive la valutazione delle impostazioni di crittografia:

Impostazione client Forza crittografia protocollo Attributo/stringa di connessione Encrypt/Use Encryption for Data Crittografia risultante
0 No/Facoltativo Facoltativo
0 Sì/Obbligatorio (impostazione predefinita) Obbligatorio
0 Strict Strict
1 No/Facoltativo Obbligatorio
1 Sì/Obbligatorio (impostazione predefinita) Obbligatorio
1 Strict Strict
2 Ignorato Strict

La tabella seguente descrive la crittografia e la convalida risultanti:

Crittografia Impostazione client Considera attendibile certificato server Attributo/stringa di connessione Trust Server Certificate Risultato
Facoltativo N/D N/D La crittografia si verifica solo per i pacchetti LOGIN.
Obbligatorio 0 Ignorato La crittografia viene applicata solo se è disponibile un certificato server verificabile. In caso contrario, il tentativo di connessione non riesce.
Obbligatorio 1 Nessuno (impostazione predefinita) La crittografia viene applicata solo se è disponibile un certificato server verificabile. In caso contrario, il tentativo di connessione non riesce.
Obbligatorio 1 La crittografia viene sempre applicata, ma può essere utilizzato un certificato server auto-firmato.
Strict N/D N/D La crittografia viene applicata solo se è disponibile un certificato server verificabile. In caso contrario, il tentativo di connessione non riesce.

Attenzione

La tabella precedente è solo una guida al comportamento del sistema con configurazioni diverse. Per la connettività sicura, assicurarsi che il client e il server richiedano la crittografia (per la configurazione lato server, vedere Configurare le impostazioni di crittografia in SQL Server). Assicurarsi inoltre che il server disponga di un certificato verificabile e che l'impostazione TrustServerCertificate nel client sia impostata su FALSE.

Nota

A partire dalla versione 19.2 del driver OLE DB, le connessioni TDS 8.0 possono essere configurate per l'uso di TLS 1.3. Per altre informazioni, vedere Supporto di TLS 1.3.

Versione principale 18 con nuovi metodi di autenticazione

Per migliorare la sicurezza nelle versioni 18.x.x quando vengono usate le nuove parole chiave di connessione Autenticazione o Token di accesso o le relative proprietà, il driver esegue l'override del valore di crittografia predefinito impostandolo su yes. La sostituzione viene eseguita al momento dell'inizializzazione dell'oggetto di origine dati. Se la crittografia viene impostata prima dell'inizializzazione tramite qualsiasi mezzo, il valore viene rispettato e non sottoposto a override.

Nota

Nelle applicazioni ADO e nelle applicazioni che ottengono l'interfaccia IDBInitialize tramite IDataInitialize::GetDataSource, il componente di base che implementa l'interfaccia imposta in modo esplicito la crittografia sul valore predefinito di no. Di conseguenza, le nuove parole chiave/proprietà di autenticazione rispettano questa impostazione e il valore di crittografia non viene sovrascritto. Pertanto, è consigliabile che queste applicazioni impostino in modo esplicito Use Encryption for Data=true per la sostituzione del valore predefinito.

Per migliorare la sicurezza, i nuovi metodi di autenticazione rispettano l'impostazione di TrustServerCertificate e le parole chiave/proprietà della stringa di connessione corrispondenti, indipendentemente dall'impostazione della crittografia client. Di conseguenza, il certificato del server viene convalidato per impostazione predefinita. Il driver determina se convalidare il certificato del server nel modo seguente:

Impostazione client Considera attendibile certificato server Attributo/stringa di connessione Trust Server Certificate Convalida del certificato
0 Nessuno (impostazione predefinita)
0
1 Nessuno (impostazione predefinita)
1 No

La tabella seguente descrive la valutazione delle impostazioni di crittografia:

Impostazione client Forza crittografia protocollo Attributo/stringa di connessione Encrypt/Use Encryption for Data Crittografia risultante
0 Nessuno (impostazione predefinita) No
0
1 Nessuno (impostazione predefinita)
1

La tabella seguente descrive la crittografia e la convalida risultanti:

Crittografia risultante Convalida del certificato Risultato
No No La crittografia si verifica solo per i pacchetti LOGIN.
No La crittografia viene applicata per pacchetti LOGIN solo se è disponibile un certificato server verificabile. In caso contrario, il tentativo di connessione non riesce.
No La crittografia di tutto il traffico di rete viene applicata sempre, ma è possibile che venga usato un certificato del server autofirmato.
La crittografia di tutto il traffico di rete viene applicata solo se è disponibile un certificato server verificabile. In caso contrario, il tentativo di connessione non riesce.

Versione principale 18 con metodi di autenticazione legacy

La tabella seguente descrive il risultato della crittografia e della convalida per i metodi di autenticazione legacy:

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
0 N/D Nessuno (impostazione predefinita) N/D La crittografia si verifica solo per i pacchetti LOGIN.
0 N/D Nessuno (impostazione predefinita) La crittografia di tutto il traffico di rete viene applicata solo se è disponibile un certificato server verificabile. In caso contrario, il tentativo di connessione non riesce.
0 N/D La crittografia di tutto il traffico di rete viene applicata sempre, ma è possibile che venga usato un certificato del server autofirmato.
1 0 Ignorato Ignorato La crittografia di tutto il traffico di rete viene applicata solo se è disponibile un certificato server verificabile. In caso contrario, il tentativo di connessione non riesce.
1 1 Nessuno (impostazione predefinita) N/D La crittografia di tutto il traffico di rete viene applicata sempre, ma è possibile che venga usato un certificato del server autofirmato.
1 1 Nessuno (impostazione predefinita) La crittografia di tutto il traffico di rete viene applicata solo se è disponibile un certificato server verificabile. In caso contrario, il tentativo di connessione non riesce.
1 1 La crittografia di tutto il traffico di rete viene applicata sempre, ma è possibile che venga usato un certificato del server autofirmato.

Vedi anche

Driver OLE DB per funzionalità di SQL Server
Proprietà di inizializzazione e di autorizzazione
Parole chiave della stringa di connessione
Differenze tra le versioni principali
Impostazioni del Registro di sistema