U ovom ćemo članku pogledati sigurnosne alate SQL Server i najbolje prakse za postavljanje i sigurnost ove DBMS..
sadržaj:
- Autentifikacija u SQL Serveru
- Autorizacija u SQL Serveru
- Primjene uloga
- Filtriranje podataka na SQL Serveru
- Sheme u SQL Serveru
- Šifriranje podataka pomoću SQL Servera
- Upotreba grupnih upravljanih korisničkih računa za SQL Server
- Procjena ranjivosti SQL Servera putem SSMS-a
- Revizijska aktivnost u SQL Serveru
- Najbolje prakse opće sigurnosti SQL Servera
Prvo, podsjetimo se osnovnih sigurnosnih koncepata SQL Servera. MSSQL kontrolira pristup objektima putem ovjera i autorizacija.
- ovjera - Ovo je postupak prijave na SQL Server kada korisnik preda svoje podatke poslužitelju. Autentifikacija identificira korisnika koji ima autentičnost;
- autorizacija - ovo je postupak utvrđivanja kojim zaštićenim objektima korisnik može pristupiti i koje su operacije dopuštene za te resurse.
Mnogi objekti SQL Server imaju vlastita dopuštenja koja se mogu naslijediti od nadređenog objekta. Dozvole se mogu dati pojedinom korisniku, grupi ili ulozi.
Autentifikacija u SQL Serveru
Račun SQL Servera može se podijeliti u 2 dijela: Ime za prijavu i korisnik.
- Ime za prijavu - Ovo je globalna prijava za čitavu instancu SQL Servera. S njom prolazite kroz postupak provjere autentičnosti;
- korisnik - ovo je član baze podataka povezan s određenim korisničkim imenom.
Na primjer, može biti prijava vašeg poslužitelja domena \ korisničko ime, a korisnik u bazi podataka koja je povezana s ovom prijavom može se pozvati domain_databaseUser. Gotovo uvijek se ime za prijavu i korisnik u bazi podataka podudaraju u imenu, ali morate imati na umu da se mogu razlikovati i imati različita imena.
SQL Server podržava 2 načina ovjera:
- Provjera autentičnosti sustava Windows (Windows Authentication) - provjera autentičnosti provodi se pomoću Windows sigurnosti. Korisnici koji su već provjereni autentičnošću u sustavu Windows i imaju prava na SQL Server ne trebaju pružati dodatne vjerodajnice.
- Mješovita provjera autentičnosti (Mješovita provjera autentičnosti) - u ovom je načinu, osim provjere autentičnosti Windows, autentifikacija samog SQL Servera podržana putem prijave i lozinke.
Microsoft preporučuje korištenje provjere autentičnosti za Windows, ako je moguće. Za provjeru autentičnosti putem prijave i lozinke podaci (prijava i lozinka) šalju se putem mreže, iako u šifriranom obliku. S Windows autentifikacijom, niz šifriranih poruka prenosi se putem mreže u koju korisnička lozinka nije uključena..
No, neke aplikacije, posebno one starije, ne podržavaju provjeru autentičnosti sustava Windows, pa prilikom postavljanja načina provjere autentičnosti vrijedi razmotriti koji će se programi povezati s poslužiteljem..
SQL Server podržava tri vrste Ime za prijavu (imena za prijavu):
- Lokalni račun Korisnik ili račun Windowsa domena/ pouzdana domena.
- Windows grupa. Omogućavanje pristupa lokalnoj Windows grupi ili grupi iz AD domene. Omogućuje vam pristup svim korisnicima koji su članovi grupe.
- Prijava na SQL Server (Provjera autentičnosti SQL Server-a). SQL Server pohranjuje hash korisničko ime i lozinku u bazu podataka majstor, pomoću internih metoda provjere autentičnosti za potvrdu prijave.
SQL Server se automatski integrira s Active Directoryom. Ako želite distribuirati prava na račun domene, morate koristiti NetBios ime domene i prijavu na račun. Na primjer, za korisničko ime u domeni.local bit će "domena \ korisničko ime".
Autorizacija u SQL Serveru
SQL Server za autorizaciju koristi zaštitu temeljenu na ulogama koja vam omogućava dodijeliti dozvole Windows ulozi ili grupi / domeni, a ne pojedinačnim korisnicima. SQL Server ima ugrađene uloge poslužitelja i baze podataka koje imaju unaprijed definirani skup dozvola.
Postoje 3 razine sigurnosti u SQL Serveru, mogu se predstaviti kao hijerarhija od najvišeg do najnižeg:
- Razina poslužitelja - na ovoj razini možete distribuirati prava na baze podataka, račune, uloge poslužitelja i grupe dostupnosti;
- Razina baze podataka uključuju sheme, korisnike baza podataka, uloge baze podataka i kataloge s cijelim tekstom;
- Nivo kruga uključuju objekte kao što su tablice, prikazi, funkcije i pohranjeni postupci.
Ugrađene uloge poslužitelja
uloga | opis |
sysadmin | Član uloge ima puna prava na sve resurse SQL Servera. |
serveradmin | Članovi uloge mogu promijeniti postavke konfiguracije na razini poslužitelja i isključiti poslužitelj. |
securityadmin | Sudionici u ulozi upravljaju prijavama i njihovim svojstvima. Oni mogu odobriti GRANT, DENY i REVOKE pristupna prava na razini poslužitelja i na razini baze podataka ako imaju pristup njima. securityadmin se ne razlikuje mnogo od uloge sysadmin jer pripadnici ove uloge mogu potencijalno dobiti pristup svim resursima SQL Servera. |
processadmin | Sudionici uloge mogu prekinuti procese koji se izvode u SQL Serveru. |
setupadmin | Članovi uloge mogu dodavati i uklanjati povezane poslužitelje pomoću TSQL-a. |
bulkadmin | Članovi uloge mogu izvoditi operacije BULK INSERT. |
diskadmin | Članovi uloge mogu upravljati sigurnosnim uređajima. U praksi se ta uloga praktički ne primjenjuje.. |
dbcreator | Članovi uloge mogu stvarati, mijenjati, brisati i vraćati baze podataka. |
javnost | Svaka prijava na SQL Server u ovoj je ulozi. Javno članstvo se ne može promijeniti. Kada korisnik nema dozvolu za objekt kojem pristupa, korisnik nasljeđuje dozvole javne uloge za ovaj objekt. |
Shema uloga SQL servera:
U praksi upotreba uloga poslužitelja nije osobito česta jer korisniku često treba jedinstven skup dozvola. Izuzetak može biti uloga sysadmin za administratore sustava i uloga javnosti.
Ugrađene uloge baze podataka
uloga | opis |
db_owner | Sudionici uloge mogu izvršiti sve korake za konfiguriranje i održavanje baze podataka, uključujući brisanje. |
db_securityadmin | Članovi uloge mogu promijeniti članstvo u drugim ulogama. Članovi ove grupe mogu potencijalno povećati svoja prava na vlasniku db_owner, tako da biste trebali uzeti u obzir da je ova uloga jednaka db_owner. |
db_accessadmin | Članovi uloge mogu kontrolirati pristup bazi podataka za postojeće prijave na poslužitelju. |
db_backupoperator | Članovi uloge mogu sigurnosno kopirati bazu podataka. |
db_ddladmin | Članovi uloge mogu izvršavati bilo koju DDL naredbu u bazi podataka. |
db_datawriter | Članovi uloge mogu kreirati / mijenjati / brisati podatke u svim korisničkim tablicama u bazi podataka. |
db_datareader | Članovi uloge mogu čitati podatke iz svih korisničkih tablica. |
db_denydatawriter | |
db_denydatareader | Članovi uloge zabranili su pristup tablicama baze podataka korisnika. |
Također je vrijedno posebno istaknuti posebne uloge u MSdb bazi podataka.
db_ssisadmin db_ssisoperator db_ssisltduser | Pripadnici ovih uloga mogu administrirati i koristiti SSIS (Integration Services SQL Server). |
dc_admin dc_operator dc_proxy | Pripadnici ovih uloga mogu administrirati i koristiti skupljač podataka.. |
PolicyAdministratorRole | Članovi ove uloge imaju puni pristup pravilima SQL Servera. |
ServerGroupAdministratorRole ServerGroupReaderRole | Pripadnici ovih uloga imaju potpuni pristup registriranim skupinama poslužitelja.. |
SQLAgentUserRole SQLAgentReaderRole SQLAgentOperatorRole | Članovi ovih uloga imaju potpuni pristup poslovima agenta SQL Server. |
Shema za ugrađene uloge baze podataka u SQL Serveru:
Primjene uloga
Uloga aplikacije je objekt baze podataka (isti kao i redovna uloga baze podataka) koji omogućuje provjeru lozinke za promjenu sigurnosnog konteksta u bazi podataka. Za razliku od uloga baze podataka, uloge aplikacija su po defaultu neaktivne i aktiviraju se kada aplikacija izvrši sp_setapprole i unese odgovarajuću lozinku.
Za razliku od redovnih uloga, aplikacije se gotovo nikada ne koriste. Kao iznimka, njihova se primjena može pronaći u višeslojnim aplikacijama..
Filtriranje podataka na SQL Serveru
Filtriranje podataka u SQL Serveru putem pohranjenih procedura / pogleda / funkcija može se pripisati implementaciji načela najmanje privilegija, jer ne pružate pristup svim podacima u tablici, već samo nekim od njih.
Na primjer, korisniku možete odobriti samo SELECT prava iz pogleda i spriječiti izravan pristup tablicama koje se koriste u vlasničkom pregledu. Na taj ćete način osigurati pristup samo dijelu podataka iz tablice postavljanjem filtera gdje u prikazu.
Filtriranje podataka putem sigurnosne razine
Sigurnost na razini retka ili Sigurnost na razini reda (RLS) omogućuje filtriranje podataka tablice za različite korisnike po prilagođenom filtru. To se događa putem POLITIKE SIGURNOSTI u T-SQL-u
Na ovom je snimku zaslona pravilo konfigurirano na način da će korisnik Sales1 vidjeti redove tablice u kojima je vrijednost stupca Sales korisničko ime (Sales1), a korisnik Upravitelja će vidjeti sve retke.
Sheme u SQL Serveru
Neki objekti SQL Server (tablice, procedure, prikazi, funkcije) imaju shemu. Sheme se mogu smatrati spremnicima za razne objekte (ili prostor imena, ako ste upoznati s programiranjem).
Na primjer, ako korisnik ima pravo izbora iz neke sheme, tada korisnik također može odabrati iz svih objekata ove sheme. Odnosno, objekti koji pripadaju shemi nasljeđuju njegova dopuštenja. Kad korisnici stvaraju objekte u dijagramu, objekti pripadaju vlasniku dijagrama, a ne korisniku. Dozvole korisnici nisu naslijedili iz sheme. tj korisnici sa zadanom dbo shemom nemaju odobrenja dodijeljena ovoj shemi - moraju biti izričito navedena.
Glavna razlika između shema i uloga je ta što se dozvole za shemu mogu dodijeliti ulogama. Na primjer, uloga testista može imati odabrana dopuštenja sa sheme1 i dopuštenja za odabir / ažuriranje na shemi2. Objekt može pripadati samo jednoj shemi, ali nekoliko uloga može imati prava na njega.
Ugrađeni krugovi
SQL Server ima ugrađene sistemske sheme:
- DBO
- gost
- sys
- INFORMATION_SCHEMA
Dbo shema je zadana shema za nove baze podataka, a korisnik dbo je vlasnik dbo sheme. Novi korisnici u bazi podataka prema zadanoj shemi imaju dbo shemu. Ostale ugrađene sheme potrebne su za objekte sustava SQL Server..
Šifriranje podataka pomoću SQL Servera
SQL Server može šifrirati podatke, postupke i veze s poslužiteljem. Šifriranje je moguće pomoću certifikata, asimetričnog ili simetričnog ključa. SQL Server koristi hijerarhijski model šifriranja, to jest svaki sloj hijerarhije šifrira sloj ispod njega. Podržani su svi dobro poznati i popularni algoritmi za šifriranje. Za implementaciju algoritama za šifriranje koristi se Windows Crypto API..
Najčešći tipovi enkripcije su TDE (Transparentno šifriranje podataka) i Uvijek šifrirano.
Transparentno šifriranje podataka
Transparentno šifriranje podataka ili Transparentno šifriranje podataka šifrira cijelu bazu podataka. Ako je ukraden fizički medij ili .mdf / .ldf datoteka, napadač neće moći pristupiti podacima u bazi podataka.
Grafikon, koji predstavlja cijeli postupak
Osnovno šifriranje baze podataka putem T-SQL-a:
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'lozinka';
go
CREATE CERTIFICATE ServerCert S SUBJECT = 'DEK certifikat';
go
KORISTITE AdventureWorks2012;
GO
USTVARITE KLJUČ ENCRIPCIJE BAZE PODATAKA
SA ALGORITOM = AES_128
PRIJAVA SERVISNOG certifikata ServerCert;
GO
ALTER DATABASE AdventureWorks2012
UKLJUČITE UKLJUČENJE;
GO
Uvijek šifrirano
Ova tehnologija omogućuje vam pohranu šifriranih podataka u SQL Server bez prijenosa ključeva za šifriranje na sam SQL Server. Uvijek šifrirano, poput TDE, kriptira podatke u bazi podataka, ali ne na razini baze podataka, već na razini stupca.
Za šifriranje Always Encrypted koristi 2 tipke:
- Šifriranje ključa stupca (CEK)
- Glavni ključ stupca (CMK)
Svi procesi šifriranja i dešifriranja podataka odvijaju se na klijentu, samo šifrirana vrijednost šifrirajućeg ključa (CEK) sprema se u bazu podataka.
Uvijek šifrirani također vam omogućuje ograničavanje pristupa podacima čak i za DBA, pružajući vam priliku da se ne brinete da će administrator dobiti pristup podacima koji ne bi trebali.
Kada koristiti šifriranje SQL servera?
Šifriranje podataka jedna je od važnih sigurnosnih mjera, ali enkripcija može biti zahtjevna na resursima poslužitelja i ponekad može biti suvišna..
Ako korisnici pristupaju podacima putem javne mreže, tada će se možda trebati šifriranje radi osiguranja sigurnosti, ali ako se podaci prenose putem sigurnog intraneta ili VPN-a, nema potrebe za šifriranjem podataka. Također je vrijedno razmotriti mogućnost šifriranja podataka ako postoji prijetnja od krađe fizičkih medija s bazama podataka.
Provedba šifriranja trebala bi biti dobro planirana: morate uzeti u obzir dodatno opterećenje na poslužitelju, mogu li aplikacije koje rade s vašim poslužiteljem implementirati podršku za ovu vrstu šifriranja na njihovoj strani i mnoge druge nijanse..
Upotreba grupnih upravljanih korisničkih računa za SQL Server
Grupni računi za usluge upravljanja ili g A - Ovo je poseban račun kojim automatski upravlja Active Directory. gMSA je evolucija MSA tehnologije jer MSA nije bilo moguće koristiti u scenarijima klastera.
gMSA eliminira potrebu za ručnom promjenom zaporki za račun. Kada konfigurirate gMSA, naznačujete na kojim poslužiteljima će se pokrenuti gMSA račun, koliko često će Active Directory promijeniti lozinku i tko ima pravo pregledavanja lozinke. Na poslužiteljima na kojima će biti instaliran gMSA, ne trebate navesti lozinku prilikom navođenja odgovarajućeg gMSA računa.
Imajte na umu da verzija sustava Windows Server za rad s gMSA mora biti barem 2012. godina.
Procjena ranjivosti SQL Servera putem SSMS-a
SQL Server Management Studio ima značajku procjene ranjivosti za bazu podataka..
Odaberite bazu podataka -> zadaci -> Procjena ranjivosti -> Skeniranje ranjivosti.
Skener će procijeniti bazu podataka prema popularnim pogreškama u sigurnosnoj konfiguraciji i dati odgovarajuće preporuke..
Svakako treba proći kroz ovaj skener baze podataka. Može otkriti skrivene probleme koji nisu vidljivi na prvi pogled..
Revizijska aktivnost u SQL Serveru
SQL Server pruža mogućnost revizije bilo koje korisničke aktivnosti u instanci poslužitelja.
Ovo je vrlo moćan alat koji vam omogućuje da u potpunosti kontrolirate akcije svojih korisnika / programera..
Razmotrite osnovnu postavku revizije:
U SSMS-u, na kartici Sigurnost -> Revizije, stvorite novu reviziju.
Zatim za reviziju trebate izraditi Specifikaciju revizije koja će naznačiti događaje koji će se nadzirati.
Nakon što stvorite i aktivirate reviziju, u zapisniku revizije možete vidjeti događaje koji su zabilježeni postupkom revizije..
Najbolje prakse opće sigurnosti SQL Servera
Uvijek se pridržavajte načela najmanje privilegije. Uključujući konfiguriranje računa usluge SQL Server pomoću gMSA. Nikada ne koristite račun domene s povlasticama administratora domene..
Načelo najmanje privilegija
Kada stvarate nove korisnike, preporučuje se korištenje principa LUA (Korisnički račun s najnižim povlasticama ili Račun s najmanje prava). Ovaj je princip važan dio sigurnosti poslužitelja i podataka..
Korisnicima s administrativnim pravima preporučuje se izdavanje dozvola samo za one operacije koje će im trebati. Uloge ugrađenih poslužitelja smiju se upotrebljavati samo ako njihov skup dopuštenja odgovara korisnikovim zadacima..
Dodjeljivanje uloga, a ne korisnicima
Kad je mnogo korisnika, upravljanje njihovim dozvolama postaje teže, a također je i teže spriječiti pogreške u davanju prava.
Preporučuje se dodjeli dopuštenja ulogama i dodavanju korisnika u ulogama. Na taj način postići ćete veću transparentnost jer će svi korisnici određene uloge imati ista prava. Dodavanje ili uklanjanje korisnika iz uloge je lakše nego ponovno stvaranje pojedinačnih skupova dozvola za pojedine korisnike. Uloge se mogu ugniježditi, ali to se ne preporučuje, zbog manje transparentnosti i potencijalne degradacije performansi (ako ima previše ugniježđenih uloga).
Možete odobriti prava korisnika na shemu. U tom slučaju će korisnici odmah moći raditi s novostvorenim objektima u ovoj shemi, za razliku od uloga, kada stvaraju novi objekt, uloge će mu trebati dodijeliti prava na njega.