Od 3. ledna 2018 bylo zveřejněno mnoho protichůdných a možná i alarmujících informací o straně spekulativního provedení -channel zranitelnosti známé také jako Meltdown a Spectre, které v různé míře ovlivňují většinu moderních procesorů. Zejména exploit Meltdown (CVE-2017-5754) se týká pouze procesorů Intel. Ochrana vašich systémů před těmito chybami zabezpečení u většiny systémů zahrnuje řadu kroků v závislosti na prostředí, ve kterém SQL Server běží, a na používaných funkcích.
Hlavní zásadou je, že obavy o bezpečnost by měly převažovat nad výkonností. Ignorování těchto chyb zabezpečení a neprovedení požadované opravy kvůli možným problémům s výkonem by pro většinu organizací bylo velkou chybou (a možnou právní odpovědností). Již byl publikován výzkum nových variací Meltdown a Spectre, takže tento typ problému v dohledné době nezmizí. Kromě toho dodavatelé zabezpečení hlásili důkazy o útocích Spectre/Meltdown ve volné přírodě.
Bohužel rozhodování o tom, co byste vlastně měli udělat se svými systémy, abyste je chránili před těmito zranitelnostmi, bylo postupem času stále složitější a matoucí, protože se měnící informace o zranitelnosti vydávané společnostmi Intel a AMD a jak mikrokód CPU, tak operační systém. patche jsou vydávány a poté krátce později staženy.
Dopad oprav na výkon
V závislosti na hardwaru vašeho serveru, operačním systému, pracovní zátěži a na tom, které záplaty nakonec nainstalujete, je pravděpodobné, že zaznamenáte nějaký negativní dopad na výkon těchto opatření ke zmírnění. Terry Myerson z Microsoftu má na toto téma docela podrobný příspěvek, zatímco Brendan Gregg z Netflixu má nějaké podrobné výsledky o Linuxu. Brandon Lee zde provedl nějaké syntetické benchmarkové testování v prostředí VMware.
Dobrou zprávou je, že většinu výkonových regresí, které jsou výsledkem tohoto úsilí o opravy, lze snížit správnou konfigurací a vyladěním zátěže na serveru SQL Server. Použití monitorovacích produktů, jako je SentryOne SQL Sentry, vám může pomoci identifikovat úzká místa výkonu, která existují ve vašem prostředí.
Mnoha organizacím, když budou plně aktuální informace o jejich nasazeném sestavení SQL Serveru (jako vedlejší efekt záplatování pro Spectre/Meltdown) vyřeší mnoho dalších problémů a potenciálně zlepší jejich výkon natolik, aby pomohl kompenzovat jakékoli regrese výkonu, které vidí z kompletní sady Záplaty Spectre/Meltdown. Čtení seznamu oprav pro každou SQL Server CU obvykle odhalí řadu oprav souvisejících s výkonem, které mohou mít podstatný dopad na výkon SQL Serveru.
Moderní procesory Intel mají podporu PCID a INVPCID, což výrazně snižuje dopad opravy operačního systému Meltdown na výkon. To znamená, že získáte podporu operačního systému Windows pro optimalizaci výkonu PCID v řadě produktů Intel Xeon E5-2600 v3 (Haswell-EP) a novějších procesorech spolu s řadou produktů Intel Xeon E7 v3 (Haswell-EX) a novějšími procesory.
Pokud jsou vaše procesory Intel starší než mikroarchitektura Haswell (která byla vydána ve 3. čtvrtletí 2014 pro dvousocketové servery), máte o důvod víc plánovat upgrade hardwaru. Psal jsem o tom, jak používat Microsoft CoreInfo ke snadné kontrole, zda váš procesor má podporu PCID a INVPCID. Provedl jsem také nějaké syntetické srovnávací testy na novějším systému Intel Kaby Lake.
Microsoft má novou funkci Windows Analytics, kterou můžete použít ke kontrole stavu opravy Spectre/Meltdown na všech vašich počítačích. Microsoft má také modul PowerShell, který můžete použít ke kontrole celkového stavu opravy (z pohledu Windows a hardwaru), o kterém jsem zde diskutoval. Pokud chcete provést rychlou a snadnou kontrolu klientského operačního systému pro koncového uživatele (nebo vaši maminku), aniž byste museli řešit PoSH, můžete si stáhnout a spustit nástroj InSpectre (se snadným GUI) a zkontrolovat opravu. stavu vašeho operačního systému a mikrokódu procesoru.
Kontrola instance serveru SQL
Nakonec musíte zkontrolovat stav opravy serveru SQL Server. Vyvinul jsem skript T-SQL, který zkontroluje vaši instanci SQL Server, aby zjistil, zda jste nainstalovali příslušné opravy SQL Server nebo ne. Tento skript bude fungovat na SQL Server 2008 až SQL Server 2017 pro místní instance nebo pro instance Azure IaaS. Toto není navrženo pro práci v Azure SQL Database. Můžete si jej stáhnout zde.
Jednou z možných výhod tohoto problému je to, že vám může poskytnout více opodstatnění pro to, aby vaše organizace aktualizovala instance SQL Serveru s jejich aktualizací Service Pack a kumulativními aktualizacemi, což je to, co Microsoft výslovně doporučuje.
Kroky zmírnění spektra/rozpadu
Zde jsou kroky ke zmírnění, které byste měli důkladně zvážit:
- Nainstalujte příslušnou opravu operačního systému od společnosti Microsoft (pokud je k dispozici)
- K dispozici pro Windows Server, verze 1709, Windows Server 2016, Windows Server 2012 R2 a Windows Server 2008 R2
- Zatím není k dispozici pro Windows Server 2012 nebo Windows Server 2008 (k 15. únoru 2018)
- Proveďte nezbytné změny konfigurace (nastavení registru), abyste povolili ochranu operačního systému na serverových operačních systémech
- Pokud používáte Hypervisor, nainstalujte příslušné opravy Hypervisoru
- Aktualizace VMware vSphere, Workstation a Fusion přidávají Hypervisor-Assisted Guest Remediation pro problém se spekulativním spuštěním
- Nainstalujte příslušnou opravu serveru SQL Server od společnosti Microsoft
- K dispozici pro SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012 SP4, SQL Server 2008 R2 SP3 a SQL Server 2008 SP4
- Není k dispozici pro SQL Server 2005 nebo starší
- Nainstalujte aktualizaci systému BIOS (která obsahuje aktualizaci mikrokódu CPU) od dodavatele serveru (pokud je k dispozici)
- To závisí na tom, jaký procesor používáte, a na vašem prostředí a využití funkcí
- Tyto aktualizace systému BIOS nejsou aktuálně dostupné pro většinu serverů (původně byly vydány pro některé novější servery a poté staženy)
- Zhodnoťte, jaké funkce rozšiřitelnosti SQL Serveru můžete používat a jaké další kroky ke zmírnění rizika budete muset podniknout. Patří mezi ně:
- Sestavení SQL CLR
- Balíčky R a Python běžící prostřednictvím mechanismu externích skriptů nebo spouštěné ze samostatného studia R/Machine Learning na stejném fyzickém počítači jako SQL Server
- Body rozšíření SQL Agent běžící na stejném fyzickém počítači jako SQL Server (skripty ActiveX)
- Poskytovatelé OLE DB od jiných společností než Microsoft, kteří se používají v propojených serverech
- Rozšířené uložené procedury od jiných společností než Microsoft
- Objekty COM spouštěné na serveru (přístupné přes sp_OACreate)
- Programy spouštěné prostřednictvím xp_cmdshell