Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL Server e le vulnerabilità relative allo spettro/alla fusione

Dal 3 gennaio 2018 sono state pubblicate molte informazioni contrastanti e forse allarmanti sul lato dell'esecuzione speculativa -channel vulnerabilità note anche come Meltdown e Spectre che colpiscono in vari gradi la maggior parte dei processori moderni. L'exploit Meltdown (CVE-2017-5754) in particolare riguarda solo i processori Intel. La protezione dei sistemi da queste vulnerabilità comporta una serie di passaggi per la maggior parte dei sistemi, a seconda dell'ambiente in cui è in esecuzione SQL Server e delle funzionalità utilizzate.

Il principio guida è che i problemi di sicurezza dovrebbero prevalere sui problemi di prestazioni. Ignorare queste vulnerabilità di sicurezza e non eseguire le patch richieste a causa di possibili problemi di prestazioni sarebbe un grosso errore (e una possibile responsabilità legale) per la maggior parte delle organizzazioni. Sono già state pubblicate ricerche su nuove varianti di Meltdown e Spectre, quindi questo tipo di problema non scomparirà presto. Inoltre, i fornitori di sicurezza hanno segnalato prove di attacchi Spectre/Meltdown in natura.

Sfortunatamente, decidere cosa si dovrebbe effettivamente fare ai propri sistemi per proteggerli da queste vulnerabilità è stato sempre più complesso e confuso con il passare del tempo, con il cambiamento delle informazioni sulla vulnerabilità rilasciata da Intel e AMD e sia con il microcodice della CPU che con il sistema operativo patch rilasciate e poi ritirate poco dopo.

Impatto sulle prestazioni dell'applicazione delle patch

A seconda dell'hardware del server, del sistema operativo, del carico di lavoro e delle patch che si installano, è probabile che si verifichi un impatto negativo sulle prestazioni di queste misure di mitigazione. Terry Myerson di Microsoft ha un post piuttosto dettagliato su questo argomento, mentre Brendan Gregg di Netflix ha alcuni risultati dettagliati su Linux. Brandon Lee ha eseguito alcuni test di benchmark sintetici in un ambiente VMware qui.

La buona notizia è che la maggior parte delle regressioni delle prestazioni risultanti da questo sforzo di applicazione delle patch può essere ridotta con una configurazione e un'ottimizzazione del carico di lavoro corrette in SQL Server. L'utilizzo di prodotti di monitoraggio come SQL Sentry di SentryOne può aiutarti a identificare i colli di bottiglia delle prestazioni che esistono nel tuo ambiente.

Per molte organizzazioni, l'aggiornamento completo della build di SQL Server distribuita (come effetto collaterale dell'applicazione di patch per Spectre/Meltdown) risolverà molti altri problemi e potenzialmente migliorerà le prestazioni in modo sufficiente da aiutare a compensare eventuali regressioni delle prestazioni riscontrate dal set completo di Patch Spettro/Meltdown. La lettura dell'elenco delle correzioni per ogni CU di SQL Server mostra in genere una serie di correzioni relative alle prestazioni che possono avere un impatto sostanziale sulle prestazioni di SQL Server.

I moderni processori Intel hanno il supporto PCID e INVPCID, che riduce significativamente l'impatto sulle prestazioni della patch del sistema operativo Meltdown. Ciò significa che otterrai il supporto del sistema operativo Windows per l'ottimizzazione delle prestazioni PCID nella famiglia di prodotti Intel Xeon E5-2600 v3 (Haswell-EP) e nei processori successivi, insieme alla famiglia di prodotti Intel Xeon E7 v3 (Haswell-EX) e nei processori successivi.

Se i tuoi processori Intel sono più vecchi della microarchitettura Haswell (che è stata rilasciata nel terzo trimestre 2014 per server a due socket), questo ti dà un motivo in più per pianificare un aggiornamento hardware. Ho scritto su come utilizzare Microsoft CoreInfo per verificare facilmente se il tuo processore ha il supporto PCID e INVPCID. Ho anche eseguito alcuni test di benchmark sintetici su un sistema Intel Kaby Lake più recente.

