Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server und die Spectre/Meltdown-Schwachstellen

Seit dem 3. Januar 2018 wurden viele widersprüchliche und möglicherweise alarmierende Informationen über die Seite der spekulativen Ausführung veröffentlicht -Channel-Schwachstellen, auch bekannt als Meltdown und Spectre, die die meisten modernen Prozessoren in unterschiedlichem Maße betreffen. Insbesondere der Meltdown-Exploit (CVE-2017-5754) betrifft nur Intel-Prozessoren. Der Schutz Ihrer Systeme vor diesen Schwachstellen umfasst für die meisten Systeme eine Reihe von Schritten, abhängig von der Umgebung, in der SQL Server ausgeführt wird, und der verwendeten Funktionalität.

Das Leitprinzip lautet, dass Sicherheitsbedenken Vorrang vor Leistungsbedenken haben sollten. Diese Sicherheitslücken zu ignorieren und das erforderliche Patchen aufgrund möglicher Leistungsprobleme nicht durchzuführen, wäre für die meisten Unternehmen ein großer Fehler (und eine mögliche rechtliche Haftung). Es wurden bereits Forschungsergebnisse zu neuen Variationen von Meltdown und Spectre veröffentlicht, sodass diese Art von Problemen in absehbarer Zeit nicht verschwinden wird. Darüber hinaus haben Sicherheitsanbieter Hinweise auf Spectre/Meltdown-Angriffe in freier Wildbahn gemeldet.

Leider wurde die Entscheidung, was Sie tatsächlich mit Ihren Systemen tun sollten, um sie vor diesen Schwachstellen zu schützen, im Laufe der Zeit immer komplexer und verwirrender, da sich die Informationen über die von Intel und AMD veröffentlichte Schwachstelle und sowohl der CPU-Mikrocode als auch das Betriebssystem ändern Patches veröffentlicht und kurz darauf wieder zurückgezogen.

Leistungsauswirkung des Patchens

Abhängig von Ihrer Serverhardware, Ihrem Betriebssystem, Ihrer Arbeitslast und den Patches, die Sie am Ende installieren, ist es wahrscheinlich, dass Sie durch diese Minderungsmaßnahmen negative Auswirkungen auf die Leistung feststellen werden. Terry Myerson von Microsoft hat einen ziemlich detaillierten Beitrag zu diesem Thema, während Brendan Gregg von Netflix einige detaillierte Ergebnisse zu Linux hat. Brandon Lee hat hier einige synthetische Benchmark-Tests in einer VMware-Umgebung durchgeführt.

Die gute Nachricht ist, dass die meisten Leistungsrückgänge, die sich aus diesem Patchaufwand ergeben, durch die richtige Konfiguration und Optimierung der Arbeitslast in SQL Server reduziert werden können. Die Verwendung von Überwachungsprodukten wie SQL Sentry von SentryOne kann Ihnen dabei helfen, Leistungsengpässe in Ihrer Umgebung zu identifizieren.

Für viele Unternehmen wird die Aktualisierung ihres bereitgestellten SQL Server-Builds (als Nebeneffekt des Patchens für Spectre/Meltdown) viele andere Probleme lösen und möglicherweise ihre Leistung so weit verbessern, dass sie dabei helfen, alle Leistungsrückgänge auszugleichen, die sie aus dem vollständigen Satz von sehen Spectre/Meltdown-Patches. Beim Lesen der Fixliste für jede SQL Server-CU werden normalerweise eine Reihe von leistungsbezogenen Fixes angezeigt, die erhebliche Auswirkungen auf die Leistung von SQL Server haben können.

Moderne Intel-Prozessoren verfügen über PCID- und INVPCID-Unterstützung, wodurch die Auswirkungen des Meltdown-Betriebssystem-Patches auf die Leistung erheblich reduziert werden. Das bedeutet, dass Sie Windows-Betriebssystemunterstützung für die PCID-Leistungsoptimierung in der Intel Xeon E5-2600 v3-Produktfamilie (Haswell-EP) und späteren Prozessoren sowie in der Intel Xeon E7 v3-Produktfamilie (Haswell-EX) und späteren Prozessoren erhalten.

Wenn Ihre Intel-Prozessoren älter sind als die Haswell-Mikroarchitektur (die im dritten Quartal 2014 für Zwei-Sockel-Server veröffentlicht wurde), ist dies ein Grund mehr, ein Hardware-Upgrade zu planen. Ich habe darüber geschrieben, wie Sie Microsoft CoreInfo verwenden können, um einfach zu überprüfen, ob Ihr Prozessor PCID- und INVPCID-Unterstützung hat. Ich habe auch einige synthetische Benchmark-Tests auf einem neueren Intel Kaby Lake-System durchgeführt.

