SQL Server and Windows

advertisement
Ćwiczenie 2
Zarządzanie mechanizmami bezpieczeństwa
SQL Servera
1
1.Wprowadzenie teoretyczne. .................................................................................................... 2
2.Tryby zabezpieczeń SQL Servera ........................................................................................... 3
Uwierzytelnianie(zabezpieczenie) może być realizowane na dwa sposoby: ..................... 3
2.1. Tryb uwierzytelniania Windows (Windows integrate mode) ......................................... 3
2.2. Tryb uwierzytelniania „SQL Server and Windows” (Mixed Mode) .............................. 3
2.2.1. SQL Server Authentication Mode ............................................................................ 3
3. Użytkownicy bazy danych ..................................................................................................... 6
3.1. Dodawanie użytkownika do bazy danych ....................................................................... 6
3.2. Nazwa użytkownika — Guest ......................................................................................... 7
3.3. Zmiana właściciela bazy danych ..................................................................................... 8
4. Role ........................................................................................................................................ 8
4.1. Role o zasięgu serwera .................................................................................................... 8
4.2. Przypisanie konta logowania do roli serwera .................................................................. 8
4.3. Role bazy danych ............................................................................................................ 9
4.3.1. Role w bazie danych zdefiniowane przez użytkownika ........................................... 9
4.4. Role aplikacji................................................................................................................. 10
5. Uprawnienia użytkownika.................................................................................................... 11
5.1. Instrukcje uprawnień ..................................................................................................... 12
5.2. Przydzielanie uprawnień polecenia ............................................................................... 12
5.3. Uprawnienia obiektu ..................................................................................................... 13
5.3.1. Przyznawanie uprawnień obiektu........................................................................... 13
6.Przebieg ćwiczenia. ............................................................................................................... 15
7.Treść sprawozdania. .............................................................................................................. 18
8. Przykładowe pytania kontrolne. ........................................................................................... 18
1.Wprowadzenie teoretyczne.
Zarządzanie mechanizmami bezpieczeństwa polega na kontrolowaniu dostępu do SQL
Servera, jego baz danych i obiektów, które zawierają oraz na przydzieleniu uprawnień
użytkownikom wykonującym czynności administracyjne. Uwierzytelnianie to proces, w
którym SQL Server sprawdza dane użytkownika.
Jeżeli SQL Server działa w systemie Windows 2000/NT, przy próbie połączenia z SQL
Serverem 2000 zabezpieczenia są sprawdzane w trzech różnych miejscach(Rys.1).
Sprawdzenie może występować: 1)- na poziomie Windows 2000, 2)-samego SQL Servera (w
formie logowania do niego), 3)- na poziomie bazy danych (w formie nazwy użytkownika
bazy danych). Aby połączyć się z SQL Serverem należy podać prawidłowe hasło i nazwę
użytkownika lub korzystać z istniejącego konta Windows. Jeżeli dane logowania są
prawidłowe, nastąpi połączenie z SQL Serverem. Jeżeli dane nie są prawidłowe, nastąpi
odmowa dostępu. Podanie nazwy przy logowaniu do SQL Serwera nie mówi nic o tym, z
którą bazą danych użytkownik chce się połączyć, jedynie nazwa użytkownika na poziomie
bazy ustawia tą zasadę. Logowanie nie daje również faktycznego dostępu do jakiegokolwiek
obiektu bazy danych; wymaga to praw dostępu.
2
Rys.1
System bezpieczeństwa bezpośrednio samego SQL Serwera jest oparty ma modelu
dwuwarstwowym. Pierwsza warstwę stanowi sam proces uzyskiwania dostępu do SQL
Servera. Ostatnią warstwą zabezpieczeń są prawa dostępu. Po pomyślnym załogowaniu się do
SQL Servera i przełączeniu się do bazy danych, należy uzyskać odpowiednie prawa dostępu
do obiektów bazy (zarówno do odczytu jak i modyfikacji).
2.Tryby zabezpieczeń SQL Servera
Uwierzytelnianie(zabezpieczenie) może być realizowane na dwa sposoby:
 Uwierzytelnianie przez Windows (Windows only)
 Tryb mieszany (SQL Server and Windows).
Tryb uwierzytelniania określa czy system Windows lub obydwa Windows i SQL Server są
odpowiedzialne za kontrolę poprawności żądań połączenia z SQL Serverem.
2.1. Tryb uwierzytelniania Windows (Windows integrate mode)
W tym trybie połączenia z SQL Serverem uwierzytelniane są na podstawie konta w systemie
Windows, z którego łączy się użytkownik. SQL Server sprawdza, czy w tabeli syslogins bazy
danych Master znajduje się login odpowiadający danemu kontu i jeśli tak, pozwala na
nawiązanie połączenia. To połączenie nazywa się zaufanym, ponieważ w procesie
uwierzytelniania SQL Server ufa informacjom otrzymanym od kontrolera domen. To
rozwiązanie ma tę zaletę, że aby połączyć się z SQL Serverem, wystarczy załogować się tylko
raz – w systemie Windows, a poza tym pozwala ono korzystać z domenowych mechanizmów
bezpieczeństwa, takich jak określenie minimalnej długości i okresu ważności hasła,
blokowanie kont czy szyfrowanie danych.
2.2. Tryb uwierzytelniania „SQL Server and Windows” (Mixed Mode)
Mieszany tryb uwierzytelniania pozwala na jednoczesne stosowanie mechanizmów
uwierzytelniania SQL Servera i systemu Windows. W tym przypadku zabezpieczenia
użytkownik może się połączyć z SQL Serverem przy pomocy systemu Windows ( Windows
Integrated Mode) lub przez SQL Server (SQL Server Authentication Mode). Mixed Mode jest
najlepszym wyborem dla zachowania zgodności wstecz z wcześniejszymi wersjami i
dostarcza wiele możliwości połączeń z komputerami nie korzystającymi z systemu Windows
w celu połączenia, jak np. klienci Novell NetWare, Linuks.
2.2.1. SQL Server Authentication Mode
Ten tryb wchodzi do trybu mieszanego oraz wyznacza konsekwentność czynności SQL
Servera do uwierzytelniania użytkowników. W trybie „SQL Server 2000 and Windows”
uwierzytelnianie przez SQL Server (SQL Server Authentication Mode) występuje kiedy SQL
Server akceptuje identyfikator logowania — ID i hasło użytkownika oraz sprawdza czy dane
3
są poprawne, bez żadnej pomocy systemu Windows. Metoda ta zawsze jest używana na
komputerach z systemem Windows 9x i jest opcjonalna na komputerach z systemem
Windows 2000/NT. Tryb ten nie jest tak bezpieczny jak Windows Integrated Mode i nie jest
polecany dla SQL Servera przechowującego bardzo istotne informacje. Informacje na temat
logowania przechowywane są na SQL Serverze (w bazie danych master, w tablicy
systemowej sysxlogins).
Po zainstalowaniu SQL Servera 2000, istnieje jedynie standardowy login sa. Na komputerach
z systemem Windows 2000, grupa administratorów lokalnych jest również dodana jako
alternatywa do sa (jako członkowie roli sysadmin).
Hasła logowania w trybie SQL Server Authentication Mode są przetrzymywane w
kolumnie password tabeli sysxlogins w bazie danych master. Aby obejrzeć wpisy w tabeli
sysxlogins, należy uruchomić SQL Server Query Analyzera i uruchomić poniższe zapytanie
(należy posiadać uprawnienia roli sysadmin, aby uruchomić to zapytanie):
SELECT substring (name,1,25) AS name,
substring (password,1,20) as password, language
FROM sysxlogins
name
password
language
............. ........................ ..............................
BUILTIN\Administrators
NULL
us_english
RHOME\SQLService
NULL
us_english
sa
0x2131214A212C312939442439285B585D NULL
NULL
NULL
NULL
(4 row(s) affected)
Pierwszy wiersz w wydruku wyjściowym prezentuje grupę lokalnych administratorów
systemu Windows. Następny wiersz reprezentuje konto usługi jakie zostało wybrane dla usług
SQL Servera podczas instalacji. Identyfikator logowania sa pokazany w następnym wierszu
jest instalowany wraz z hasłem podczas instalacji systemu. Wszystkie konta i hasła SQL
Servera są trzymane w tabeli systemowej. Jeżeli hasło jest zerowe (puste), w kolumnie
password pojawi się słowo kluczowe NULL. Jeżeli hasło jest nie puste, jest ono
przechowywane jako zaszyfrowany tekst, w systemie szesnastkowym (jak pokazano dla sa).
Należy zwrócić uwagę na następne:

