Akademia SQL     Akademia SQL - Część 2: Resource Governor

Akademia SQL - Część 1: Policy Based Management Udostępnij na: Facebook

Autor: Damian Widera

Opublikowano: 9 września 2008

Zawartość strony
 Policy Based Management – informacje podstawowe   Policy Based Management – informacje podstawowe
 Policy Based Management – laboratorium   Policy Based Management – laboratorium
 Ćwiczenie - praca z PBM   Ćwiczenie - praca z PBM
 Policy Based Management – referencje   Policy Based Management – referencje

Policy Based Management – informacje podstawowe

Policy Based Management (PBM) jest z całą pewnością jedną z najważniejszych nowości, która została wprowadzona do SQL Server 2008. PBM pozwala na zarządzanie instancjami SQL Server poprzez definiowanie polis (policies). PBM jest systemem opartym na politykach służącym do zarządzania instancjami SQL Server 2008. Administratorzy baz danych mogą używać PBM za pomocą SQL Server Management Studio (SSMS) i za jego pomocą tworzyć polisy oraz zarządzać serwerem, bazami danych, tabelami, indeksami lub innymi obiektami zawartymi w SQL Server. Zadaniem PBM jest umożliwienie administratorowi zarządzania serwerami za pomocą definiowanych przez administratora reguł. W SQL Server 2008 zostały przygotowane szablony reguł oparte o najlepsze praktyki zaimplementowane w narzędziu Best Practices Analyzer, używanym przez administratorów z poprzednimi wersjami systemu SQL Server.

PBM składa się z trzech komponentów:

  1)  Zarządzania polisami – administratorzy polis tworzą polisy

  2)  Bezpośredniej administracji – administrator wybiera jeden lub więcej obiektów, które muszą być zgodne z utworzoną polisą

  3)  Zautomatyzowanej administracji – administrator polisy umożliwia automatyczne wykonanie polisy w jednym z trzech trybów:

      a.  Tryb on change, w którym następuje sprawdzenie zgodności obiektu z polisą w sytuacji, w której zmienia się stan obiektu. Dostępne są dwie opcje dla tego trybu działania polisy:

          I.  Prevent – zmiany, które spowodowały naruszenie zasad okreslonych w polisie zostaną odrzucone

          II.  Log - zmiany, które spowodowały naruszenie zasad okreslonych w polisie niezostaną odrzucone. Zamiast tego zostanie utworzony raport zawierający opis problemu

      b.  Tryb on schedule, w którym następuje okresowe sprawdzenie polisy przy udziale SQL Server Agent. Obiekty, które nie spełniają zasad okreslonych w polisach zostaną oznaczone w raporcie podsumowującym wykonanie sprawdzenia.

      c.  Tryb on demand, w którym polisa jest sprawdzana przez użytkownika za pomoca opcji Test policy z menu kontekstowego. Obiekty, które nie spełniają zasad okreslonych w polisach zostaną oznaczone w raporcie podsumowującym wykonanie sprawdzenia.

Dla zrozumienia działania PBM należy poznać jej podstawowe składniki. Tak więc system Policy Based Management ma strukturę hierarchiczną i składa się z trzech podstawowych elementów:

  1)  PBM management facets – jest to zestaw reguł modelujących zachowanie lub charakterystykę określonego obiektu. Liczba i charakterystyka własności jest wbudowana w każdą regułę i może być zmieniona (dodana, usunięta) tylko przez twórcę reguły. Każda polisa może wykorzystywać jedną lub więcej reguł.

  2)  PBM conditions – są to warunki określające zestaw dozwolonych stanów, w których może znaleźć się obiekt kontrolowany przez polisę. Dozwolone stany dla każdego obiektu są określane przez omówione powyżej zestawy reguł i charakterystyk (facets).

  3)  PBM policies – polisy składają się z warunków, które wymuszają określone zachowanie obiektu. Polisa może zawierać tylko jeden warunek oraz być włączona (enabled) bądź wyłączona (disabled).

Każda polisa zawiera dokładnie jeden warunek, a ten z kolei może składać się z co najmniej jednego zestawu reguł (facets), o ile dotyczą one jednego obiektu. Polisy mogą być grupowane w kategorie, co znacznie ułatwia zarządzanie instancją serwera baz danych.