Microsoft hat eine neue Windows Analytics-Funktion, mit der Sie den Spectre/Meltdown-Patch-Status aller Ihrer Computer überprüfen können. Microsoft hat auch ein PowerShell-Modul, das Sie verwenden können, um den allgemeinen Patch-Status (aus Windows- und Hardware-Perspektive) zu überprüfen, den ich hier besprochen habe. Wenn Sie ein Client-Betriebssystem für einen Endbenutzer (oder Ihre Mutter) schnell und einfach überprüfen möchten, ohne sich mit PoSH auseinandersetzen zu müssen, können Sie das InSpectre-Dienstprogramm (mit einer einfachen GUI) herunterladen und ausführen, um den Patch zu überprüfen Status Ihres Betriebssystems und Ihres Prozessor-Mikrocodes.

Überprüfen Ihrer SQL Server-Instanz

Schließlich müssen Sie Ihren SQL Server-Patchstatus überprüfen. Ich habe ein T-SQL-Skript entwickelt, das Ihre SQL Server-Instanz überprüft, um festzustellen, ob Sie die relevanten SQL Server-Patches installiert haben oder nicht. Dieses Skript funktioniert auf SQL Server 2008 bis SQL Server 2017 für lokale Instanzen oder für Azure IaaS-Instanzen. Dies ist nicht für die Arbeit mit Azure SQL-Datenbank ausgelegt. Sie können es hier herunterladen.

Ein möglicher Vorteil dieses Problems besteht darin, dass es Ihnen möglicherweise mehr Rechtfertigung dafür gibt, Ihre Organisation dazu zu bringen, Ihre SQL Server-Instanzen mit ihrem Service Pack und ihren kumulativen Updates auf den neuesten Stand zu bringen, was Microsoft ohnehin ausdrücklich empfiehlt.

Spectre/Meltdown-Minderungsschritte

Hier sind die Maßnahmen zur Schadensbegrenzung, die Sie unbedingt in Erwägung ziehen sollten:

  • Installieren Sie den relevanten Betriebssystem-Patch von Microsoft (falls verfügbar)
    • Verfügbar für Windows Server, Version 1709, Windows Server 2016, Windows Server 2012 R2 und Windows Server 2008 R2
    • Noch nicht verfügbar für Windows Server 2012 oder Windows Server 2008 (ab 15. Februar 2018)
  • Nehmen Sie die erforderlichen Konfigurationsänderungen (Registrierungseinstellungen) vor, um den Betriebssystemschutz auf Serverbetriebssystemen zu aktivieren
  • Wenn Sie auf einem Hypervisor laufen, installieren Sie die relevanten Hypervisor-Patches
    • VMware vSphere-, Workstation- und Fusion-Updates fügen Hypervisor-Assisted Guest Remediation für spekulative Ausführungsprobleme hinzu
  • Installieren Sie den relevanten SQL Server-Patch von Microsoft
    • Verfügbar für SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012 SP4, SQL Server 2008 R2 SP3 und SQL Server 2008 SP4
    • Nicht verfügbar für SQL Server 2005 oder früher
  • Installieren Sie ein BIOS-Update (das ein CPU-Mikrocode-Update enthält) von Ihrem Serveranbieter (falls verfügbar)
    • Dies hängt davon ab, welchen Prozessor Sie verwenden, zusammen mit Ihrer Umgebung und der Verwendung von Funktionen
    • Diese BIOS-Updates sind derzeit für die meisten Server nicht verfügbar (sie wurden zunächst für einige neuere Server freigegeben und dann zurückgezogen)
  • Bewerten Sie, welche SQL Server-Erweiterbarkeitsfunktionen Sie möglicherweise verwenden und welche zusätzlichen Minderungsschritte Sie möglicherweise ergreifen müssen. Dazu gehören:
    • SQL-CLR-Assemblys
    • R- und Python-Pakete, die über den externen Skriptmechanismus oder vom eigenständigen R/Machine Learning Studio auf demselben physischen Computer wie SQL Server ausgeführt werden
    • SQL Agent-Erweiterbarkeitspunkte, die auf demselben physischen Computer ausgeführt werden wie SQL Server (ActiveX-Skripts)
    • Nicht von Microsoft stammende OLE DB-Anbieter, die in Verbindungsservern verwendet werden
    • Erweiterte gespeicherte Prozeduren, die nicht von Microsoft stammen
    • COM-Objekte, die innerhalb des Servers ausgeführt werden (Zugriff über sp_OACreate)
    • Programme, die über xp_cmdshell ausgeführt werden