Depuis le 3 janvier 2018, de nombreuses informations contradictoires et peut-être alarmantes ont été publiées sur les exécutions spéculatives. -vulnérabilités de canal également connues sous le nom de Meltdown et Spectre qui affectent la plupart des processeurs modernes à des degrés divers. L'exploit Meltdown (CVE-2017-5754) en particulier n'affecte que les processeurs Intel. La protection de vos systèmes contre ces vulnérabilités implique un certain nombre d'étapes pour la plupart des systèmes en fonction de l'environnement dans lequel SQL Server s'exécute et des fonctionnalités utilisées.
Le principe directeur est que les préoccupations en matière de sécurité doivent primer sur les préoccupations en matière de performances. Ignorer ces vulnérabilités de sécurité et ne pas appliquer les correctifs requis en raison d'éventuels problèmes de performances serait une grave erreur (et une éventuelle responsabilité légale) pour la plupart des organisations. Il y a déjà eu des recherches publiées sur de nouvelles variantes de Meltdown et Spectre, donc ce type de problème ne va pas disparaître de si tôt. De plus, les fournisseurs de sécurité ont signalé des preuves d'attaques Spectre/Meltdown dans la nature.
Malheureusement, décider ce que vous devez réellement faire de vos systèmes pour les protéger contre ces vulnérabilités est devenu de plus en plus complexe et déroutant au fil du temps, avec des informations changeantes sur la vulnérabilité publiées par Intel et AMD, et avec le microcode du processeur et le système d'exploitation. des correctifs sont publiés puis retirés peu de temps après.
Impact des correctifs sur les performances
En fonction du matériel de votre serveur, du système d'exploitation, de la charge de travail et des correctifs que vous finissez par installer, il est probable que vous constaterez un impact négatif sur les performances de ces mesures d'atténuation. Terry Myerson de Microsoft a un article assez détaillé sur ce sujet, tandis que Brendan Gregg de Netflix a des résultats détaillés sur Linux. Brandon Lee a effectué ici des tests de référence synthétiques dans un environnement VMware.
La bonne nouvelle est que la plupart des régressions de performances résultant de cet effort de correction peuvent être réduites avec une configuration et un réglage de la charge de travail appropriés dans SQL Server. L'utilisation de produits de surveillance tels que SQL Sentry de SentryOne peut vous aider à identifier les goulots d'étranglement des performances qui existent dans votre environnement.
Pour de nombreuses organisations, la mise à jour complète de leur version déployée de SQL Server (en tant qu'effet secondaire de l'application de correctifs pour Spectre/Meltdown) résoudra de nombreux autres problèmes et améliorera potentiellement suffisamment leurs performances pour aider à compenser les régressions de performances qu'elles constatent à partir de l'ensemble complet de Correctifs Spectre/Meltdown. La lecture de la liste des correctifs pour chaque CU de SQL Server révèle généralement un certain nombre de correctifs liés aux performances qui peuvent avoir un impact substantiel sur les performances de SQL Server.
Les processeurs Intel modernes prennent en charge PCID et INVPCID, ce qui réduit considérablement l'impact sur les performances du correctif du système d'exploitation Meltdown. Cela signifie que vous bénéficierez de la prise en charge du système d'exploitation Windows pour l'optimisation des performances PCID dans la famille de produits Intel Xeon E5-2600 v3 (Haswell-EP) et les processeurs ultérieurs, ainsi que dans la famille de produits Intel Xeon E7 v3 (Haswell-EX) et les processeurs ultérieurs.
Si vos processeurs Intel sont plus anciens que la microarchitecture Haswell (qui a été publiée au troisième trimestre 2014 pour les serveurs à deux sockets), cela vous donne d'autant plus de raisons de planifier une mise à niveau matérielle. J'ai écrit sur la façon d'utiliser Microsoft CoreInfo pour vérifier facilement si votre processeur prend en charge PCID et INVPCID. J'ai également effectué des tests de référence synthétiques sur un nouveau système Intel Kaby Lake.
Microsoft a une nouvelle fonctionnalité Windows Analytics que vous pouvez utiliser pour vérifier l'état du correctif Spectre/Meltdown de toutes vos machines. Microsoft dispose également d'un module PowerShell que vous pouvez utiliser pour vérifier l'état général du correctif (du point de vue de Windows et du matériel) dont j'ai parlé ici. Si vous souhaitez effectuer une vérification rapide et facile d'un système d'exploitation client pour un utilisateur final (ou votre mère) sans avoir à traiter avec PoSH, vous pouvez télécharger et exécuter l'utilitaire InSpectre (avec une interface graphique simple) pour vérifier le patch l'état de votre système d'exploitation et le microcode de votre processeur.
Vérification de votre instance SQL Server
Enfin, vous devez vérifier l'état de votre correctif SQL Server. J'ai développé un script T-SQL qui vérifiera votre instance SQL Server pour voir si vous avez installé les correctifs SQL Server pertinents ou non. Ce script fonctionnera sur SQL Server 2008 à SQL Server 2017 pour les instances locales ou pour les instances Azure IaaS. Ceci n'est pas conçu pour fonctionner sur Azure SQL Database. Vous pouvez le télécharger ici.
L'un des avantages possibles de ce problème est qu'il peut vous donner plus de justification pour que votre organisation mette à jour vos instances SQL Server avec leur Service Pack et leurs mises à jour cumulatives, ce que Microsoft recommande explicitement de toute façon.
Étapes d'atténuation du spectre/fusion
Voici les mesures d'atténuation que vous devriez sérieusement envisager de prendre :
- Installez le correctif de système d'exploitation approprié de Microsoft (si disponible)
- Disponible pour Windows Server, version 1709, Windows Server 2016, Windows Server 2012 R2 et Windows Server 2008 R2
- Pas encore disponible pour Windows Server 2012 ou Windows Server 2008 (au 15 février 2018)
- Effectuez les modifications de configuration nécessaires (paramètres de registre) pour activer la protection du système d'exploitation sur les systèmes d'exploitation serveur
- Si vous utilisez un hyperviseur, installez les correctifs d'hyperviseur appropriés
- Les mises à jour de VMware vSphere, Workstation et Fusion ajoutent la correction des invités assistée par hyperviseur pour les problèmes d'exécution spéculative
- Installez le correctif SQL Server approprié de Microsoft
- Disponible pour SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012 SP4, SQL Server 2008 R2 SP3 et SQL Server 2008 SP4
- Non disponible pour SQL Server 2005 ou version antérieure
- Installez une mise à jour du BIOS (avec une mise à jour du microcode du processeur) auprès du fournisseur de votre serveur (si disponible)
- Cela dépend du processeur que vous utilisez, ainsi que de votre environnement et de l'utilisation des fonctionnalités
- Ces mises à jour du BIOS ne sont actuellement pas disponibles pour la plupart des serveurs (elles ont été initialement publiées pour certains serveurs plus récents, puis retirées)
- Évaluez les fonctionnalités d'extensibilité de SQL Server que vous utilisez et les mesures d'atténuation supplémentaires que vous devrez peut-être prendre. Ceux-ci incluent :
- Assemblages SQL CLR
- Packages R et Python exécutés via le mécanisme de scripts externes ou exécutés à partir du studio R/Machine Learning autonome sur la même machine physique que SQL Server
- Points d'extensibilité de l'Agent SQL s'exécutant sur la même machine physique que SQL Server (scripts ActiveX)
- Fournisseurs OLE DB autres que Microsoft utilisés dans les serveurs liés
- Procédures stockées étendues non Microsoft
- Objets COM exécutés sur le serveur (accessibles via sp_OACreate)
- Programmes exécutés via xp_cmdshell