Na zakończenie omawiania podstawowych informacji o PBM wspomnieć o mechanizmach bezpieczeństwa (security). Administrowanie systemem PBM wymaga, aby użytkownik należał do bazodanowej roli PolicyAdministrationRole w bazie msdb. Ta rola umożliwia pełną kontrolę nad systemem polis, to znaczy umożliwia tworzenie, edytowanie, usuwanie polis oraz warunków, a także właczanie i wyłączanie polis.

Należy pamiętać, iż użytkownicy posiadający tak rozległe uprawnienia mogą utworzyć wyzwalacz na poziomie serwera i zaplanować cykliczne wykonanie sprawdzenia zgodności obiektów z polisami, co z kolei może wpłynąć negatywnie na operacje wykonywane w silniku bazodanowym. Zgodnie z Books Online dla PBM obowiązują nastepujące reguły bezpieczeństwa:

  a)  Administrator systemu (sysadmin) lub właściciel bazy danych może zasubskrybować bazę danych do polisy lub grupy polis

  b)  Członkowie roli PolicyAdministratorRole mogą włączać i wyłaczać polisy

  c)  Członkowie roli PolicyAdministratorRole mogą utworzyć polisę, do której uruchomienia nie mają uprawnień, ale która może zostać uruchomiona przez użytkownika posiadającego takie uprawnienia

  d)  Polisy uruchamiane na żądanie wykonują się w kontekście użytkownika, który je wywołał

  e)  Polisy uruchamiane cyklicznie przez SQL Server Agent należą do loginu sa

  Do początku strony  Do początku strony

Policy Based Management – laboratorium

Celem ćwiczenia jest zapoznanie się z sytemem Policy – Based Management. W ramach ćwiczenia zostaną wykonane dwa zadania, z których jedno będzie polegało na wykonaniu polisy, która będzie sprawdzała konfigurację serwera tak, jak robi to narzędzie Surface Area Configuration (SAC) dla SQL Server 2005 (SAC zostało usunięte z SQL Server 2008). W drugim zadaniu pokazane zostanie, w jaki sposób wykorzystać polisy dostarczoną wraz z systemem (jako tzw. best practices policies).

Zadanie 1

  1.  Uruchom SQL Server Management Studio (SSMS) i połącz się z serwerem EVALUATION używając uwierzytelnienia WINDOWS.

  2.  Przejdź do folderu Management i rozwiń folder Policy Management.

  3.  Zaznacz katalog Conditions i z menu kontekstowego wybierz opcję New condition.

  4.  W oknie właśności nowego warunku polisy wskaż facet, z którego zostanie ten warunek utworzony. Należy wybrać facet o nazwie Surface Area Configuration. Obowiązkowo należy także podac nazwę warunku.

  5.  W następnym kroku należy określić, jakie własności znane z narzedzia SAC będą składały się na tworzony warunek. Z listy rozwijanej proszę wybrać opcję @ClrIntegrationEnabled.

  6.  Opcja @ClrIntegrationEnabled określa, czy dana instancja systemu pozwala na współprcę z zewnętrznym kodem napisanym np. w jednym takich jak C# czy Visual Basic .NET. Domyślnie opcja ta ma wartość ‘false’, czyli SQL Server nie zezwala na odwoływanie się do kodu zewnętrznego w ramach swojego procesu. W taki też sposób zdefiniujemy nasz warunek:

  7.  Następnym krokiem jest utworzenie nowej polisy, która będzie bazowała na warunku Warunek SAC. W tym celu należy zaznaczyć folder Policies i wybrać z menu kontekstowego opcję New policy. Podobnie, jak w przypadku tworzenia warunku do sprawdzenia, także przy definiowaniu polisy należy podac jej nazwę. Obowiązkowe jest też wskazanie warunku, na którym tworzona polisa będzie się opierała.

  8.  Pozostają do okreslenia dwa pola – Execution mode, które odpowiada za tryb wykonania polisy. Tryby zostały omówione we wstepie do ćwiczenia. W naszym przypadku wybierzemy opcję On demand, która oznacza, iż sprawdzenie polisy odbędzie się na żądanie, ręcznie. Ostatnie pole – Server restriction, umożliwia wykonanie polisy np. tylko dla określonej konfiguracji serwera baz danych. Po zakończeniu konfiguracji gotowa polisa powinna wyglądać nastepująco:

  9.  Przed przetestowaniem polisy należy sprawdzić aktualna konfigurację systemu i upewnić się, czy opcja integracji z CLR jest wyłączona:

  10.  W tym kroku należy wykonać test polisy. Test powinien zakończyć się sukcesem ponieważ konfiguracja systemu jest zgodna ze zdefiniowaną polisą. W celu przetestowania polisy należy zaznaczyć jej nazwę pod folderem Policies i z menu kontekstowego wybrac opcję Evaluate. System PBM informuje użytkownika, iż nie wykrył żadnych błędów:

  11.  Skonfigurujmy teraz serwer tak, aby opcja integracji z CLR była ustawiona na ‘true’, co narusza utworzoną polisę. System PBM nie zareaguje na tę zmianę, ponieważ tryb uruchomienia polisy jest ‘On demand’:

  12.  Wykonujemy test polisy, jak w pkt. 10 powyżej. Tym razem system PBM zgłasza informację, iż wystąpił błąd.

  13.  Identyfikacja problemu polega na kliknięciu w link znajdujący się w polu Details:

  14.  W tym momencie użytkownik otrzymuje informację, która z własności warunku nie jest zgodna z założoną konfiguracją. W tym przypadku oczekiwana wartość (expected value) warunku @ClrIntegrationEnabled powinna być false, a w rzeczywistości w systemie jest ona ustawiona na true.

  15.  System PBM jest w stanie skonfigurować serwer tak, aby spełniał on warunki zawarte w polisie. W tym celu wystarczy nacisnąć przycisk Configure i konfiguracja SQL Server zostanie poprawiona:

  16.  Otrzymujemy informację jak w punkcie 10 tego zadania (powyżej), ale należałoby jeszcze sprawdzić, co będzie wynikiem wykonania procedury:

