MS SQL Server 6 5 Bezpieczeństwo w SQL Server




MS SQL Server 6.5 - Bezpieczeństwo w SQL Server









Bezpieczeństwo należy rozumieć poprzez:
Ochrona przed atakami z wewnątrz sieci LAN, którą administrujemy.
Wykorzystuje się tutaj różnego rodzaju ograniczenia dostępu do zasobów zarówno
sprzętowych jak i programowych.
Ochrona przed atakami z zewnątrz czyli z sieci WAN lub z Internetu. W tym
przypadku wykorzystujemy takie zabezpieczenia jak serwery pośredniczące czy
firewall'e.

 

Kontrola dostępu do danych w MS SQL Server może być zorganizowana na jeden z
trzech sposobów określających w jaki sposób SQL Server zarządza kontami
użytkowników oraz na jakich zasadach współpracuje z systemem
operacyjnym. Standardowy tryb ochrony danych
W systemie tym cała odpowiedzialność za zarządzanie dostępem użytkowników do
danych ponosi oprogramowanie serwera. Użytkownik chcący dostać się do swoich
danych musi zalogować się do bazy za pośrednictwem programu z pakietu SQL
Server'a. Cały system zabezpieczeń jest realizowany tylko przy użyciu programów
SQL Server'a.
Standardowego typu ochrony danych używa się gdy serwerem plików nie jest
Windows NT lub gdy do połączenia z SQL server'em używa się wielu
protokołów.  Zintegrowany tryb ochrony danych
W zintegrowanym trybie ochrony danych wykorzystujemy system Windows NT, a w
szczególności jego wysoki system bezpieczeństwa. W tym przypadku to system jest
odpowiedzialny za zarządzanie dostępem do danych przez użytkowników. Zaletą tego
systemu jest fakt, że podanie jednego hasła przy logowaniu do Windows NT pozwala
korzystać ze wszystkich zasobów zarządzanymi przez system. Wraz z zalogowaniem
się do Windows NT użytkownik łączy się z serverem SQL na podstawie praw dostępu
zapisanych w strukturach Windows NT. To system operacyjny decyduje czy logujący
użytkownik otrzyma połączenie do SQL Server czy nie. Administrator systemu NT
jest administratorem (S.A) bazy SQL.  Mieszany tryb
ochrony danych
System mieszany, jak sama nazwa wskazuje, jest kombinacją dwóch wyżej
wymienionych systemów. Użytkownik może zalogować się do bazy danych na dwa
sposoby:
Poprzez zalogowanie się do systemu NT (wtedy tworzone jest automatyczne
połączenie z SQL Server).
Nie logując się w systemie NT (wtedy SQL Server przejmuje procedurę
sprawdzania danych logującego się użytkownika).
Aby uaktywnić jeden z trzech trybów ochrony danych w MS SQL Server należy
uruchomić program SQL Enterprise Manager. Następnie uruchamiamy serwer,
który chcemy skonfigurować. Gdy serwer już pracuje uruchamiamy z menu
Server opcję SQL Server Configure i uaktywniamy żądaną opcję.
Aby mieć możliwość śledzenia ewentualnej próby złamania hasła należy uaktywnić
opcję Audit Level.

 

SQL Server posiada dwa poziomy użytkowania. Pierwszym z nich jest tzw.
login. Poprzez login mamy możliwość przyłączenia się do bazy
danych. Wszystkie login'y są przechowywane w głównej bazie danych
(master base) w tablicy SYSLOGINS.
Drugim poziomem jest tzw. user czyli użytkownik. User'a należy
interpretować jako sposób korzystania z zasobów (tabel, widoków itp.) bazy
danych. Każdy user może korzystać z wielu baz danych. User może
znajdować się w jednej lub wielu bazach danych. Wszyscy user'zy danej
bazy danych znajdują się w tabeli SYSUSERS w tejże bazie danych.
System ten stworzony jest po to aby jeden użytkownik posiadał wiele
możliwości dostępu do różnych baz danych w zależności od wykonywanego
zadania. Używanie SQL Enterprise Manager aby stworzyć
LOGIN
SQL Enterprise Manager pozwala na proste stworzenie logowania w bazie
dancych:
Uruchomiamy SQL Enterprise Manager z grupy Microsoft SQL Server 6.5.
Wybieramy serwer do którego chcesz dodać login, później wybieramy
Manage i Logins.
Wprowadzamy informacje do nowego logowania i (opcjonalnie) zaznaczamy
bazy danych do których będzie dostęp.
Naciskamy Add aby stworzyć login. Wprowadzamy hasło użytkownika
i weryfikujemy je wprowadzając ponownie.
Jeżeli istnieje potrzeba, to należy dodać użytkownika do bazy danych, tzn.
zaznaczyć bazę w SQL Enterprise Manager, wybrać Users z menu
Manage. Należy wybrać użytkownika który ma być dodany do bazy danych z
listy rozwijalnej Login i wprowadzić nazwę którą będzie
identyfikowany. Nie powinno się zmieniać tej nazwy chyba, że chce się stworzyć
alias. Na koniec należy nacisnąć Add. Odrzucanie login'ów
i user'ów w SQL Enterprise Manager
Okna dialogowe Manage Logins i Manage Users z SQL
Enterprise Manager udostępniają przycisk odrzucenia (Drop). Należy użyć
tej opcji jeżeli nie chcemy aby dany user lub login miał dostęp do
bazy danych lub serwera.
Aby szybko odrzucić, należy znaleźć user lub login w drzewie
i kliknąć prawym klawiszem myszki. Wybrać Delete aby skasować
user lub login. Używanie sp_addlogin aby
stworzyć logowania do serwera
Składnia dla procedury sp_addlogin:




sp_addlogin login_id [, password [, defaultdb [,
defaultlanguage]]]
gdzie:
login_id to nazwa logowania,
password to hasło które jest opcjonalne, jednak zaleca się stosować
je, gdyż zapewnia podstawowy poziom bezpieczeństwa,
defaultdb domyślna baza danych w której serwer SQL powinien
umieścić dane logowania po połączeniu się z nią. Jeżeli ustawimy tę wartość na
NULL wtedy serwer SQL umieści dane logowania w bazie głównej
(master),
defaultlanguage jest domyślnym językiem który powinien być związany
z login'em. Jeżeli ustawimy tę wartość na NULL serwer SQL przypisze
domyślny język dla serwera.
Użytkownik może zmienić swoje hasło w dowolnym momencie używając procedury
sp_password. Na przykład:




sp_password 'Agent99', 'Bond'
zmienia hasło aktualnie połączonego użytkownika z Agent99 na
Bond. 
Poniższy przykład demonstruje stworzenie logowania do serwera z domyślną bazą
pubs i hasłem Doniczka:




sp_addlogin 'Zbigniew', 'Doniczka',
pubs  Używanie
sp_adduser aby dodać nowych użytkowników do bazy
Procedura sp_adduser jest podobna do sp_addlogin. Dodaje
istniejący login do aktualnie używanej bazy danych. Wymaga to jednak żeby
użytkownik był w bazie danych przed wydaniem polecenia. Składnia polecenia:




sp_adduser login_id [, username [,
grpname]]
gdzie:
login_id to nazwa logowania dodawana jako user do bazy. Błędne
logowania nie będą dodane,
username nazwa użytkownika która może być inna niż w logowaniu -
tworzy się wtedy alias,
grpname oznacza grupę do której użytkownik będzie należał. Używanie
grup znacznie upraszcza ustalanie bezpieczeństwa bazy ponieważ w
przeciwieństwie do przyznawania praw poszczególnym użytkownikom nadaje się
prawa grupie użytkowników.
Poniżej przykład dodawania użytkownika (user) do aktywnej bazy.
Ponieważ nie ma podanej nazwy użytkownika username, nazwa login_id
jest wzięta za nią:




sp_adduser
'Stefan'  Używanie
procedur sp_droplogin i sp_dropuser
Aby usunąć login lub user z bazy serwera, należy wykonać
systemowe procedury sp_droplogin i sp_dropuser. Składnia ich
jest podobna:




sp_droplogin login_idsp_dropuser
username

 

Serwer SQL umożliwia tworzenie grup użytkowników w taki sposób, że prawa są
przyznawane wszystkim członkom grupy. Ten metoda przyznawania praw powoduje że
ustalanie ich jest o wiele łatwiejsze niż w przypadku gdybyśmy przyznawali je
pojedynczym użytkownikom.  Używanie SQL Enterprise
Manager do dodawania grup

SQL Enterprise Manager umożliwia w sposób łatwy dodać grupę:
Uruchomiamy SQL Enterprise Manager i zaznaczamy bazę w drzewie
serwera w której chcemy utworzyć grupę.
Z menu Manage wybieramy Groups i wprowadzamy informacje
nowej grupy. Wybieramy użytkowników którzy mają należeć do grupy.
Naciskamy przycisk Add aby dodać grupę.
  Odrzucanie grup za pomocą SQL Enterprise
Manager
Odrzucanie grup za pomocą SQL Enterprise Manager wymaga tych samych czynności
co ich stworzenie. Można użyć okna dialogowego Manage Groups aby odrzucić
niepotrzebne grupy z serwera. Usunięcie grupy nie usuwa użytkowników należących
do niej. Wszystkie prawa przyznane użytkownikom należącym do grupy są
zabrane.

 

