Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server i luki w zabezpieczeniach Spectre/Meltdown

Od 3 stycznia 2018 r. opublikowano wiele sprzecznych i prawdopodobnie alarmujących informacji na temat spekulatywnej strony egzekucyjnej luki -channel, znane również jako Meltdown i Spectre, które w różnym stopniu wpływają na większość nowoczesnych procesorów. Exploit Meltdown (CVE-2017-5754) dotyczy w szczególności tylko procesorów Intel. Ochrona systemów przed tymi lukami obejmuje szereg kroków dla większości systemów, w zależności od środowiska, w którym działa SQL Server i używanej funkcji.

Przewodnią zasadą jest to, że względy bezpieczeństwa powinny mieć pierwszeństwo przed względami wydajności. Zignorowanie tych luk w zabezpieczeniach i niewykonanie wymaganych poprawek z powodu możliwych problemów z wydajnością byłoby dużym błędem (i możliwą odpowiedzialnością prawną) dla większości organizacji. Opublikowano już badania nad nowymi odmianami Meltdown i Spectre, więc tego typu problem nie zniknie w najbliższym czasie. Ponadto dostawcy zabezpieczeń zgłaszali dowody ataków Spectre/Meltdown na wolności.

Niestety, decyzja o tym, co należy zrobić ze swoimi systemami, aby chronić je przed tymi lukami, była z biegiem czasu coraz bardziej skomplikowana i dezorientująca, wraz ze zmieniającymi się informacjami o luce ujawnianej przez firmy Intel i AMD, a także w przypadku mikrokodu procesora i systemu operacyjnego łatki są publikowane, a wkrótce potem wycofane.

Wpływ poprawek na wydajność

W zależności od sprzętu serwera, systemu operacyjnego, obciążenia i zainstalowanych poprawek, prawdopodobnie zauważysz pewien negatywny wpływ na wydajność tych środków łagodzących. Terry Myerson z Microsoftu ma dość szczegółowy post na ten temat, podczas gdy Brendan Gregg z Netflix ma szczegółowe wyniki dotyczące Linuksa. Brandon Lee przeprowadził tutaj syntetyczne testy porównawcze w środowisku VMware.

Dobrą wiadomością jest to, że większość regresji wydajności, które wynikają z tego wysiłku związanego z poprawkami, można zmniejszyć dzięki odpowiedniej konfiguracji i dostrajaniu obciążenia w programie SQL Server. Korzystanie z produktów do monitorowania, takich jak SQL Sentry SentryOne, może pomóc w zidentyfikowaniu wąskich gardeł wydajności, które istnieją w Twoim środowisku.

W wielu organizacjach uzyskanie pełnej wiedzy na temat wdrożonej kompilacji SQL Server (jako efekt uboczny poprawek dla Spectre/Meltdown) rozwiąże wiele innych problemów i potencjalnie poprawi ich wydajność na tyle, aby zrekompensować wszelkie regresje wydajności, które widzą z pełnego zestawu Plastry Spectre/Meltdown. Czytanie listy poprawek dla każdego SQL Server CU zwykle ujawnia szereg poprawek związanych z wydajnością, które mogą mieć znaczny wpływ na wydajność SQL Server.

Nowoczesne procesory Intel obsługują PCID i INVPCID, co znacznie zmniejsza wpływ poprawki na wydajność systemu operacyjnego Meltdown. Oznacza to, że uzyskasz obsługę systemu operacyjnego Windows dla optymalizacji wydajności PCID w rodzinie produktów Intel Xeon E5-2600 v3 (Haswell-EP) i nowszych procesorach, wraz z rodziną produktów Intel Xeon E7 v3 (Haswell-EX) i nowszych procesorach.

Jeśli twoje procesory Intel są starsze niż mikroarchitektura Haswell (która została wydana w trzecim kwartale 2014 r. dla serwerów dwuprocesorowych), to daje to jeszcze więcej powodów do planowania modernizacji sprzętu. Pisałem o tym, jak korzystać z Microsoft CoreInfo, aby łatwo sprawdzić, czy twój procesor obsługuje PCID i INVPCID. Przeprowadziłem również syntetyczne testy porównawcze na nowszym systemie Intel Kaby Lake.

