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)
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::Initialize
o "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 | Sì | 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) | Sì |
0 | Sì | Sì |
1 | Nessuno (impostazione predefinita) | Sì |
1 | Sì | 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 | Sì | Sì |
1 | Nessuno (impostazione predefinita) | Sì |
1 | Sì | Sì |
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 | Sì | La crittografia viene applicata per pacchetti LOGIN solo se è disponibile un certificato server verificabile. In caso contrario, il tentativo di connessione non riesce. |
Sì | No | La crittografia di tutto il traffico di rete viene applicata sempre, ma è possibile che venga usato un certificato del server autofirmato. |
Sì | Sì | 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 | Sì | 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 | Sì | Sì | 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 | Sì | 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 | Sì | Sì | 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