Jedynie użytkownik posiadający uprawnienia roli sysadmin (również użytkownik sa) może zobaczyć
kolumnę password. Żaden inny użytkownik nie może jej zobaczyć, chyba, że zostanie mu bezpośrednio
przydzielone prawo do przeglądania tej kolumny.

Algorytm szyfrowania jest jednokierunkowy. Jeżeli hasło zostało zaszyfrowane, nie może być
odszyfrowane. Podczas logowania, podane hasło jest szyfrowane a następnie porównywane z
zaszyfrowanym hasłem w tabeli sysxlogins. Jeżeli do siebie pasują, użytkownik otrzymuje dostęp do
serwera. Jeżeli nie pasują, użytkownik otrzyma komunikat Login Failed i nie uzyska połączenia.
Również w przypadku korzystania z logowania z wykorzystaniem zabezpieczeń Windows Only, żadne
hasła nie są przechowywane na SQL Serverze.
Pierwszym krokiem w ustawieniach dostępu do SQL serwera jest utworzenie kont logowania.
Można dodać konta przy pomocy systemowej procedury składowej sp_addlogin lub SQL
Server Enterprise Managera:
sp_addlogin [@loginname =] 'login' [,[@passwd =] 'password'
[,[@defdb =] 'database' [,[@deflanguage =] 'language'
[,[@sid =] 'sid' [,[@encryptopt =] 'encryption_option']]]]]
Znaczenie składni:
4

login jest nazwą, używaną przez użytkownika podczas logowania. Nazwa ta musi być poprawnym
identyfikatorem SQL Servera (rozpoczynającym się od litery lub znaku #,@ lub _, a reszta znaków może
być złożona z tych znaków lub liter oraz liczb – do 128 znaków Unicode).

password jest hasłem związanym z nazwą podawaną przy logowaniu. Hasło jest puste, jeśli żadne nie
zostało wybrane.

database jest domyślną bazą danych, do jakiej połdączy się użytkownik po zalogowaniu. Jeżeli ten
parametr nie zostanie określony, domyślnie przyjmowaną bazą danych jest master.

language jest domyślnym językiem używanym dla danego użytkownika po zalogowaniu. Jeżeli parametr
ten nie zostanie określony, domyślnie przyjmowany jest język US_English.

sid jest identyfikatorem zabezpieczeń określanym dla użytkownika (ta opcja nie jest zalecana).

Można użyć opcji encryption_option do wyłączenia szyfrowania hasła (wymienionego wcześniej).
Własność ta pozwala na rozpakowanie zaszyfrowanego hasła z wcześniejszej wersji SQL Servera i
umieszczenie go bezpośrednio w SQL Serverze 2000, tak, że hasło logującego się użytkownika będzie
również działało z tym SQL Serverem. Aby wyłączyć szyfrowanie należy użyć tutaj dosłownego polecenia
skip_encryption.
Aby dodać dane logowania do serwera, należy otworzyć SQL Server Query Analyzer i
zalogować się. Następnie uruchomić następujące polecenie Transact-SQL (T-SQL):
EXEC sp_addlogin 'nazwa_użytkownika', 'hasło_użytkownika'
Kolejną operacją, jaką może wykonać użytkownik jest zmiana hasła. Również w tym
przypadku można skorzystać z SQL Server Enterprise Managera lub z procedury
systemowej sp_password:
sp_password [[@old =] 'old',] {[@new =] 'new'}
[,[@loginame =] 'login']
Składnia:

old oznacza stare hasło.

new oznacza nowe hasło.