Pozwolenia są prawami dostępu do obiektu (takiego jak tabela) w bazie danych.
Pozwolenia są przyznawane dla użytkownika lub grupy aby użytkownik lub grupa
mogła wykonać taką funkcję jak na przykład wyselekcjonowanie informacji, dodanie
nowego rekordu (insert), lub aktualizacja danych w bazie. Kilka pozwoleń
do obiektów istnieje w bazie danych z racji spływania praw. Pozwolenia są
pośrednio przyznawane właścicielowi lub twórcy obiektu. Właściciel może
decydować czy przydzielić jakieś prawa dostępu innym użytkownikom lub grupą jako
użytkownik rozszerzonych prawach.

Właściciel bazy danych (database owner (dbo)) ma pełne prawa
do wszystkich obiektów w bazie danych których jest właścicielem.
Administrator systemu (system administrator (SA)) ma pełne
prawa do wszystkich stworzonych obiektów znajdujących się na serwerze.

SQL Server dostarcza poleceń GRANT i REVOKE do dawania
i zabierania praw dla użytkownika. SQL Enterprise Manager również pozwala w
łatwy sposób dawać i odbierać prawa.  Prawa do
obiektów bazy danych
Prawa dostępu do obiektów są pozwalającymi działać na tabelach i innych
obiektach (takimi jak przechowywanych procedurach) w bazie danych.
Poniżej jest podana lista możliwych praw do tabel i ich rodzajów:
SELECT pozwala użytkownikowi wybierać i czytać informacje z
tabeli. Należy zapamiętać że prawa selekcji mogą być przyznawane dla
indywidualnych kolumn w środku tabeli lub widoku, nie tylko dla całej tabeli.
INSERT pozwala użytkownikowi wstawić nowe dane do tabeli lub
widoku.
UPDATE pozwala użytkownikowi zmienić dane zapisane w tabeli lub
widoku. Należy zapamiętać że UPDATE może być przyznawane do
indywidualnych kolumn w tabeli lub w widoku nie tylko całej tabeli.
DELETE pozwala użytkownikowi na usuwanie danych zapisanych w tabeli
lub widoku.
EXECUTE pozwala użytkownikowi na uruchomienie procedur.
DRI/REFERENCES pozwala użytkownikowi dodawać różne klucze
ograniczające w tabeli.
DLL/DATA Definition Language pozwala użytkownikowi na tworzenie,
zmienianie lub opuszczanie obiektów w bazie danych. Przykładowe komendy to
CREATE TABLE, DROP DATABASE, ALTER TABLE.
ALL pozwala użytkownikowi na pełny dostęp do obiektu. Uwaga tylko
SYSTEM ADMINISTRATOR może użyć ALL kiedy DDL jest
używane.  Używanie SQL Enterprise Manager do zarządzania
prawami
SQL Enterprise Manager dostarcza prostego sposobu administrowania prawami dla
użytkowników i grup w bazie danych.
Wykonujemy poniższe kroki:
Uruchomiamy SQL Enterprise Manager i podświetlamy bazę danych w
drzewie obiektów serwera dla której chcemy nadawać jakieś prawa.
Wchodzimy do menu obiektu, wybieramy Permissions, zaznaczamy BY
USER PAGE i BY OBJECT PAGE. Zmiana praw dla jakiejkolwiek
kolumny nie nastąpi dopóki nie przyciśniemy przycisku SET.
Używając okna dialogowego praw obiektu wyszczególniamy prawa wymagane dla
użytkownika i naciskamy klawisz SET aby zatwierdzić zmiany.
Używamy OBJECT FILTER OPTIONS aby ograniczyć limit typów obiektów
wyświetlanych w tabeli w lewej dolnej części okna dialogowego.
 Używanie GRANT i REVOKE
Interfejs nadawania praw SQL Server's Transact-SQL jest bezpośrednim
narzędziem dodawania i odbierania praw. Komenda GRANT Transact-SQL
jest używana aby dawać prawa dla użytkowników lub grup w SQL Server. Dawanie
praw pozwala użytkownikowi lub grupie dawać przyznane prawa.




GRANT permission_listON object_nameTO
name_list
Należy użyć REVOKE aby odebrać prawa użytkownikom. Jest to
przeciwieństwo GRANT i jest stworzone jako operacja typu cofnij lub
odbierz dla jakichkolwiek praw przyznanych dla użytkowników lub grup.
Składnia dla REVOKE jest następująca:




REVOKE permission_listON object_nameFROM
name_list

