Start > Kursy on-line > MS SQL Server Express

MS SQL Server Express


Zarządzanie użytkownikami

W momencie kiedy umiemy już tworzyć bazy danych jako administrator systemu, skupimy się teraz nad zabezpieczaniem dostępu do niej. Pokażemy krótko jak utworzyć loginy użytkowników na serwerze, które potem można wykorzystać do przypisania im uprawnień do określonej bazy. Najpierw tworzymy login na serwerze:



Używając menu kontekstowego, możemy wykonać polecenie New Login i wyświetlić okno dialogowe jak na powyższym obrazie. W oknie tym ustawiamy wszystkie właściwości dla danego loginu na danym serwerze - nie nadajemy póki co żadnych uprawnień do bazy danych.
W naszych rozważaniach skupimy się nad autentykacją serwera SQL, pomijając autentykację Windows, która jest wygodna jeśli chodzi o sam dostęp do baz danych (nie wymaga od użytkownika logowania), jednak mniej poręczna w przypadku chęci stworzenia aplikacji opartej na serwerze SQL, dla szerokiego grona użytkowników spoza np. sieci lokalnej - wtedy lepiej zaszyć w aplikacji określony login i hasło posiadający dostęp do bazy (wszystko zależy od sytuacji).

Wybieramy więc "SQL Server authentication", następnie wpisujemy login i hasło (załóżmy "test" i "test").:




Nie nadajemy żadnych uprawnień dla tego loginu, jednak przełączamy się do zakładki User Mapping i przypisujemy ten login do wcześniej utworzonej bazy "nowa_baza". Poza zaznaczeniem wybranej bazy, określamy schemat dla tego użytkownika jako "db_owner":



Po zaakceptowaniu przyciskami OK za jednym razem utworzyliśmy login na serwerze oraz użytkownika w naszej bazie.:



Loginy pozwalają zalogować się na serwer, userzy są przypisywani do konkretnych baz danych mając w ich ramach przypisane określone uprawnienia. Oczywiście uprawnienia można przypisać też do loginu i nadać np. określonemu loginowi administratora - dzięki czemu zyska on pełną kontrolę nad serwerem. Określony login może mieć przypisanych wielu użytkowników (to co robiliśmy przed chwilą w ramach "User Mapping") - dzięki temu, używając pojedynczego loginu, użytkownik może mieć zdefiniowane różne uprawnienia do różnych baz.
W naszym przykładzie nadaliśmy uprawnienia tylko do bazy "nowa_baza" - jeśli zalogujemy się do serwera na tym loginie, to zobaczymy, że wszystkie elementy serwera są widoczne, ale nie ma do nich dostępu (polecenia są szare, a te które daje się uruchomić i tak potem zwracają komunikat o braku uprawnień):




W trakcie tworzenia loginu, zetknęliśmy się ze schematami uprawnień. Dla naszego użytkownika przypisaliśmy schemat "db_owner" - czyli właściciel danej bazy (praktycznie jak administrator, ale w ramach tylko określonej bazy). Innymi predefiniowanymi schematami są np. "db_datareader" (użytkownik, który może odczytywać dane) lub też "db_datawriter" (czyta i zapisuje dane). Jeśli wejdziemy w opcję Properties utworzonego użytkownika danej bazy danych, możemy dokonać zmian przypisanego mu schematu:



Schematy odpowiadają za zakres dozwolonych operacji na określonej bazie danych. Natomiast gdyby zaszła potrzeba pogrupowania użytkowników o podobnych uprawnieniach, musielibyśmy uwzględnić ich w rolach:



Takie podejście ma tę podstawową zaletę, iż do ról poza użytkownikami przypisujemy schematy uprawnień i wówczas, gdyby zaszła konieczność zmiany uprawnień dużej liczbie użytkowników określonej bazy danych, to unikamy konieczności modyfikacji każdego z nich. Po prostu zmieniamy schemat uprawnień roli, w której są Ci użytkownicy, co rzutuje od razu na całość.

Temat zarządzania uprawnieniami na SQL Server mógłby być drążony przez nas jeszcze bardzo długo. My jednak poprzestaniemy na dwóch powyższych elementach: utworzeniu loginu i użytkownika z nadaniem schematu uprawnień - wiedza ta jest wystarczająca dla poruszania się po serwerze oraz tworzenia aplikacji opartych o SQL Server. Resztę specyficznych zagadnień pozostawmy administratorom serwerów SQL :)