W przypadku loginame jeżeli zalogowany użytkownik posiada uprawnienia ról sysadmin lub
securityadmin, może zmienić dowolne hasło. Faktycznie, nie potrzeba znać starego hasło danej osoby;
wystarczy po prostu ustawić stare hasło jako hasło puste.
Jednym z istotnych punktów jest to, że użytkownicy posiadający własności roli securityadmin mogą zmienić
wszystkie hasła za wyjątkiem haseł użytkowników z uprawnieniami roli sysadmin. Natomiast użytkownicy
posiadający uprawnienia roli sysadmin mogą zmieniać wszystkie hasła, bez wyjątku.
Poniżej przedstawiono przykład wykorzystania systemowej procedury składowej
sp_password:
EXEC sp_password NULL, 'newpass', 'richard'
Pomimo tego, że stare hasło użytkownika Richard nie jest znane, administrator może zmienić
hasło. Zwykli użytkownicy nie mogą tego wykonać i muszą znać swoje stare hasło, aby
dokonać zmiany na nowe — jest to jeden ze sposobów zabezpieczenia. Procedura ta nie
powinna być trudna do przestrzegania ponieważ użytkownik musi się najpierw zalogować
(podając stare hasło) zanim będzie mógł uruchomić polecenie zmieniające hasło.
Można również zmienić domyślną bazę danych lub domyślny język zalogowanego
użytkownika. Zmiany można wprowadzić z SQL Server Enterprise Managera lub przy
pomocy procedur sp_defaultdb lub sp_defaultlanguage:
sp_defaultdb loginname, defdb
sp_defaultlanguage loginname [, language]
5
Parametry są identyczne jak omawiane wcześniej. Opcje te pozwalają na zmianę różnych pól
w tabeli systemowej sysxlogins (zmianę domyślnej bazy lub domyślnego języka).
Do zarządzania logowaniem służą jeszcze dwie dodatkowe procedury systemowe:
sp_helplogins i sp_droplogin. Procedura składowa sp_helplogins umożliwia wygenerowanie
raportu na temat kont, jakie zostały utworzone na danym serwerze.
Procedura systemowa sp_droplogin usuwa wpis na temat konta logowania z tabeli
sysxlogins. Po usunięciu wpisu z tabeli, użytkownik nie może już zalogować się do SQL
Servera.
sp_droplogin login
W przypadku tej procedury login ma to samo znaczenie jak w omawianych wcześniej
procedurach.
3. Użytkownicy bazy danych
Po konfiguracji zabezpieczeń logowania i ustawieniu kont, można rozpocząć konfigurację
dostępu do bazy danych. Posiadanie konta w SQL Server nie oznacza dostępu do żadnej z baz
danych na serwerze. Do tego wymagane jest posiadanie nazwy użytkownika bazy danych.
Każda z baz danych ma osobną ścieżkę dostępu, która jest przechowywana w tabeli
systemowej sysusers w każdej z baz danych. Konta logowania są zasadniczo mapowane do
nazw użytkowników w każdej z baz, do której użytkownik ma posiadać dostęp. Można
utworzyć takie mapowanie lub utworzyć użytkownika bazy danych korzystając z procedury
systemowej sp_grantdbaccess lub z SQL Server Enterprise Managera.
3.1. Dodawanie użytkownika do bazy danych
Aby dodać użytkownika do bazy danych, należy uruchomić procedurę systemową
sp_grantdbaccess:
sp_grantdbaccess [@loginame =] 'login' [,[@name_in_db =] 'name_in_db'] OUTPUT
Znaczenie składni:

login jest nazwa stosowaną przy logowaniu dodaną wcześniej (jako konto użytkownika w SQL Serverze
lub konto użytkownika czy grupa Windows NT/2000).

name_in_db jest nazwą, jaka ma zostać nadana użytkownikowi korzystającemu z bazy danych (nazwa
użytkownika). Jeżeli nazwa nie zostanie określona, pozostaje taka sama jak nazwa przy logowaniu.
Zalecane jest aby nazwa użytkownika bazy pokrywała się z nazwą używaną przy logowaniu
do systemu, łatwiej jest wtedy śledzić zabezpieczenia logowań użytkowników w każdej z baz
danych. Nie jest to przymusowe. Jednak gdy przykładowo użytkownik Richard występuje
jako Bill w bazie danych Sales, a jako Johny w bazie danych pubs, wprowadza to
niepotrzebne zamieszanie. Używanie tej samej nazwie eliminuje niejasności z tym związane
(co jest istotną sprawą w tak złożonym produkcie jak SQL Server). Oczywiście, sprawa
wygląda inaczej, jeżeli używane są nazwy użytkowników i grup Windows.
Przykładowo, jeżeli Bob ma mieć dostęp do bazy pubs na serwerze, należy uruchomić
następującą procedurę:
Use pubs
EXEC sp_grantdbaccess 'RHOME\Bob'
W tym przypadku odpowiedzią systemu będzie komunikat:
Granted database access to ‘RHOME\Bob’
6
Można również wykonać tę operację dla grupy:
EXEC sp_grantdbaccess 'RHOME\Marketing'
Ponownie, powinien się pojawić komunikat o pomyślnym wykonaniu operacji. Po dodaniu
grupy, każdy z członków grupy Windows ma dostęp do bazy danych, ale jedynie grupa
posiada użytkownika bazy danych; oznacza to, że wpis nie istnieje dla każdego z członków
grupy osobno, a jedynie dla całej grupy, podobnie jak miało to miejsce z nazwami do
logowania.
Aby odmówić użytkownikowi dostępu do bazy danych, należy uruchomić systemową
procedurę składową sp_revokedbaccess:
sp_revokedbaccess [[@name_in_db =] 'name_in_db']
W tej procedurze, name_in_db jest nazwą użytkownika bazy danych, która ma zostać usunięta.
Jedynie użytkownicy posiadający role db_accessadmin i db_owner (lub stałą rolę serwera
sysadmin) mogą uruchamiać te procedury składowe.
Aby zobaczyć użytkowników w bazie danych i związane z nimi nazwy logowania, można
uruchomić systemową procedurę składową sp_helpuser:
sp_helpuser [[@name_in_db =] 'username']
W tym poleceniu parametr username jest opcjonalny i jest to nazwa użytkownika lub roli.
Jeżeli parametr username nie zostanie określony, tworzony jest raport o wszystkich
użytkownikach i rolach. W przeciwnym przypadku, otrzymuje się raport dotyczący określonej
roli i użytkownika.
Po utworzeniu bazy danych jeden użytkownik tworzony jest domyślnie. Jeden z tych
użytkowników nazywa się dbo (skrót od database owner). Użytkownik dbo jest domyślnie
mapowany jako nazwa logowania sa. Po zainstalowaniu SQL Servera, użytkownik sa jest
właścicielem wszystkich baz danych. Jeżeli inny użytkownik utworzy bazę danych będzie jej
właścicielem. Użytkownik dbo może wykonać w bazie danych wszystkie operacje bez
wyjątku. Użytkownik ten ma te same uprawnienia w bazie danych co użytkownicy
korzystający z roli sysadmin. Jednak, tylko użytkownicy mający przydzieloną stałą rolę
serwera sysadmin (omówioną później) mają wszelkie uprawienia dotyczące całości systemu.
Zostało powiedziane, że logowanie nie zezwala na dostęp do bazy danych, można jednak po
zalogowaniu mieć dostęp do wszystkich baz danych, również do bazy pubs i Northwind.
Należy skorzystać z konta guest. Uruchomienie polecenia sp_grantdbaccess 'guest' w bazie
danych dodaje do bazy danych specjalne konto użytkownika zwane guest.
3.2. Nazwa użytkownika — Guest
W przypadku zalogowania z nazwą, dla której nie została stworzona nazwa użytkownika w
bazie danych pubs, można dostać się do tej bazy jako użytkownik guest. W przypadku próby
dostępu do bazy danych, w której nie została zdefiniowana nazwa i nie istnieje konto guest,
próba dostępu zakończy się komunikatem o błędzie. Przykładowo, przy próbie używania bazy
danych Northwind (poprzez wybór tej bazy w polu Databases w SQL Server Query
Analyser lub uruchomienie polecenia Transact-SQL: use Northwind) po usunięciu nazwy
użytkownika guest (przy użyciu sp_revokedbaccess) otrzyma się komunikat:
Server: Msg 916, Level 14, State 1, Line 1
Server user 'don' is not a valid user in database 'Northwind'
7
Błąd mówi o tym, że konto logowania nie jest prawidłowo zmapowane do użytkownika w
bazie danych Northwind i oznacza, że nie istnieje w tej bazie konto guest. Aby rozwiązać ten
problem, należy dodać konto guest poprzez uruchomienie następującej procedury lub poprzez
dodanie prawidłowego mapowania konta logowania do bazy danych:
Use Northwind
EXEC sp_grantaccess 'guest'
3.3. Zmiana właściciela bazy danych
Może się zdarzyć, że trzeba zmienić właściciela istniejącej bazy danych aby przypisać
odpowiedzialność za daną bazę pojedynczemu administratorowi bazy danych (DBA). Jeżeli
takie zmiany mają być dokonane, w bazie danych nie może istnieć konto logowania jako
nazwa użytkownika.
Aby zmienić właściciela, należy uruchomić systemową procedurę składową
sp_changedbowner:
sp_changedbowner [@loginame =] 'login' [,[@map =] remap_alias_flag]
Znaczenie składni:

login jest identyfikatorem logowania ID SQL Servera, który ma być mapowany.

remap_alias_flag jest opcjonalnym parametrem, który, jeśli nie zostanie określony, powoduje, że
wszyscy użytkownicy posiadający aliasy dbo zostaną usunięci, gdy zostanie zmieniony właściciel bazy
danych. Jeżeli zostanie określony parametr TRUE, wszyscy, którzy posiadali aliasy do starego dbo,
otrzymają aliasy do nowego dbo.
4. Role
Role SQL Servera pozwalają na pogrupowanie nazw użytkowników bazy danych. Nie jest
istotne czy nazwy użytkowników pochodzą z grup, użytkowników Windows 2000 lub nazw
logowania SQL Servera. Role mogą być również przydzielane innym rolom.
4.1. Role o zasięgu serwera
Użytkownik sa ma wszelkie uprawnienia i może dokonać wszelkich operacji w instancji SQL
Servera. Chociaż to prawda, jest to spowodowane tym, że konto sa przynależy do roli serwera
nazwanej sysadmin. SQL Server posiada osiem ról serwera. W każdej chwili można przypisać
konto do jednej lub więcej z tych ról serwera. Jednak, nie można dodać ani usunąć żadnej roli
serwera. Przykładowo, nie można usunąć sa z roli sysadmin.
4.2. Przypisanie konta logowania do roli serwera
Aby przypisać nazwę konta logowania do określonej roli serwera, można skorzystać z SQL
Server Enterprise Managera lub systemowej procedury składowej sp_addsrvrolemember:
sp_addsrvrolemember [@loginame =] 'login', [@rolename =] 'role'
Składnia:

login jest identyfikatorem logowania ID SQL Server, który ma zostać dodany do roli.

role jest nazwą roli serwera, do której ma być przypisane konto.
Pojedyncze konto może należeć do jednej lub wielu ról lub nie należeć do żadnej. Jednak,
rola sysadmin obejmuje wszystkie inne role — zarówno serwera jako i role specyficzne dla
bazy danych — więc jeśli użytkownik przynależy do roli sysadmin, nie ma potrzeby
8
przypisywania mu żadnych innych ról. Aby usunąć konto użytkownika z roli serwera, należy
skorzystać z systemowej procedury składowej sp_dropsrvrolemember:
sp_dropsrvrolemember [@loginame =] 'login', [@rolename =] 'role'

login jest identyfikatorem logowania ID SQL Server, który ma zostać usunięty z roli.

role jest nazwą roli serwera, z której ma być usunięte konto.
Jako przykład, można przypisać konto RHOME\Bob do roli serwera securityadmin, przy pomocy
następującego polecenia:
Exec sp_addsrvrolemember 'RHOME\Bob', 'securityadmin'
W tym przypadku powinien się pojawić komunikat:
'RHOME\Bob' added to role 'securityadmin'.
Aby usunąć konto Bob z tej roli należy uruchomić polecenie:
Exec sp_dropsrvrolemember 'RHOME\Bob', 'securityadmin'
Powinien się pojawić komunikat informujący o udanej operacji:
'RHOME\Bob' dropped from role 'securityadmin'.
Aby wykonać te operacje z SQL Server Enterprise Managera, należy wybrać odpowiedni
serwer, folder zabezpieczeń i podświetlić opcję menu Server Roles (ikona obok ikony z
kluczem). Prawy panel zawiera osiem ról serwera. Należy kliknąć dwukrotnie Security
Administrators aby ukazało się okno Server Role Properties. Następnie nacisnąć przycisk
Add, pojawi się lista dostępnych kont logowania. Należy wybrać RHOME\Bob (lub odpowiednik
na własnym serwerze) i kliknąć OK. Po ponownym kliknięciu OK można uznać, że została
wykonana procedura systemowa sp_addsrvrolemember, tyle, że tym razem w postaci
interfejsu graficznego.
4.3. Role bazy danych
Każda baza danych również zawiera role. Niektóre z tych ról są z góry ustalone, można
również dodawać własne role (inaczej niż w przypadku ról serwera). Należy mieć na uwadze,
że role są specyficzne dla danej bazy, czyli nie można posiadać ról, które dotyczą więcej niż
jednej bazy danych w danym czasie. Jednak, można stworzyć takie same role w każdej z baz
danych.
4.3.1. Role w bazie danych zdefiniowane przez użytkownika
Dodatkowo, oprócz standardowo zdefiniowanych ról, można tworzyć również własne role a
następnie przypisywać użytkowników lub inne role do tych nowoutworzonych ról.
Użytkownik tworzy własne role w bazach danych SQL Servera z tego samego powodu, dla
którego tworzy się grupy w systemie Windows 2000 — aby pogrupować użytkowników,
którzy pełnią podobne funkcje. Należy tworzyć tyle ról, dla ilu istnieje sensowne
uzasadnienie. Nie ma ograniczeń, co do tego, do ilu ról może przynależeć użytkownik. Role
mogą należeć do innych ról.
Aby stworzyć rolę, należy uruchomić systemową procedurę składową sp_addrole:
sp_addrole [@rolename =] 'role' [,[@ownername =] 'owner']
Znaczenie składni:

role jest nazwą, jaka ma być nadana nowej roli.
9