Microsoft ha una nuova funzionalità di analisi di Windows che puoi utilizzare per controllare lo stato della patch Spectre/Meltdown di tutte le tue macchine. Microsoft ha anche un modulo PowerShell che puoi usare per controllare lo stato generale della patch (dal punto di vista di Windows e hardware) di cui ho discusso qui. Se desideri eseguire un controllo rapido e semplice del sistema operativo client per un utente finale (o tua madre) senza dover gestire PoSH, puoi scaricare ed eseguire l'utilità InSpectre (con una semplice GUI) per controllare la patch stato del tuo sistema operativo e del tuo microcodice del processore.

Verifica dell'istanza di SQL Server

Infine, è necessario controllare lo stato della patch di SQL Server. Ho sviluppato uno script T-SQL che controllerà la tua istanza di SQL Server per vedere se hai installato o meno le patch di SQL Server pertinenti. Questo script funzionerà su SQL Server 2008 tramite SQL Server 2017 per le istanze locali o per le istanze di Azure IaaS. Non è progettato per funzionare nel database SQL di Azure. Puoi scaricarlo qui.

Un possibile vantaggio di questo problema è che potrebbe darti una giustificazione maggiore per consentire alla tua organizzazione di aggiornare le istanze di SQL Server con il Service Pack e gli aggiornamenti cumulativi, che è comunque ciò che Microsoft consiglia esplicitamente.

Passaggi di mitigazione dello spettro/della fusione

Ecco i passaggi di mitigazione che dovresti prendere in seria considerazione:

  • Installa la patch del sistema operativo pertinente da Microsoft (se disponibile)
    • Disponibile per Windows Server, versione 1709, Windows Server 2016, Windows Server 2012 R2 e Windows Server 2008 R2
    • Non ancora disponibile per Windows Server 2012 o Windows Server 2008 (al 15 febbraio 2018)
  • Apportare le modifiche alla configurazione necessarie (impostazioni del registro) per abilitare la protezione del sistema operativo sui sistemi operativi server
  • Se stai utilizzando un Hypervisor, installa le relative patch dell'Hypervisor
    • Gli aggiornamenti VMware vSphere, Workstation e Fusion aggiungono la correzione guest assistita da hypervisor per problemi di esecuzione speculativa
  • Installa la patch di SQL Server pertinente da Microsoft
    • Disponibile per SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012 SP4, SQL Server 2008 R2 SP3 e SQL Server 2008 SP4
    • Non disponibile per SQL Server 2005 o precedenti
  • Installa un aggiornamento del BIOS (che include un aggiornamento del microcodice della CPU) dal fornitore del server (se disponibile)
    • Dipende dal processore in uso, dall'ambiente e dall'utilizzo delle funzioni
    • Questi aggiornamenti del BIOS non sono attualmente disponibili per la maggior parte dei server (sono stati inizialmente rilasciati per alcuni server più recenti e poi ritirati)
  • Valuta quali funzionalità di estendibilità di SQL Server potresti utilizzare e quali ulteriori passaggi di mitigazione potrebbero essere necessari. Questi includono:
    • Assembly CLR SQL
    • Pacchetti R e Python eseguiti tramite il meccanismo di script esterni o eseguiti dallo studio R/Machine Learning autonomo sulla stessa macchina fisica di SQL Server
    • Punti di estendibilità di SQL Agent in esecuzione sulla stessa macchina fisica di SQL Server (script ActiveX)
    • Provider OLE DB non Microsoft utilizzati nei server collegati
    • Procedure archiviate estese non Microsoft
    • Oggetti COM eseguiti all'interno del server (a cui si accede tramite sp_OACreate)
    • Programmi eseguiti tramite xp_cmdshell