От 3 януари 2018 г. беше публикувана много противоречива и вероятно тревожна информация относно спекулативното изпълнение -канал уязвимости, известни също като Meltdown и Spectre, които засягат повечето съвременни процесори в различна степен. Експлойтът Meltdown (CVE-2017-5754) по-специално засяга само процесорите на Intel. Защитата на вашите системи от тези уязвимости включва редица стъпки за повечето системи в зависимост от средата, в която работи SQL Server, и каква функционалност се използва.
Водещият принцип е, че опасенията за сигурността трябва да надделяват над опасенията за ефективността. Игнорирането на тези уязвимости в сигурността и неизвършването на необходимите корекции поради възможни проблеми с производителността би било голяма грешка (и възможна правна отговорност) за повечето организации. Вече има публикувани изследвания за нови вариации на Meltdown и Spectre, така че този тип проблеми няма да изчезнат скоро. Освен това доставчиците на сигурност съобщават доказателства за Spectre/Meltdown атаки в дивата природа.
За съжаление, решението какво всъщност трябва да направите със своите системи, за да ги защитите срещу тези уязвимости, става все по-сложно и объркващо с течение на времето, с промяната на информацията за уязвимостта, пусната от Intel и AMD, както и с микрокод на процесора, и с операционна система. пачовете се пускат и след малко по-късно се изтеглят.
Влияние върху производителността на корекцията
В зависимост от хардуера на сървъра, операционната система, работното натоварване и кои пачове в крайна сметка инсталирате, е вероятно да видите някакво отрицателно въздействие върху производителността от тези мерки за смекчаване. Тери Майерсън от Microsoft има доста подробна публикация по този въпрос, докато Брендън Грег от Netflix има някои подробни резултати за Linux. Brandon Lee направи някои синтетични тестове за сравнителен тест в среда на VMware тук.
Добрата новина е, че повечето регресии в производителността, които са резултат от това усилие за корекция, могат да бъдат намалени с правилна конфигурация и настройка на натоварването в SQL Server. Използването на продукти за наблюдение като SQL Sentry на SentryOne може да ви помогне да идентифицирате пречките в производителността, които съществуват във вашата среда.
За много организации получаването на пълна актуалност на разгърнатата им сборка на SQL Server (като страничен ефект от корекцията за Spectre/Meltdown) ще реши много други проблеми и потенциално ще подобри производителността им достатъчно, за да помогне за компенсиране на всяка регресия на производителността, която виждат от пълния набор от Spectre/Meltdown пластири. Четенето на списъка с корекции за всеки SQL Server CU обикновено разкрива редица корекции, свързани с производителността, които могат да окажат значително въздействие върху производителността на SQL Server.
Съвременните процесори на Intel имат поддръжка на PCID и INVPCID, което значително намалява въздействието върху производителността на корекцията на операционната система Meltdown. Това означава, че ще получите поддръжка на Windows OS за оптимизиране на производителността на PCID в продуктовото семейство Intel Xeon E5-2600 v3 (Haswell-EP) и по-нови процесори, заедно с продуктовото семейство Intel Xeon E7 v3 (Haswell-EX) и по-нови процесори.
Ако процесорите ви Intel са по-стари от микроархитектурата на Haswell (която беше пусната през Q3 2014 г. за сървъри с два сокета), това ви дава още по-голяма причина да планирате надстройка на хардуера. Написах как да използвате Microsoft CoreInfo, за да проверите лесно дали вашият процесор поддържа PCID и INVPCID. Също така направих някои синтетични тестове за сравнителен тест на по-нова система Intel Kaby Lake.
Microsoft има нова функция на Windows Analytics, която можете да използвате, за да проверите състоянието на патча Spectre/Meltdown на всичките си машини. Microsoft също има модул PowerShell, който можете да използвате, за да проверите цялостното състояние на корекцията (от гледна точка на Windows и хардуера), което обсъдих тук. Ако искате да направите бърза и лесна проверка на клиентска операционна система за краен потребител (или вашата майка), без да се налага да се занимавате с PoSH, можете да изтеглите и стартирате помощната програма InSpectre (с лесен GUI), за да проверите корекцията състоянието на вашата операционна система и микрокод на вашия процесор.
Проверка на вашия екземпляр на SQL сървър
И накрая, трябва да проверите състоянието на корекцията на SQL Server. Разработих T-SQL скрипт, който ще провери вашия екземпляр на SQL Server, за да види дали сте инсталирали съответните корекции на SQL Server или не. Този скрипт ще работи на SQL Server 2008 до SQL Server 2017 за локални екземпляри или за Azure IaaS екземпляри. Това не е предназначено да работи с Azure SQL база данни. Можете да го изтеглите тук.
Една възможна полза от този проблем е, че той може да ви даде повече основание да накарате вашата организация да актуализира вашите екземпляри на SQL Server с техния сервизен пакет и кумулативни актуализации, което въпреки това Microsoft изрично препоръчва.
Стъпки за смекчаване на призрака/срива
Ето стъпките за смекчаване, които силно трябва да обмислите да предприемете:
- Инсталирайте съответната корекция на операционната система от Microsoft (ако има такава)
- Налице за Windows Server, версия 1709, Windows Server 2016, Windows Server 2012 R2 и Windows Server 2008 R2
- Все още не е налице за Windows Server 2012 или Windows Server 2008 (от 15 февруари 2018 г.)
- Направете необходимите промени в конфигурацията (настройки на системния регистър), за да активирате защитата на операционната система на сървърни операционни системи
- Ако работите на хипервизор, инсталирайте съответните корекции на хипервизор
- Актуализациите на VMware vSphere, Workstation и Fusion добавят коригиране на гост с помощта на Hypervisor за проблем със спекулативно изпълнение
- Инсталирайте съответната корекция на SQL Server от Microsoft
- Налице за SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012 SP4, SQL Server 2008 R2 SP3 и SQL Server 2008 SP4
- Не е налично за SQL Server 2005 или по-стара версия
- Инсталирайте актуализация на BIOS (която има актуализация на микрокод на процесора) от доставчика на вашия сървър (ако има такава)
- Това зависи от това какъв процесор използвате, както и от вашата среда и използване на функции
- Тези актуализации на BIOS в момента не са налични за повечето сървъри (първоначално те бяха пуснати за някои по-нови сървъри и след това изтеглени)
- Оценете какви функции за разширяемост на SQL Server може да използвате и какви допълнителни стъпки за смекчаване може да се наложи да предприемете. Те включват:
- SQL CLR сборки
- R и Python пакети, работещи през външния скриптов механизъм или се изпълняват от самостоятелното R/Machine Learning студио на същата физическа машина като SQL Server
- Точки за разширяване на SQL агент, работещи на същата физическа машина като SQL Server (скриптове ActiveX)
- Доставчици на OLE DB, различни от Microsoft, използвани в свързани сървъри
- Разширени съхранени процедури, различни от Microsoft
- COM обекти, изпълнявани в сървъра (достъп чрез sp_OACreate)
- Програми, изпълнявани чрез xp_cmdshell