owner jest nazwą użytkownika SQL Servera, który ma być właścicielem tej roli (każdy z użytkowników
może być właścicielem własnych ról). Domyślną wartością jest dbo, i na ogół jest to dokładnie ta pożądana
wartość (nie ma potrzeby jej zmieniać).
Jedynie członkowie roli serwera sysadmin lub ról bazy danych db_owner lub db_securityadmin mogą
dodawać nowe role do bazy danych. Dotyczy to również usuwania ról. Jedną szczególną cechą ról jest to, że
pomimo określenia nazwy właściciela, nazwa roli musi być unikalna w całej bazie danych. Dlatego, nie potrzeba
znać nazwy właściciela roli, którą chce się usunąć, ponieważ nazwa roli jest unikalna w bazie danych.
Aby usunąć rolę z bazy danych należy uruchomić procedurę systemową sp_droprole:
sp_droprole [@rolename =] 'role'
W tej składni, role jest nazwą roli stworzonej przez użytkownika, która ma zostać usunięta.
Nie można usunąć roli, jeśli są do niej przypisani użytkownicy lub inne role. Nie można
również usunąć roli jeśli posiada ona obiekty. Więcej informacji na temat własności obiektów
zostanie podanych w następnym rozdziale. Przynosi to następne interesujące pytanie: Jak
dodaje się użytkowników do ról? Należy skorzystać z systemowej procedury składowej
sp_addrolemember aby dodać użytkowników do zdefiniowanej przez użytkownika lub
ustalonej systemowo roli:
sp_addrolememeber [@rolename =] 'role', [@membername =] 'database_account'
Znaczenie składni:

role jest nazwą roli, do której ma być dodany użytkownik

database_account jest nazwą użytkownika, grupy lub roli, jaka ma zostać dodana do danej roli.
Aby usunąć użytkownika z danej roli, należy uruchomić procedurę sp_droprolemember:
sp_droprolemember [@rolename =] 'role', [@membername =] 'database_account'
Znaczenie składni:

role jest nazwą roli, z której ma być usunięty użytkownik

database_account jest nazwą użytkownika, grupy lub roli, która ma zostać usunięta z danej roli.
Warto zauważyć, że przy próbie usunięcia roli, do której są przypisani użytkownicy
Można otrzymać te same wyniki korzystając z SQL Server Enterprise Managera.
4.4. Role aplikacji
Role aplikacji są bardzo przydatną własnością SQL Servera 2000. Pomimo tego, że role
aplikacji można traktować podobnie jak inne omówione role, pełnią one inne funkcje.
Role aplikacji spełniają niektóre cele, które mają inne role; używanie ich jest dobrym
sposobem grupowania użytkowników, tak więc uprawnienia mogą zostać nadane na wyższym
poziomie. Jest to lepsze niż zarządzanie uprawnieniami dla każdego z użytkowników osobno.
Po stworzeniu i wybraniu roli, wszystkie uprawnienia przyznane użytkownikowi są
zawieszane, wymuszane są jedynie uprawnienia wynikające z roli. Oczywiście, rola wymaga
hasła do prawidłowego uruchomienia (chyba, że użytkownik nie życzy sobie hasła).
Teraz zostanie omówiona ich implementacja. Role aplikacji są dość proste w porównaniu
do ich użyteczności.
Po pierwsze, należy utworzyć rolę aplikacji poprzez systemową procedurę składową
sp_addapprole:
10
sp_addapprole [@rolename =] 'role', [@password =] 'password'
Znaczenie składni:

role jest nazwą roli, jak ma zostać utworzona

password jest to hasło, czyli autoryzacja jakiej musi podlegać aplikacja aby uaktywnić rolę.
Aby usunąć rolę aplikacji, należy uruchomić procedurę systemową sp_dropapprole:
sp_dropapprole [@rolename =] 'role'
W tym przypadku role jest nazwą roli do usunięcia.
Aby używać roli w swoich aplikacjach należy uruchomić systemową procedurę składową
sp_setapprole:
sp_setapprole [@rolename =] 'role',
[@password =] {Encrypt N 'password'}|'password'
[,[@encrypt =] 'encrypt_style']
Znaczenie składni:

role jest nazwą roli, która ma zostać uaktywniona.

password jest hasłem określanym w wywołaniu sp_addapprole.

Encrypt N 'password' żąda zaszyfrowania hasła podczas wysyłania przez sieć (jeżeli hasło zostało już
określone, jest wysłane przez sieć bez szyfrowania).

encrypt_style określa typ używanego szyfrowania. Obecnie, można wybrać z dwóch dostępnych
wartości: none lub odbc. Open database connectivity (ODBC) jest określony, kiedy używa się klientów
opartych na ODBC i oznacza że funkcja kanonicznego szyfrowania ODBC będzie używana do szyfrowania
hasła zanim zostanie ono przesłane przez sieć.
W przypadku korzystania z klienta Object Linking and Embedding Database (OLE DB), możliwość
szyfrowania jest nadal dostępna. Wystarczy określić odbc, a wystąpi ten sam typ szyfrowania.
Aby utworzyć i używać roli aplikacji, należy uruchomić następujący skrypt z poziomu SQL
Server Query Analyzera (jako narzędzia opartego na ODBC):
Use pubs
Exec sp_addapprole 'Payroll', 'password'
Go
Exec sp_setapprole 'Payroll', {Encrypt N 'password'}, 'odbc'
Po pomyślnym wykonaniu operacji pojawi się komunikat:
New application role added.
The application role 'Payroll' is now active.
Od tego momentu wszystkie uprawnienia związane z połączeniem do SQL Servera będą
używały uprawnień wynikających z roli aplikacji. Śledzenie wykonywanych operacji nadal
będzie związane z informacją o logowaniu pojedynczego użytkownika, a nie roli aplikacji.
Można nadal kontrolować działania pojedynczych użytkowników, nawet jeśli ta własność
grupy jest włączona.
5. Uprawnienia użytkownika
Większość osób korzystających z bazy danych to zwykli użytkownicy. Użytkownik bazy
danych, nie posiada przysługujących z góry praw i uprawnień (inaczej, niż użytkownicy
przydzieleni do roli public, omówionej w kolejnej sekcji). Wszystkie prawa muszą być
przyznane bezpośrednio użytkownikowi, rolom użytkownika lub roli public.
11
Uprawnienia przydzielane użytkownikom mogą być podzielone na uprawnienia obiektu i
polecenia:

Instrukcje uprawnień pozwalają użytkownikom tworzyć nowe bazy danych, tworzyć nowe obiekty w
istniejącej bazie, lub tworzyć kopie bezpieczeństwa bazy danych lub dziennika transakcji. Pozwalają one
raczej na uruchamianie poszczególnych poleceń a nie na operacje na poszczególnych obiektach.