Jak widać – serwer został skonfigurowany w taki sposób, aby nie naruszac utworzonej przez administratora polisy.

Zadanie 2

W ramach tego ćwiczenia sprawdzimy, w jaki sposób można wykorzystać dostarczone wraz z SQL Server 2008 polisy traktowane jako zbiór best practices. Pierwszy krok w ramach tego zadania będzie polegał na zaimportowaniu polis do instancji serwera baz danych.

  1.  System PBM jest dostarczany z ponad 40 polisami, które są odpowiednio skonfigurowane i gotowe do użycia i pozwalają w zasadzie natychmiast wykorzystać zbiór najlepszych praktyk i rekomendacji firmy Microsoft. W tym celu należy zaimportować polisy wybierając opcję Import Policy z menu kontekstowego w katalogu Policies:

  2.  W nowym oknie konfiguracyjnym należy wskazać miejsce, w którym znajdują się zapisane polisy (w formacie XML). Polisy można odnaleźć na dysku w miejscu pokazanym na rysunku poniżej, a następnie zaznaczyć wszystkie pliki znajdujące się w tym folderze.

  3.  Konfigurator polis posiada dwie istotne opcje – pierwsza z nich (check box) pozwala poinformować system, iż ma nadpisac istniejąca polisę, gdy podczas operacji importu zostanie odnaleziona polisa o takiej samej nazwie. Drugie pole (lista combo) informuje o stanie polis po wykonaniu operacji importu. Do dyspozycji są trzy opcje pozwalające właczyć/wyłączyć polisy lub pozostawić ich stan taki, w jakim zostały zapisane na dysku (opcja domyślna).

  4.  Po zaimportowaniu polis do systemu można je odnaleźć w katalogu Policies, a nowe warunki w katalogu Conditions. Zwróćmy uwagę, iż domyślny stan zaimportowanych polis to wyłączone, co ma spowodować, iż żaden użytkownik nie zostanie zaskoczony zmianami, które mogłyby nastąpić automatycznie w sytuacji, gdbyby te polisy miały domyślnie stan właczony.

W tym momencie można rozpocząć pracę z systemem PBM i zestawem polis dostarczonym wraz z serwerem baz danych SQL Server. Na podstawie warunków, które zostały automatycznie dodane do systemu można tworzyć własne polisy. Można utworzyć polisy, które będą zapobiegać tworzeniu obiektów w schmacie dbo, co teraz jest możliwe przy użyciu wyzwalaczy DDL; można wykonac polisę, która dla określonej tabeli i okreslonej bazy danych nie zezwoli na skonstruowanie wyzwalacz i wiele innych.

  Do początku strony  Do początku strony

Ćwiczenie - praca z PBM

