środa, 1 stycznia 2014

Uwierzytelnianie użytkownika MSSQL 2008 cz.13

Tak jak w każdym systemie również dostęp do bazy danych jest ograniczony przez jakiś sposób uwierzytelnienia, czyli powiedzenia bazie że ja to faktycznie ja.
Występuje 5 sposób uwierzytelnienia się jak użytkownika w bazie danych:

1) Konto logowania MS SQL 2008,
2) Konta logowania systemu Windows,
3) Wykorzystanie grup systemu Windows,
4) Certyfikaty,
5) Klucze asymetryczne

 Konto logowania zakładane jest bezpośrednio w MS SQL w bazie master.Takie konto może być również zmapowane na konto Windows lub też grupę która występuje bezpośrednio w systemie Windows.
Mówiąc prosto jeżeli dodamy do MS SQL konto lub grupę które występują w Windows baza pozwoli na logowanie się do niej oraz dodatkowo możliwe będzie przejęcie ograniczeń nałożonych na takie konto.

Jeżeli chcemy utworzyć nowe konto bezpośrednio w MS SQL możemy użyć polecenia SQL:

CREATE LOGIN Test 
    WITH PASSWORD = 'Test';
USE AdventureWorks2012;
GO
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO 



Możemy dodać dwie bardzo ważne z punktu widzenia bezpieczeństwa opcje, które będą wymagały wprowadzenia ustawień z zasad grup (złożoność hasła) oraz ograniczony czas:

ALTER LOGIN [Test] WITH CHECK_POLICY = ON;
ALTER LOGIN [Test] WITH CHECK_EXPIRATION = ON;
GO 

Dzięki temu hasło co jakiś czas będzie wymagało zmiany, do tego jeżeli mamy skonfigurowaną zasadę na złożenie hasła system nie pozwoli na to aby użytkownik używał krótkiego, mało skomplikowanego oraz podobnego hasła do ostatniego wpisanego.

Rola serwera = Grupie użytkowników Windows

Ograniczenia podobnie jak w systemie Windows możemy przypisywać do roli serwera przez co użytkownicy którzy otrzymają przypis do danej roli będą mogli wykonywać jedynie te czynności na które pozwalają role:

* bulkadmin - operacje kopiowania danych (BCP oraz BULK INSERT),
dbcreator - możliwość tworzenia bazy danych,
diskadmin - zarządzanie przestrzenią dyskową,
processadmin - możliwość zastopowania instancji bazy,
* securityadmin - może tworzyć, edytować oraz usuwać konta użytkowników, jednak nie może zmieniać haseł,
* serveradmin - połączenie diskadmin'a oraz processadmin'a, zarządzanie punktami końcowymi oraz zarządzanie instancją (włączenie oraz wyłączenie),
* setupadmin - zarządzanie serwerami połączonymi,
* sysadmin - pełny dostęp do zarządzania parametrami serwera

Role bazy danych

Do konta logowania możemy przypisać ograniczenia lub prawa na konkretne elementy bazy (tabele, widoki itd):

* db_accessadmin - dodawanie / usuwanie użytkowników z bazy,
* db_backupoperator - może stworzyć kopie zapasową bazy, ale nie może jej odzyskać,
* db_datareader - może wykonać polecenie SELECT na wszystkich elementach bazy (tabel, widoki itd),
* db_datawriter - pozwala na wykonanie: INSERT, UPDATE, DELETE, MERGE, musimy takie konta dodać również do roli db_datareader,
* db_ddladmin - pozwala na wykonanie operacji na wyzwalaczach oraz DROP, ALTER,
* db_denydatareader - odbiera możliwość wykonania SELECT'a na bazie,
db_denydatawriter - odbiera możliwość wykonania: INSERT, UPDATE, DELETE, MERGE na bazie,
* db_owner - pełna kontrola nad bazą, której taki użytkownik jest właścicielem,
* db_securityadmin - może zmieniać role posiadane przez konta z wyjątkiem roli db_owner,
* public - domyślna rola do której przypisane są wszystkie konta

Od wersji 2005 możliwe jest utworzenie użytkownika bez konta logowania. We wcześniejszych wersjach takie podejście pozwalało na dostęp użytkownika / pracownika poprzez zewnętrzną aplikację do bazy danych, jednak w momencie utworzenie połączenia gdy jednocześnie poprzez taką aplikację połączyło się z bazą problematycznie było śledzenie, kto jakich zmian dokonał w bazie. Utworzenie użytkownika bez konta logowania pozwala takie zmiany śledzić.



Brak komentarzy:

Prześlij komentarz