uprawnienia obiektu pozwalają użytkownikom na wykonywanie operacji na pojedynczych obiektach.
Przykładowo, użytkownicy mogą mieć możliwość odczytu (select) danych z tabeli, wykonywania (execute)
procedury składowej lub modyfikacji danych w tabeli lub widoku (korzystając z uprawnień INSERT,
UPDATE i DELETE).
5.1. Instrukcje uprawnień
Instrukcje uprawnień pozwalają użytkownikowi bazy danych, roli bazy danych lub
grupie/użytkownikowi Windows na wykonywanie różnych zadań takich jak tworzenie baz
danych, tworzenie obiektów lub tworzenie kopii zapasowych bazy danych. Uprawnienia
wykonywania pozwalają użytkownikowi raczej na uruchamianie poszczególnych poleceń (lub
zbioru poleceń) niż na manipulowanie pojedynczym obiektem.
Należy starannie rozważyć przyznawanie użytkownikom lub rolom uprawnień do tworzenia
obiektów. Jeżeli użytkownik utworzy obiekt, staje się jego właścicielem (chyba, że twórca,
podczas tworzenia obiektu, określił właściciela jako dbo) i posiada wszystkie uprawnienia
związane z tym obiektem bazy danych. W późniejszej części zostanie pokazane, że
posiadanie obiektów, mających różnych właścicieli może stworzyć trudne sytuacje związane
z uprawnieniami.
Instrukcje uprawnień powinny być przyznawane jedynie gdy są one bezpośrednio potrzebne.
Przypadkowe przyznawanie uprawnień polecenia może powodować powstanie w bazie
danych niepotrzebnych i często bezużytecznych obiektów.
Można przyznać uprawnienia polecenia indywidualnym użytkownikom bazy danych,
użytkownikom/grupom Windows lub rolom bazy danych, włączając w to rolę public.
Można przyznawać te uprawnienia indywidualnie lub wszystkim naraz (przy użyciu słowa
kluczowego ALL). Z każdego polecenia wynikają konsekwencje, które muszą być rozważone
przed użyciem danego polecenia.
5.2. Przydzielanie uprawnień polecenia
Można używać Transact-SQL lub SQL Server Enterprise Management aby przyznawać,
odbierać i wstrzymywać uprawnienia polecenia.
Polecenie GRANT
Polecenie GRANT przyznaje użytkownikowi uprawnienia polecenia:
GRANT {ALL | statement_list} TO {account}
Składnia:

ALL oznacza wszystkie możliwe uprawnienia polecenia.

statement_list jest listą uprawnień wykonywania, jakie mają zostać przyznane dla konta.

account jest nazwą użytkownika bazy danych, roli bazy danych, grupy/użytkownika Windows.
Polecenie REVOKE
Polecenie REVOKE zabiera uprawnienia, które zostały wcześniej przyznane:
12
REVOKE {ALL | statement_list} TO {account}
Składnia:

ALL oznacza wszystkie możliwe uprawnienia polecenia.

statement_list jest listą uprawnień polecenia, jakie mają zostać odebrane.

account jest nazwą użytkownika bazy danych, roli bazy danych, grupy/użytkownika Windows.
Polecenie DENY
Inaczej niż w przypadku polecenia REVOKE, polecenie DENY bezpośrednio zabiera uprawnienie
polecenia. Przykładowo, jeżeli Joe jest członkiem roli bazy danych, a rola ta ma uprawnienie
CREATE TABLE, Joe może również tworzyć tabele. Jednak, jeżeli Joe powinien mieć zabronione
tworzenie tabel, mimo tego, że jako członek roli posiada to uprawnienie, można zabronić Joe
wykonywania tego polecenia. Dlatego, Joe nie będzie mógł uruchomić wyrażenia CREATE
TABLE, pomimo tego, że normalnie rola przydzieliła mu to prawo.
DENY {ALL | statement_list} TO {account}
Składnia:

ALL oznacza wszystkie możliwe uprawnienia polecenia.

statement_list jest listą uprawnień, jakie mają zostać wstrzymane.

account jest nazwą użytkownika bazy danych, roli bazy danych, grupy/użytkownika Windows.
Przykłady uprawnień nadawanych z poziomu Transact-SQL
Przegląd kilku przykładów jest najlepszym sposobem na zrozumienie działania omówionych
poleceń:

aby przyznać użytkownikowi Windows Joe uprawnienie do tworzenia widoku w bazie, należy uruchomić:

aby cofnąć uprawnienie do tworzenia widoków i tabel dla użytkowników Joe i Mary należy uruchomić:
GRANT CREATE VIEW TO [Rhome\Joe]
REVOKE CREATE TABLE, CREATE VIEW FROM [Rhome\Mary], [Rhome\Joe]

aby przyznać Joe wszystkie uprawnienia w bazie danych należy uruchomić:
GRANT ALL TO [Rhome\Joe]
5.3. Uprawnienia obiektu
Uprawnienia obiektu pozwalają użytkownikowi, roli lub grupie/użytkownikowi Windows na
wykonywanie działań na poszczególnych obiektach bazy danych. Uprawnienia stosują się
tylko do określonych obiektów nazwanych podczas przyznawania uprawnienia, nie do
wszystkich obiektów znajdujących się w bazie danych. Uprawnienia obiektu pozwalają
użytkownikowi na przypisanie praw do uruchamiania określonych poleceń Transact-SQL
dotyczących danego obiektu do indywidualnych kont użytkowników. Uprawnienia obiektu są
najczęściej przyznawanym typem uprawnień w bazie.
5.3.1. Przyznawanie uprawnień obiektu
Można skorzystać z Transact-SQL lub z SQL Server Enterprise Managera aby przyznać,
odwołać lub wstrzymać uprawnienia obiektu.
Przyznawanie uprawnień obiektu korzystając z Transact-SQL
Polecenie GRANT przyznaje użytkownikowi jedno lub więcej uprawnień obiektu. Usuwa ona
również uprawnienie DENY.
13
GRANT {ALL [PRIVILEGES] | permission_list [,...n]}
{
[(column[,...n])] ON {table | view}
| ON {table |view} [(column[,..n])]
| ON {stored_procedure |extended_stored_procedure}
| ON {user_defined_function}
}
TO account[,...n]
[WITH GRANT OPTION]
[AS {group | role}]
Znaczenie składni:

ALL oznacza wszystkie możliwe uprawnienia obiektu, które stosują się do obiektu danego typu.

Permission_list jest wypunktowaną listą uprawnień obiektu jakie mają zostać przyznane dla danego
konta.

column oznacza poziom, do którego mogą być przyznawane uprawnienia (jedynie do poleceń SELECT i
UPDATE).

account jest nazwą użytkownika bazy danych, roli bazy danych, użytkownika lub grupy Windows

WITH GRANT OPTION pozwala użytkownikowi, który otrzymał dane prawo na przydzielenie tego
otrzymanego prawa innym użytkownikom.

AS {group | role} określa, która grupa lub rola jest używana w przypadku danego przydzielania
uprawnień (grant). Jeżeli jest wiele ról lub grup Windows, które mogą mieć konfliktowe uprawnienia,
należy określić tę opcję.
Polecenie REVOKE — Odwoływanie uprawnień obiektu
Polecenie REVOKE zabiera jedno lub więcej uprawnień obiektu, które zostały wcześniej
przyznane. Nie zostanie wyświetlony komunikat informujący o błędzie, jeżeli zostanie
odwołany przywilej, który nie był wcześniej nadany; polecenie nie przyniesie po prostu
efektu.
REVOKE [GRANT OPTION FOR]
{ALL [PRIVILEGES] | [,...permission_list n]}
{
[(column[,...n])] ON {table | view}
| ON {table |view} [(column[,..n])]
| {stored_procedure |extended_stored_procedure}
| {user_defined_function}
}
FROM account[,...n]
[CASCADE]
[AS {group | role}]
Znaczenie składni:

ALL oznacza wszystkie możliwe uprawnienia obiektu, które stosują się do obiektu danego typu.

Permission_list jest wypunktowaną listą uprawnień obiektu jakie mają zostać odwołane dla danego
konta.

column oznacza kolumnę lub kolumny, z których mają być odwołane uprawnienia. Uprawnienia obiektu na
poziomie kolumny dotyczą jedynie poleceń SELECT i UPDATE.

account jest nazwą użytkownika bazy danych, roli bazy danych, użytkownika lub grupy Windows.

CASCADE odwołuje uprawnienia, które były przyznawane przez użytkownika, który otrzymał je wcześniej
wraz z opcją WITH GRANT OPTION.

AS {group | role} określa, która grupa lub rola jest wykorzystywana do cofnięcia przyznanych
uprawnień. W przypadku wielu ról lub grup Windows, które mogą posiadać konfliktowe uprawnienia,
należy określić tę opcję.
14
Polecenie DENY — dotyczące uprawnienia obiektu
Inaczej niż w przypadku polecenie REVOKE, polecenie DENY bezpośrednio zabiera (neguje)
uprawnienie dotyczące obiektu. Uprawnienie nie musi być wcześniej przyznane
użytkownikowi. Przykładowo, jeżeli Joe należy do roli bazy danych, która ma uprawnienie
SELECT dotyczące tabeli authors, to Joe może odczytywać dane z tej tabeli. Jednak, jeżeli
założeniem jest, że Joe nie może mieć dostępu do danych z tabeli authors, nawet jeśli należy
do roli, posiadającej tą możliwość, w tym przypadku można odebrać użytkownikowi Joe to
uprawnienie (poleceniem DENY). Dlatego, Joe nie będzie miał możliwości odczytu danych z
tabeli authors, nawet poprzez uprawnienia roli, które by na to normalnie pozwalały.
DENY
{ALL [PRIVILEGES] | [,...permission_list n]}
{
[(column[,...n])] ON {table | view}
| ON {table |view} [(column[,..n])]
| ON {stored_procedure |extended_stored_procedure}
| ON {user_defined_function}
}
TO account[,...n]
[CASCADE]
Znaczenie składni:

ALL oznacza wszystkie możliwe uprawnienia obiektu, które stosują się do obiektu danego typu.

Permission_list jest wypunktowaną listą uprawnień obiektu jakie mają zostać wstrzymane (deny) dla
danego konta.

column oznacza kolumnę lub kolumny, z których mają być odwołane uprawnienia. Uprawnienia obiektu na
poziomie kolumny dotyczą jedynie poleceń SELECT i UPDATE.

account jest nazwą użytkownika bazy danych, roli bazy danych, użytkownika lub grupy Windows.

CASCADE wstrzymuje uprawnienia, które były przyznawane przez użytkownika, który otrzymał je
wcześniej wraz z opcją WITH GRANT OPTION.
Przykłady uprawnień nadawanych z poziomu Transact-SQL
Przegląd kilku przykładów jest najlepszym sposobem na zrozumienie działania omówionych
poleceń:

aby przydzielić użytkownikowi Joe uprawnienie do pobierania danych z tabeli sales w bazie danych
pubs, należy uruchomić:
GRANT SELECT ON SALES TO [Rhome\Joe]

aby odwołać uprawnienia Joe i Mery do pobierania danych i umieszczania danych w tabeli authors,
należy uruchomić następujące polecenie:
REVOKE SELECT, INSERT ON AUTHORS FROM [Rhome\Mary], [Rhome\Joe]

