Osnovne funkcionalnosti za zaštitu SQL Servera
Kada su u pitanju baze podataka, svako curenje podataka je najčešće posledica loše zaštićenih servera. Microsoft SQL Server je popularno rešenje za kompanije, ali je isto tako složeno za razumevanje i konfigurisanje. Zato ćemo u ovom tekstu pomenuti neke osnovne funkcionalnosti za zaštitu SQL Servera.
SQL Server autentifikacija vs Windows autentifikacija
Microsft SQL Server podržava dve opcije za autentifikaciju:
Windows autentifikacija se oslanja na Active Directory (AD) za autentifikaciju korisnika pre nego se oni povežu na SQL. To je preporučeni mod za autentifikaciju jer AD predstavlja najbolji način za upravljanje korisničkim polisama i pravama pristupa aplikacijama u organizaciji.
SQL Server autentifikacija funkcioniše tako što čuva korisnička imena i lozinke na serveru baze podataka. Ova opcija se koristi u situacijama kada Active Directory nije dostupan.
Možete koristiti SQL Server i Windows autentifikaciju u isto vreme (miks-mod), ali kada god je moguće treba koristiti Windows autentifikaciju.
Ukoliko morate da koristite SQL Server autentifikaciju, prethodno proverite da je default-ni (sa) nalog ili onemogućen / isključen ili da ima jaku lozinku koja se često menja. Razlog tome je što je upravo ovaj nalog često meta napada od strane hakera. Nalozima na SQL Serveru, uključujući i sa nalog (ukoliko je uključen), može da se upravlja preko SQL Server Management Studio servisa ili putem ALTER LOGIN Transact-SQL (T-SQL) komande.
Server logins i role
Nezavisno od metode autentifikacije koju odaberete, postoje dva tipa logovanja koje konfigurišete za SQL instance: user logins i server logins. User logins ćemo razmatrati u narednom poglavlju. Server logins dozvoljavaju korisnicima da uspostave konekciju ka instanci SQL Servera. Svakom server login-u je pridružena jedna ili više server rola koje mu omogućava da obavlja neke određene aktivnosti na instanci. Po podrazumevanom podešavanju, server logins su dodeljena public server roli, što omogućava osnovni pristup instanci. Druge dostupne role su bulkadmin, securityadmin, dbcreator i serveradmin.
Server logins mogu biti kreirana pomoću T-SQL ili SQL Server Management Studio-a. Kada kreirate Server login morate definisati podrazumevanu (default) bazu. Server logins su povezana sa user logins u bazi. Nema svrhe ako se naziv koje koristite kao server login i naziv njegovog pridruženog user login-a ne podudaraju. Ako nema svoj pridruženi user objekt u podrazumevanoj bazi, biće onemogućen pristup server login-u, osim ukoliko njegova pridružena rola nema pristup svim bazama. Server logins mogu biti mapirana na korisnika u jednoj ili više baza i možete kreirati korisnike tokom podešavanja server logins-a.
Database users, schema i roles
Tokom kreiranja user login-a potrebno je da definišete bazu kojoj će biti pridružen, korisničko ime i podrazumevanu schema-u koja će biti primenjena na sve objekte koje korisnik kreira, ukoliko nije definisana neka druga schema. SQL Server schema-e su skup objekata, poput tabela i views-a, logički razdvojene od drugih objekata u bazi. To olakšava upravljanje pristupima i podrazumeva da nema potrebe za korišćenjem schema naziv kada koristite T-SQL komande za pristup bazi.
Podrazumevana schema za objekte definisane od strane korisnika je dbo. Druga podrazumevana schema je sys. Ona ima prava nas svim sistemskim objektima.
Na isti način na koji server logins imaju dodeljene server roles i user logins imaju dodeljene database roles, koje dodeljuju prava za korišćenje baze. Server database roles su public, db accessadmin, db owner i db securityadmin.
Enkripcija podataka
- Secure Socket Layer (SSL) enkriptuje saobraćaj između servera i klijentske aplikacije, baš kao što je slučaj sa Internet saobraćajem između browser-a i servera. Takođe, klijent može da validira identitet servera, koristeći sertifikat servera.
- Transparent Data Encryption (TDE) enkriptuje podatke na disku. Tačnije, ekriptuje sve podatke i log fajlove. Klijentska aplikacija ne mora da bude promenjenja kada je TDE aktivan.
- Backup enkripcija je slična TDE enkripciji, s tim što ona enkriptuje SQL beckap-ove umesto aktivnih podataka i log fajlova.
- Enkripcija na nivou kolone/ćelije se brine o tome da određeni podaci budu enkriptovani u bazi i ostanu enkriptovani čak i kada su sačuvani u memoriji. Podaci se enkriptuju korišćenjem funkcije i zahtevaju izmenu i na klijentskoj aplikaciji.
- Always encrypted je napredna verzija kolona/ćelija enkripcije, jer ne zahteva nikakvu izmenu na strani klijuentske aplikacije. Podaci ostaju enkriptovani preko mreže, u memoriji i na disku. Takođe štiti osetljive podatke čak i od privilegovanih SQL Server korisnika. Ipak, možete naići i na neke probleme korišćenjem ove enkripcije, jer s obzirom da SQL Server ne može da čita podatke, neke indeksacije i funkcije neće raditi.
Row-level security
Row-level security (RLS) omogućava organizacijama da kontrolišu ko može da vidi redove u bazi podataka. Na primer, možete ograničiti korisnike da vide samo redove koji sadrže informacije o njihovim klijentima.
Zaključak
Kao što ste mogli da vidite, zaštita SQL Servera je kontinuiran proces koji uključuje nekoliko različitih faktora i koraka. Neophodno je da posebno obratite pažnju na SQL Server instance, security polise i redovno ih ažurirate, kako na nivou operativnog sistema tako i na nivou SQL Servera. Redovnim pridržavanjem ovih koraka, dobićete mnogo sigurnije i stabilnije okruženje za vaše poslovanje.