PERMISSIONS_LIST jest listą praw przyznanych lub odebranych.
Zbiorowe prawa powinny separowane przecinkami. Jeśli jest określony ALL
wtedy wszystkie prawa które nadawca praw chciał nadać są nadane.
OBJECE_NAME jest tabelą, widokiem lub zachowaną procedurą której
prawa są przyznawane lub odbierane.
NAME_LIST jest listą nazw użytkowników lub grup dla których prawa
są nadawane lub odbierane. Zbiorowe listy nazwisk muszą być separowane
przecinkami. Wypisanie w tym miejscu PUBLIC zawiera wszystkich
użytkowników.
Następujące przykłady przyznawania praw SELECT i UPDATE
dla tabeli AUTHORS :




GrantSELECT,
UPDATEOnAUTHORSToPUBLICGo
Następujące przykłady odbierania praw DELETE dla tabeli
EMPLOYEE :




Revoke DELETEOn EMPLOYEEFrom
PUBLICGo

 

Widoki zapewniają sposób na zwiększenie bezpieczeństwa ponieważ ograniczają
dane które są dostępne dla użytkownika. Weźmy sobie taki przykład, możemy mieć
grupę użytkowników w GRP_JUNIOR_EMP którym nie pozwalamy widzieć żadnych
autorów którzy otrzymują ponad 50 % taniej ponieważ są one dostępne tylko dla
starszych rangą menadżerów i innych pracowników w przedsiębiorstwie.
Poniższy listing pokaże jak to zrobić:




( Na początku dodajemy grupę )sp_addgroup
grp_junior_empgo( następnie odbieramy prawo SELECT z
podstawowej tabeli z grupy PUBLIC ) Revoke Select on
TitleAuthor from publicgoRevoke Select on
Authors from publicgo( tworzymy widok który
ogranicza dostęp ) Create View
Vie_AuthorsAs  Select
*  From AUTHORS  Where
AU_ID in (Select AU_ID     From
TITLEAUTHOR     Where ROYALTYPER <=
50)Go( Przyznajemy SELECT dla nowego widoku dla
członków grupy ) grant select on Vie_Authors to
grp_junior_empgo

 

Procedury mogą być użyte w bardzo różny sposób aby zwiększyć stopień
bezpieczeństwa dla danych które ukrywa się (izoluje) przed danym użytkownikiem
lub grupą użytkowników.




( Dodajemy grupę ) sp_addgroup
grp_junior_empgo( następnie odbieramy prawo SELECT z
podstawowej tabeli z grupy PUBLIC ) Revoke Select on
TitleAuthor from publicgoRevoke Select on
Authors from publicgo( tworzymy procedury
które ograniczają dostęp ) Create Procedure
up_SelectAuthorsAs   Select
*   From
AUTHORS      Where AU_ID in
(Select AU_ID      From
TITLEAUTHOR      Where ROYALTYPER
<= 50)Go( dodajemy EXECUTE dla widoku dla członków
grupy ) grant execute on up_SelectAuthors to
grp_junior_empgo
W poniższym listingu AUTHORS przyznawane jest prawo aktualizacji
zatrudnionych bez możliwości aktualizacji czegokolwiek innego.




( Dodajemy grupę ) sp_addgroup
grp_junior_empgo( następnie odbieramy prawo SELECT z
podstawowej tabeli z grupy PUBLIC )Revoke Update, Delete,
Insert on Authors from publicgo( tworzymy
procedury ograniczające dostęp )Create Procedure
up_SetContractForAuthor     @nAu_Id
id,     @bContract
bitAs   Update AUTHORS   Set
CONTRACT = @bContract   Where AU_ID =
@nAu_Id   Print "Author's contract flag
set."Go( Przyznajemy EXECUTE dla widoku dla członków
grupy )grant execute on up_SetContractForAuthor
to grp_junior_empgo


Data ostatniej modyfikacji 25.XI.1999.Wszelkie uwagi mile widziane



Wyszukiwarka

Podobne podstrony:
MS SQL Server 6 5 1
MS SQL Server 6 5 Zarządzanie indeksowaniem danych i kluczami
MS SQL Server 6 5 Zarządzanie i tworzenie widoków
MS SQL Server 6 5
MS Project 10 i MS Project Server 10?ektywne zarzadzanie projektem i portfelem projektow pro21e
MS Project 07 i MS Project Server 07?ektywne zarzadzanie projektami mspr27
SQL MS SQL
Łączenie C z Ms SQL Serwer
Bazy systemowe w MS SQL
Kurs MS SQL CentrumXP
SQL Server 2012 Tutorials Analysis Services Tabular Modeling
Interbase vs SQL Server
AutoGallery SQL Moving To A New Server

więcej podobnych podstron