Celem ćwiczenia jest stworzenie restrykcji dla procedur składowanych: brak możliwości definiowania przez użytkownika procedur z prefiksem: ‘sp_’. Ową restrykcję wprowadzimy na bazie AdventureWorks.

  1.  Otwórz SSMS (ManagementStudio) i połącz się z serwerem EVALUATION używając uwierzytelnienia WINDOWS.

  2.  Przejdź do folderu Management, rozwiń Policy Management, a następnie kliknij prawym przyciskiem na folder Conditions i wybierz: New Condition (w celu stworzenia warunku naszego ćwiczenia).

  3.  Wprowadź nazwę warunku: RestrSP, następnie wybierz odpowiedni Facet dotyczący procedur składowanych. Kolejnym krokiem jest wybór atrybutu Name, jaki będzie generował uwarunkowanie w owym przykładzie. Należy podać również operator warunku (NOT LIKE) oraz wartość (‘sp_’) - w ten sposób nasz warunek stanowi restrykcję na tworzenie procedur składowanych:

  4.  Stwórz nowy warunek o nazwie: AW, który będzie wskazywał jedynie na bazę Adventure Works. Należy wybrać atrybut Name, wybrać operator: ‘=’ oraz wpisać wartość: ‘Adventure Works’

  5.  Kliknij prawym przyciskiem folder Policies, a następnie wybierz New Policy. Wprowadź nazwę (np. MyPolicy). Ustaw ową policy, aby była aktywna, a następnie wybierz odpowiedni warunek (RestrSP stworzony w kroku 3).

  6.  Rozwiń link Every przy Database, w celu określenia drugiego warunku dla Policy: AW.

  7.  Jako tryb wykonywania ustaw: On Change – Prevent i kliknij OK.

  8.  Kliknij prawym przyciskiem na bazę: Adventure Works i wybierz New Query. Uruchom poniższy kod tworzący pustą, systemową procedurę:

CREATE PROCEDURE sp_mojaProcedura

AS

GO

Zauważ, że procedura prawidłowo została utworzona, gdyż na tej bazie nie ma zdefiniowanych restrykcji PBM.

  9.  Uruchom powyższy kod w kontekście bazy: Adventure Works. Zauważ, że wystąpił błąd – owa procedura nie została utworzona, gdyż zadziałała restrykcja PBM: MyPolicy.

 Do początku strony Do początku strony

Policy Based Management – referencje

Dodatkowe informacje na temat Policy Based Management można znaleźć w internecie:

  [1]  SQL Server 2008 – Declarative Management Framework krok po kroku

  [2]  Co nowego w silniku bazodanowym SQL Server – February CTP, cz. II

  [3]  Co nowego w silniku bazodanowym SQL Server 2008 November CTP

  [4]  Books Online na temat PBM

  [5]  Blog Boba Beauchemin

  [6]  Webcast o Policy Based Management

  [7]  TechNet Webcast: Using the New Policy-Based Management Framework in SQL Server 2008 (Level 300)


  Damian Widera, Project Manager & Team Lead (MCT, MCITP – DBA, MCSD.NET)
Od 8 lat zajmuje się projektowaniem, tworzeniem i wdrażaniem aplikacji wykorzystujących platformę .NET, SQL Server oraz Oracle. Obecnie pracuje jako project manager dla LGBS Polska. Pracował także jako trener, programista, administrator baz danych, twórca domumentacji oraz analityk biznesowy. Aktywnie współpracuje z polskim oddziałem Microsoft publikując atykuły, webcasty oraz porady z zakresu SQL Server na stronach TechNet. Jest współautorem książki „Serwer SQL 2008. Administracja i programowanie”.

Speaker na wielu konferencjach, m.in. Microsoft Heroes Happen Here, C2C, European PASS Conference, Microsoft Technology Summit, Energy Launch, TechED. Od 2004 r. posiada certyfikaty firmy Microsoft: MCT, MCITP–DBA oraz MCSD.NET. Jest współtwórcą oraz liderem jednej z najwiekszych grup pasjonatów SQL Server w Polsce – Śląskiej Regionalnej Grupy Microsoft (PLSSUG Katowice). Od listopada 2008 jest prezesem Polish SQL Server Users Group (PLSSUG) w Polsce. W styczniu 2009 nagrodzony tytułem MVP w kategorii SQL Server.
 Do początku strony Do początku strony

Akademia SQL     Akademia SQL - Część 2: Resource Governor