Firma Microsoft udostępnia nową funkcję Windows Analytics, której można użyć do sprawdzenia stanu poprawek Spectre/Meltdown na wszystkich komputerach. Microsoft ma również moduł PowerShell, którego można użyć do sprawdzenia ogólnego stanu poprawki (z perspektywy Windows i sprzętu), o którym tutaj mówiłem. Jeśli chcesz szybko i łatwo sprawdzić system operacyjny klienta dla użytkownika końcowego (lub swojej mamy) bez konieczności zajmowania się PoSH, możesz pobrać i uruchomić narzędzie InSpectre (z łatwym GUI), aby sprawdzić poprawkę stan systemu operacyjnego i mikrokodu procesora.

Sprawdzanie instancji serwera SQL

Na koniec musisz sprawdzić stan poprawki SQL Server. Opracowałem skrypt T-SQL, który sprawdzi twoją instancję SQL Server, aby sprawdzić, czy zainstalowałeś odpowiednie poprawki SQL Server, czy nie. Ten skrypt będzie działał na SQL Server 2008 do SQL Server 2017 dla wystąpień lokalnych lub dla wystąpień IaaS platformy Azure. To nie jest przeznaczone do pracy w Azure SQL Database. Możesz go pobrać tutaj.

Jedną z możliwych korzyści wynikających z tego problemu jest to, że może dać więcej uzasadnienia dla nakłonienia organizacji do aktualizowania instancji SQL Server z ich dodatkiem Service Pack i aktualizacjami zbiorczymi, co i tak wyraźnie zaleca firma Microsoft.

Kroki łagodzenia widma/topnienia

Oto kroki łagodzące, które zdecydowanie powinieneś rozważyć:

  • Zainstaluj odpowiednią łatkę systemu operacyjnego firmy Microsoft (jeśli jest dostępna)
    • Dostępne dla Windows Server, wersja 1709, Windows Server 2016, Windows Server 2012 R2 i Windows Server 2008 R2
    • Jeszcze niedostępne dla Windows Server 2012 lub Windows Server 2008 (od 15 lutego 2018 r.)
  • Wprowadź niezbędne zmiany konfiguracji (ustawienia rejestru), aby włączyć ochronę systemu operacyjnego w systemach operacyjnych serwera
  • Jeśli korzystasz z Hypervisora, zainstaluj odpowiednie łatki Hypervisora
    • Aktualizacje VMware vSphere, Workstation i Fusion dodają funkcję naprawy gości wspomaganą przez hiperwizor w przypadku spekulatywnego problemu z wykonaniem
  • Zainstaluj odpowiednią poprawkę SQL Server firmy Microsoft
    • Dostępne dla SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012 SP4, SQL Server 2008 R2 SP3 i SQL Server 2008 SP4
    • Niedostępne dla SQL Server 2005 lub wcześniejszych
  • Zainstaluj aktualizację systemu BIOS (która zawiera aktualizację mikrokodu procesora) od dostawcy serwera (jeśli jest dostępna)
    • Zależy to od używanego procesora, środowiska i wykorzystania funkcji
    • Te aktualizacje systemu BIOS są obecnie niedostępne dla większości serwerów (początkowo zostały wydane dla niektórych nowszych serwerów, a następnie wycofane)
  • Oceń, jakich funkcji rozszerzalności programu SQL Server możesz używać i jakie dodatkowe kroki łagodzące mogą być konieczne do podjęcia. Należą do nich:
    • Zestawy SQL CLR
    • Pakiety R i Python działające przez mechanizm skryptów zewnętrznych lub uruchamiane z samodzielnego studia R/Machine Learning na tej samej fizycznej maszynie co SQL Server
    • Punkty rozszerzalności agenta SQL działające na tej samej maszynie fizycznej co SQL Server (skrypty ActiveX)
    • Dostawcy OLE DB inni niż Microsoft używani w połączonych serwerach
    • Rozszerzone procedury składowane firm innych niż Microsoft
    • Obiekty COM wykonywane na serwerze (dostęp przez sp_OACreate)
    • Programy wykonywane przez xp_cmdshell

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyzwalacze programu SQL Server — część 2 — wyzwalacze DDL i LOGON

  2. Wyjaśnienie niektórych operatorów SQL Server

  3. Utwórz kopię zapasową pojedynczej tabeli z jej danymi z bazy danych na serwerze sql 2008

  4. Podział ciągu T-SQL na podstawie separatora

  5. Jak uruchomić wiele poleceń SQL w jednym połączeniu SQL?