aby przyznać Joe uprawnienia na poziomie kolumny do pobierania danych z kolumn au_fname i
au_lname z tabeli authors z bazy pubs należy uruchomić:
GRANT SELECT ON AUTHORS (AU_FNAME, AU_LNAME) TO [Rhome\Joe]
6.Przebieg ćwiczenia.
Uwaga: wszystkie kody wykonywane w programie Query Analizer zapisywać do plików,
gdyż ułatwi to sporządzanie sprawozdania.
6.1.Sprawdzenie użytkowników którzy mają dostęp do servera w trybie logowania SQL
Authentication Mode:
a) -po zapoznaniu z wprowadzeniem teoretycznym wykonać odpowiednie polecenie w
programie Query Analizer do odpowiedniej tabeli w odpowiedniej bazie danych w celu
15
sprawdzenia użytkowników mających dostęp do serwera w tym trybie logowania
b)- zapisać otrzymane
6.2.Tworzenie nowego użytkownika z wykorzystaniem procedury systemowejw programie
QueryAnalizer:
- utworzyć nowego użytkownika o nazwie Nazwisko_studenta z wybranym hasłem, który po
zalogowaniu będzie podłączony do bazy Northwind (sp_addlogin)
6.3.Sprawdzenie dostępu nowego użytkownika w trybie SQL Authentication Mode:
a)- w programie Enterprise Manager z menu kontekstowego dla naszego serwera SQL
(Właściwości-> Security) w lewym panelu upewnić się że włączony jest tryb „Sql Server and
Windows” w opcji Authentication
b)- wykorzystując program Query Analizer połaczyć się z SQl Serwerem wybierając opcję
SQL Server Authentication i wykorzystując nowego użytkownika Nazwisko_studenta
c)- zakończyć połączenie i ponownie połączyć się wykorzystując tryb Windows
Authentication
6.4.Tworzenie nowego użytkownika z wykorzystaniem programu
Enterprise Manager :
- utworzyć nowego użytkowników o nazwie Nazwisko_studenta1 i Nazwisko_studenta2 z
wybranym hasłem, z domyślną bazą Northwind oraz domyślnym językiem polskim
6.5.Wykorzystanie procedur systemowych do zarządzania kontami użytkowników SQL
Servera:
- wykorzystując Query Analizer utworzyć przykłady wykorzystania procedur:
sp_password
sp_defaultdb
sp_defaultlanguage
sp_helplogins
sp_droplogin
dla użytkownika Nazwisko_studenta2
6.6.Ustawianie grup i użytkowników w systemie Windows 2000:
- korzystając z zakładki Użytkownicy i grupy lokalne (Start-Ustawienia-Panel sterowaniaNarzędzia Administracyjne-Zarządzanie komputerem)
stworzyć nowe grupy użytkowników
a) SQL_Administratorzy z członkami : Administrator i SQLDebugger
b)SQL_Uzytkownicy z nowymi użytkownikami Nazwisko_Studenta1, Nazwisko_Studenta2
6.7.Przydzielanie praw dostępu do utworzonych kont:
a)- wykorzystując procedurę sp_grantlogin przydzielić prawo logowania utworzonym
grupom Windows
b)- wykorzystując procedurę s_denylogin zabronić możliwość logowania użytkownikowi
Nazwisko_Studnta2
c)- wylogować z systemu użytkownika domyślnego
d)- logując się na nowo utworzonych użytkowników sprawdzić możliwość nawiązania
połączenia z serwerem SQL (np. wykorzytując Query Analizer) w trybie Windows
Authentication
e)- ponownie przydzielić prawo logowania użytkownikowi Nazwisko_Studnta2
16
g)- ponownie załogować się na konto domyślnego użytkownika (ciwe)
6.8.Użytkownicy bazy danych:
a)- wykorzystując wiedzę z poprzedniego ćwiczenia utworzyć nową bazę danych o nazwie
„baza_Nazwisko_studenta” korzystając z konta „ciwe” (domyślnego na salach CIWE)
b)- wykorzystując procedurę sp_grantdbaccess dodać użytkowników Nazwisko_studenta1i
Nazwisko_studenta2 do nowej bazy danych nie zmieniając jego nazwy
c)- korzystając z procedury sp_helpuser sprawdzić użytkowników bazy
d)- wykorzystując sp_revokedbaccess odmówić użytkownikowi Nazwisko_studenta2 dostępu
do utworzonej bazy danych
e)- ponownie sprawdzić użytkowników bazy
g)- sprawdzić użytkowników innych baz danych
h)-połączyć się z serverem wykorzystując konto Nazwisko_studenta
i)-spróbować wykorzystać bazę „baza_Nazwisko_studenta”
j)- dodać użytkownika guest do utworzonej bazy danych
k)-ponownie spróbować wykorzystać bazę „baza_Nazwisko_studenta” będąc zalogowanym
jako użytkownik Nazwisko_studenta (np. USE „baza_Nazwisko_studenta” w Query
Analizer )
6.9.Zmiana właściciela bazy danych:
a)- wykorzystując wiedzę z poprzedniego ćwiczenia utworzyć nową bazę danych o nazwie
„baza_Nazwisko_studenta1” korzystając z konta „ciwe” (domyślnego na salach CIWE)
b)- wykorzystując procedurę sp_changedbowner zmienić właściciela nowej bazy danych
6.10.Przypisanie kont logowania do ról serwera:
a)- wykorzystując procedurę sp_addsrvrolemember przypisać użytkownika
Nazwisko_studenta do roli serwera sysadmin
b)- wykorzystując program Enterprise Manager przypisać użytkownika Nazwisko_studenta1
do roli serwera securityadmin, natomiast użytkownika Nazwisko_studenta2 do roli dbcreator
c)- opracować przykładowe operacje na serwerze lub bazie danych obrazujące uzyskane
uprawnienia z przypisaniem użytkowników do ról serwera
6.11.Przypisanie do ról bazy danych:
a)- wykorzystując procedury sp_addrolemember i sp_droprolemember przypisać wybranych
użytkowników dla wybranej bazy danych do poszczególnych ról bazy danych (np.
db_datareader, db_datawriter)
b)- (dla chętnych) – wykorzystując procedury sp_addrole, sp_addrolemember i ewentualnie
sp_droprole lub sp_droprolemember
utworzyć włąsne role bazy danych i przypisać do nich wybranych użytkowników
c)- wykorzystując program Enterprse Manager sprawdzić czy wybrani użytkownicy są
przypisani do określonych ról bazy danych
6.12. Role aplikacji:
a)- wykorzystując procedury sp_addapprole, sp_dropapprole i sp_setapprole utworzyć i
zademonstrować wykorzystanie roli aplikacji
b)- zastanowić się jaki będzie miało wpływ na uprawnienia zastosowanie roli aplikacji
6.13.Uprawnienia związane z rolami:
c)- wykorzystując procedurę sp_srvrolepermission sprawdzić i wynotować jakie uprawnienia
niesie za sobą przypisanie do poszczególnych ról serwera (opisać przynajmniej 5 ról)
17
d)-wykorzystując procedurę sp_dbfixedpermission sprawdzić i wynotować jakie uprawnienia
niesie za sobą przypisanie do poszczególnych ról
bazy danych (opisać przynajmniej 5 ról)
6.14.Uprawnienia użytkownika – instrukcje uprawnień:
a)- wykorzystując polecenia GRANT,REVOKE i DENY ustawić wybrane 3 uprawnienia
(CREATE DATABASE, CREATE TABLE, CREATE PROCEDURE, CREATE DEFAULT,
CREATE RULE, CREATE VIEW, CREATE FUNCTION, BACKUP DATABASE I
BACKUP LOG) wybranym użytkownikom lub rolom (w razie potrzeby utworzyć
dodatkowych użytkowników lub role)
b)- wykorzystując program Enterprise Manager sprawdzić czy poszczególne uprawnienia
zostały przyznane wybranym użytkownikom lub rolom oraz dodać nowe lub zmodyfikować
istniejące uprawnienia
c)-zobrazować na przykładach skutki przyznania lub zabronienia poszczególnym
użytkownikom, grupom lub rolom
6.15. Uprawnienia użytkownika –uprawnienia obiektu:
a)- wykorzystując polecenia GRANT,REVOKE i DENY ustawić wybrane uprawnienia
(SELECT, INSERT, UPDATE, DELETE, EXECUTE, REFERENCES) dla wybranych
obiektów bazy pubs lub Nortwind poszczególnym użytkownikom, grupom lub rolom
b)- wykorzystując program Enterprise Manager sprawdzić czy poszczególne uprawnienia
zostały przyznane wybranym użytkownikom, grupom lub rolom oraz dodać nowe lub
zmodyfikować istniejące uprawnienia
c)-zobrazować na przykładach skutki przyznania lub zabronienia poszczególnym
użytkownikom, grupom lub rolom
7.Treść sprawozdania.
Odnośnie do każdego punktu ćwiczenia umieścić kod Transact-SQL oraz rzuty okien
Enterprise Manager lub Query Analizer.
Do kilku wybranych punktów zademonstrować własne przykłady np..
8. Przykładowe pytania kontrolne.
1. Omówić wykorzystywane w ćwiczeniu polecenia Transact-SQL
2. Wymienić i omówić kilka przykładowych procedur systemowych wykorzystanych w
ćwiczeniu
3. Opisać wady i zalety trybów autentykacji SQL Serwera (kiedy stosować dany tryb?)
4. Omówić warstwy bezpieczeństwa SQL Serwera.
5. W czym polega różnica pomiędzy autentyfikacją (uwierzytelnianiem) oraz autoryzacją
(prawa dostępu)?
6. Opisać jakie uprawnienia niesie za sobą przypisanie do poszczególnych ról serwera
lub bazy danych.
18
Download