· Bezpieczeństwo: systemy wyposażone są w funkcje zabezpieczeń ułatwiające ochronę przed atakami sieciowymi. Funkcje zabezpieczeń przyczyniają się do podwyższenia poziomu poufności, integralności oraz dostępności systemu i danych.
· Poufność informacji: użytkownicy mają wpływ na bezpieczeństwo i wykorzystanie dotyczących ich danych oraz weryfikację zgodności procesów związanych z gromadzeniem, nadzorem i wykorzystaniem danych z przyjętymi zasadami rzetelnego przetwarzania informacji.
· Niezawodność: gwarancja dostępności niezbędnych funkcji związanych z systemem i usługami, zwłaszcza w aspekcie operacji o podstawowym znaczeniu dla działalności prowadzonej przez organizacje klientów.
W ostatnich latach firma Microsoft stworzyła inicjatywę Trustworthy Computing (patrz ramka), czyli inicjatywę bezpiecznego środowiska komputerowego. Aby utrzymać w mocy tę inicjatywę zespół SQL Server podjął następujące założenia dotyczące bezpieczeństwa:
· bezpieczeństwo z definicji,
· bezpieczeństwo w programowaniu,
· bezpieczeństwo komunikacji.
Do SQL Server 2005 wprowadzono następujące elementy bezpieczeństwa:
· restrykcyjny dostęp do serwera,
· blokowanie usług oraz bezpieczna konfiguracja usług,
· redukcja przestrzeni ataku dla nowych elementów.
Celem artykułu jest zaprezentowanie tych elementów bezpieczeństwa SQL Servera, które są istotne z punktu widzenia programisty. Bezpieczeństwo możemy podzielić na dwie części: pierwsza to bezpieczeństwo bazy danych, a druga to bezpieczeństwo samych danych. W pierwszej części zaprezentowane zostaną nowe techniki tworzenia użytkowników i zarządzania nimi, a w drugiej, w jaki sposób zabezpieczyć nasze dane – na przykład szyfrując je.
Zarządzanie użytkownikami
W wersji SQL Server 2000, aby stworzyć użytkownika, należało użyć procedury składowanej sp_addlogin. W nowej wersji SQL 2005 zarządzanie użytkownikami zostało mocno zmodyfikowane. Położono bardzo duży nacisk na lepszą integrację użytkowników z systemem operacyjnym i polisami bezpieczeństwa na nim ustawionych. W tym celu stworzono instrukcję CREATE LOGIN. Instrukcja ta pozwala na zarządzanie bardziej zaawansowanymi funkcjami wygasania haseł oraz wymuszania ustalonych reguł, co do jakości haseł.
Przykład pokazuje najprostsze użycie – stworzenie użytkownika z określonym hasłem oraz nadanie uprawnień do domyślnej bazy danych:
CREATE LOGIN ArturZ
WITH PASSWORD = `password`, DEFAULT_DATABASE= AdventureWorks
Kolejnym krokiem jest możliwość integracji z polisami systemu operacyjnego. W tym celu nasze polecenie należy rozszerzyć o dodatkowe słowa kluczowe. W tym przypadku powinno ono wyglądać następująco:
CREATE LOGIN ArturZ
WITH PASSWORD = ‘password’,
DEFAULT_DATABASE = AdventureWorks,
CHECK_POLICY = ON,
CHECK_EXPIRATION = ON
Jeśli w systemie operacyjnym ustalimy odpowiednie polisy będziemy mogli sprawdzić poprawność działania ustawień. W tym celu w konsoli ustawimy regułę na minimalną długość 8 znaków.
Aby sprawdzić, czy polisy są sprawdzane, zmieńmy hasło naszego użytkownika:
ALTER LOGIN ArturZ WITH PASSWORD = `az`
Wynik działania tego polecenia będzie następujący:
Msg 15116, Level 16, State 1, Line 1
Password validation failed. The password does not meet policy requirements because it is too short.
Aby stworzyć użytkownika bazy danych opartego o login systemu operacyjnego należy wykonać następujące polecenie:
CREATE LOGIN [server\\ArturZ] FROM WINDOWS
WITH DEFAULT_DATABASE = AdventureWorks
Schematy baz danych
Schematem nazywamy grupę obiektów, które pozwalają na łatwe zabezpieczanie dostępu do danych. Dzięki temu możliwe jest przypisanie użytkownika do schematu w bardzo prosty sposób używając poleceń T-SQL-a. Aby korzystać ze schematów, należy je na początku stworzyć. Do tego celu służy polecenie CREATE SCHEMA:
CREA