sql >> Database >  >> RDS >> Sqlserver

SQL Server en de Spectre/Meltdown-kwetsbaarheden

Sinds 3 januari 2018 is er veel tegenstrijdige en mogelijk alarmerende informatie gepubliceerd over de speculatieve uitvoeringskant -kanaalkwetsbaarheden, ook bekend als Meltdown en Spectre, die de meeste moderne processors in verschillende mate treffen. Vooral de Meltdown-exploit (CVE-2017-5754) treft alleen Intel-processors. Het beschermen van uw systemen tegen deze kwetsbaarheden omvat voor de meeste systemen een aantal stappen, afhankelijk van de omgeving waarin SQL Server wordt uitgevoerd en welke functionaliteit wordt gebruikt.

Het leidende principe is dat beveiligingsproblemen belangrijker moeten zijn dan prestatieproblemen. Het negeren van deze beveiligingsproblemen en het niet uitvoeren van de vereiste patches vanwege mogelijke prestatieproblemen zou voor de meeste organisaties een grote fout (en mogelijke wettelijke aansprakelijkheid) zijn. Er is al onderzoek gepubliceerd naar nieuwe varianten van Meltdown en Spectre, dus dit soort problemen zal niet snel verdwijnen. Bovendien hebben beveiligingsleveranciers bewijs gerapporteerd van Spectre/Meltdown-aanvallen in het wild.

Helaas is het met het verstrijken van de tijd steeds complexer en verwarrender geworden om te beslissen wat u met uw systemen moet doen om ze te beschermen tegen deze kwetsbaarheden, met veranderende informatie over de kwetsbaarheid die wordt vrijgegeven door Intel en AMD, en met zowel de CPU-microcode als het besturingssysteem patches worden vrijgegeven en kort daarna weer ingetrokken.

Prestatie-impact van patchen

Afhankelijk van uw serverhardware, besturingssysteem, werklast en welke patches u uiteindelijk installeert, is het waarschijnlijk dat u een negatieve invloed zult hebben op de prestaties van deze beperkende maatregelen. Terry Myerson van Microsoft heeft een behoorlijk gedetailleerd bericht over dit onderwerp, terwijl Brendan Gregg van Netflix enkele gedetailleerde resultaten over Linux heeft. Brandon Lee heeft hier wat synthetische benchmarktests gedaan in een VMware-omgeving.

Het goede nieuws is dat de meeste prestatieregressies die het gevolg zijn van deze patching-inspanningen kunnen worden verminderd met de juiste configuratie en afstemming van de werkbelasting in SQL Server. Het gebruik van monitoringproducten zoals SentryOne's SQL Sentry kan u helpen de prestatieknelpunten in uw omgeving te identificeren.

Voor veel organisaties zal het volledig op de hoogte zijn van hun geïmplementeerde SQL Server-build (als een neveneffect van patching voor Spectre/Meltdown) vele andere problemen oplossen en mogelijk hun prestaties voldoende verbeteren om eventuele prestatieregressies die ze zien uit de volledige set van Spectre / Meltdown-patches. Het lezen van de fixlijst voor elke SQL Server CU onthult meestal een aantal prestatiegerelateerde fixes die een aanzienlijke prestatie-impact voor SQL Server kunnen hebben.

Moderne Intel-processors hebben PCID- en INVPCID-ondersteuning, wat de prestatie-impact van de Meltdown-besturingssysteempatch aanzienlijk vermindert. Dit betekent dat u Windows OS-ondersteuning krijgt voor de PCID-prestatie-optimalisatie in Intel Xeon E5-2600 v3-productfamilie (Haswell-EP) en latere processors, samen met de Intel Xeon E7 v3-productfamilie (Haswell-EX) en latere processors.

Als uw Intel-processors ouder zijn dan de Haswell-microarchitectuur (die in het derde kwartaal van 2014 werd uitgebracht voor servers met twee sockets), geeft dit u des te meer reden om een ​​hardware-upgrade te plannen. Ik heb geschreven over het gebruik van Microsoft CoreInfo om eenvoudig te controleren of uw processor PCID- en INVPCID-ondersteuning heeft. Ik heb ook wat synthetische benchmarktests gedaan op een nieuwer Intel Kaby Lake-systeem.

Microsoft heeft een nieuwe Windows Analytics-functie die u kunt gebruiken om de Spectre/Meltdown-patchstatus van al uw machines te controleren. Microsoft heeft ook een PowerShell-module die u kunt gebruiken om de algehele patchstatus te controleren (vanuit een Windows- en hardwareperspectief) die ik hier heb besproken. Als u een snelle en gemakkelijke controle van een clientbesturingssysteem voor een eindgebruiker (of uw moeder) wilt doen zonder met PoSH te maken te hebben, kunt u het InSpectre-hulpprogramma downloaden en uitvoeren (met een eenvoudige GUI) om de patch te controleren status van uw besturingssysteem en de microcode van uw processor.

Uw SQL Server-instantie controleren

Ten slotte moet u de patchstatus van uw SQL Server controleren. Ik heb een T-SQL-script ontwikkeld dat uw SQL Server-instantie controleert om te zien of u de relevante SQL Server-patches hebt geïnstalleerd of niet. Dit script werkt op SQL Server 2008 tot en met SQL Server 2017 voor on-premises instanties of voor Azure IaaS-instanties. Dit is niet ontworpen om te werken op Azure SQL Database. Je kunt het hier downloaden.

Een mogelijk voordeel van dit probleem is dat het u meer rechtvaardiging kan geven om uw organisatie uw SQL Server-instanties up-to-date te houden met hun servicepack en cumulatieve updates, wat Microsoft sowieso expliciet aanbeveelt.

Stappen voor het verminderen van spook/meltdown

Dit zijn de beperkende stappen die u sterk moet overwegen:

  • Installeer de relevante patch voor het besturingssysteem van Microsoft (indien beschikbaar)
    • Beschikbaar voor Windows Server, versie 1709, Windows Server 2016, Windows Server 2012 R2 en Windows Server 2008 R2
    • Nog niet beschikbaar voor Windows Server 2012 of Windows Server 2008 (vanaf 15 februari 2018)
  • Maak de nodige configuratiewijzigingen (registerinstellingen) om de besturingssysteembeveiliging op serverbesturingssystemen in te schakelen
  • Als u op een Hypervisor werkt, installeer dan de relevante Hypervisor-patches
    • VMware vSphere-, Workstation- en Fusion-updates voegen Hypervisor-Assisted Guest Remediation toe voor speculatief uitvoeringsprobleem
  • Installeer de relevante SQL Server-patch van Microsoft
    • Beschikbaar voor SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012 SP4, SQL Server 2008 R2 SP3 en SQL Server 2008 SP4
    • Niet beschikbaar voor SQL Server 2005 of eerder
  • Installeer een BIOS-update (die een CPU-microcode-update heeft) van uw serverleverancier (indien beschikbaar)
    • Dit hangt af van de processor die u gebruikt, samen met uw omgeving en het gebruik van functies
    • Deze BIOS-updates zijn momenteel niet beschikbaar voor de meeste servers (ze werden aanvankelijk uitgebracht voor sommige nieuwere servers en daarna ingetrokken)
  • Evalueer welke uitbreidbaarheidsfuncties van SQL Server u mogelijk gebruikt en welke aanvullende beperkende stappen u mogelijk moet nemen. Deze omvatten:
    • SQL CLR-assemblages
    • R- en Python-pakketten die via het externe scriptmechanisme worden uitgevoerd of worden uitgevoerd vanuit de zelfstandige R/Machine Learning-studio op dezelfde fysieke machine als SQL Server
    • SQL Agent-uitbreidingspunten die op dezelfde fysieke machine worden uitgevoerd als SQL Server (ActiveX-scripts)
    • Niet-Microsoft OLE DB-providers gebruikt in gekoppelde servers
    • Niet-Microsoft uitgebreide opgeslagen procedures
    • COM-objecten uitgevoerd binnen de server (toegankelijk via sp_OACreate)
    • Programma's uitgevoerd via xp_cmdshell

  1. Hybride OLTP/Analytics-databaseworkloads in Galera-cluster met behulp van asynchrone slaves

  2. Salesforce SOQL van SQL Server

  3. Standaardlocatie van PostgreSQL-database op Linux

  4. ORACLE en TRIGGERS (ingevoegd, bijgewerkt, verwijderd)