V tem članku si bomo ogledali varnostna orodja SQL Server in najboljše prakse za nastavitev in zaščito tega DBMS..
Vsebina:
- Preverjanje pristnosti v strežniku SQL
- Pooblastitev v SQL Serverju
- Vloge aplikacij
- Filtriranje podatkov v SQL strežniku
- Sheme v SQL Serverju
- Šifriranje podatkov z uporabo SQL strežnika
- Uporaba skupinskih računov za storitve za SQL Server
- Ocena ranljivosti SQL Server prek SSMS
- Revizijska dejavnost v SQL Serverju
- Najboljše prakse splošne varnosti SQL Serverja
Najprej se spomnimo osnovnih varnostnih konceptov SQL Serverja. MSSQL nadzoruje dostop do predmetov skozi overjanje in pooblastilo.
- Preverjanje pristnosti - To je postopek prijave v SQL Server, ko uporabnik svoje podatke predloži strežniku. Preverjanje identitete identificira uporabnika, ki je overjen;
- Prijava - to je postopek določitve, do katerih zaščitenih objektov lahko uporabnik dostopa in katere operacije so dovoljene za te vire.
Številni predmeti SQL Server imajo lastna dovoljenja, ki jih je mogoče podedovati od nadrejenega predmeta. Dovoljenja se lahko podelijo posameznemu uporabniku, skupini ali vlogi.
Preverjanje pristnosti v strežniku SQL
Račun SQL Server lahko razdelite na 2 dela: Ime za prijavo in Uporabnik.
- Ime za prijavo - To je globalna prijava za celoten primerek SQL Serverja. Z njim greste skozi postopek overjanja;
- Uporabnik - to je član baze podatkov, povezan z določenim imenom za prijavo.
Na primer, morda je vaša prijava na strežnik domena \ uporabniško ime, uporabnika v bazi podatkov, povezanih s to prijavo, pa lahko pokličete Uporabnik_domena_podatkov. Skoraj vedno se ime in uporabnik v bazi podatkov po imenu ujemata, vendar morate imeti v mislih, da se lahko razlikujeta, imata različna imena.
SQL Server podpira 2 načina overjanje:
- Preverjanje pristnosti Windows (Windows Authentication) - preverjanje pristnosti se izvaja z varnostjo sistema Windows. Uporabnikom, ki so že potrjeni z Windows in imajo pravice do SQL Serverja, ni treba predložiti dodatnih poverilnic.
- Mešano preverjanje pristnosti (Mešano preverjanje pristnosti) - v tem načinu je poleg avtentifikacije Windows podpora za prijavo in geslo podprta tudi avtentikacija samega SQL strežnika..
Microsoft priporoča uporabo avtentikacije Windows, če je mogoče. Za preverjanje pristnosti prek prijave in gesla se podatki (prijava in geslo) posredujejo po omrežju, čeprav v šifrirani obliki. Z avtentikacijo sistema Windows se prek omrežja, v katerem uporabniško geslo ni vključeno, pošlje vrsta šifriranih sporočil..
Toda nekatere aplikacije, zlasti starejše, ne podpirajo preverjanja pristnosti Windows, zato je pri nastavitvi načina preverjanja pristnosti vredno razmisliti, katere aplikacije se bodo povezale s strežnikom.
SQL Server podpira tri vrste Ime za prijavo (imena za prijavo):
- Lokalni račun Uporabnik ali račun Windows domena/ zaupanja vredna domena.
- Skupina Windows. Omogočanje dostopa do lokalne skupine Windows ali skupine iz domene AD. Omogoča dostop do vseh uporabnikov, ki so člani skupine.
- Prijava v SQL Server (Overjanje SQL Server). SQL Server hrani zbirke uporabniškega imena in gesla v bazo podatkov mojster, z uporabo notranjih avtentikacijskih metod za preverjanje prijave.
SQL Server se samodejno integrira z Active Directory. Če želite razširiti pravice domene, morate uporabiti NetBios ime domene in prijavo na račun. Na primer, za uporabniško ime v domeni.local bo „domena \ uporabniško ime“.
Pooblastitev v SQL Serverju
SQL Server za avtorizacijo uporablja zaščito na podlagi vlog, ki vam omogoča, da dodelite dovoljenja vlogi ali skupini / domeni Windows, ne pa posameznim uporabnikom. SQL Server ima vgrajene vloge strežnika in baze podatkov, ki imajo vnaprej določen nabor dovoljenj.
V sistemu SQL Server obstajajo tri stopnje varnosti, ki jih lahko predstavljamo kot hierarhijo od najvišje do najnižje:
- Raven strežnika - na tej ravni lahko razdelite pravice do baz podatkov, računov, vlog strežnika in skupin razpoložljivosti;
- Raven baze podatkov vključujejo sheme, uporabnike baz podatkov, vloge baz podatkov in kataloge s celotnim besedilom;
- Nivo vezja vključujejo predmete, kot so tabele, pogledi, funkcije in shranjeni postopki.
Vgrajene vloge strežnika
Vloga | Opis |
sysadmin | Član vloge ima polne pravice do vseh virov SQL Serverja. |
serveradmin | Člani vloge lahko spremenijo nastavitve na ravni strežnika in izklopijo strežnik. |
securityadmin | Udeleženci vloge upravljajo prijave in njihove lastnosti. GRANT, DENY in REVOKE pravice dostopa lahko odobrijo na ravni strežnika in na ravni baze podatkov, če imajo dostop do njega. securityadmin se ne razlikuje veliko od vloge sysadmin, ker lahko člani te vloge pridobijo dostop do vseh virov SQL Serverja. |
Processadmin | Udeleženci vloge lahko prekinejo procese, ki se izvajajo v SQL Serverju. |
setupadmin | Člani vloge lahko dodajo in odstranijo povezane strežnike s pomočjo TSQL. |
bulkadmin | Člani vloge lahko izvajajo operacije BULK INSERT. |
diskadmin | Člani vloge lahko upravljajo varnostne naprave. V praksi se ta vloga praktično ne uporablja.. |
dbcreator | Člani vloge lahko ustvarjajo, spreminjajo, brišejo in obnavljajo baze podatkov. |
javnosti | Vsaka prijava v SQL Server je v tej vlogi. Javnega članstva ni mogoče spremeniti. Kadar uporabnik nima dovoljenja za objekt, do katerega dostopa, uporabnik podeduje dovoljenja za javno vlogo tega predmeta. |
Shema vlog SQL Server:
Uporaba vlog strežnika v praksi ni posebej pogosta, saj pogosto uporabnik potrebuje edinstven nabor dovoljenj. Izjema sta lahko vloga sysadmin za sistemske skrbnike in vloga javnosti.
Vgrajene vloge baze podatkov
Vloga | Opis |
db_owner | Udeleženci vloge lahko izvedejo vse korake za konfiguriranje in vzdrževanje baze podatkov, vključno z brisanjem. |
db_securityadmin | Člani vlog lahko spremenijo članstvo v drugih vlogah. Člani te skupine lahko potencialno povečajo svoje pravice do db_owner, zato morate to vlogo upoštevati kot db_owner. |
db_accessadmin | Člani vloge lahko nadzorujejo dostop do baze podatkov za obstoječe prijave na strežniku. |
db_backupoperator | Člani vloge lahko varnostno kopirajo bazo podatkov. |
db_ddladmin | Člani vloge lahko izvršijo kateri koli ukaz DDL v bazi podatkov. |
db_datawriter | Člani vloge lahko ustvarijo / spremenijo / izbrišejo podatke v vseh uporabniških tabelah v bazi podatkov. |
db_datareader | Člani vloge lahko berejo podatke iz vseh uporabniških tabel. |
db_denydatawriter | |
db_denydatareader | Člani vloge so zavrnili dostop do tabel uporabniških zbirk podatkov. |
Prav tako je vredno posebej izpostaviti posebne vloge v bazi podatkov msdb.
db_ssisadmin db_ssisoperator db_ssisltduser | Člani teh vlog lahko upravljajo in uporabljajo SSIS (SQL Server Integration Services). |
dc_admin dc_operator dc_proxy | Člani teh vlog lahko upravljajo in uporabljajo zbiralnik podatkov.. |
PolicyAdministratorRole | Člani te vloge imajo popoln dostop do pravilnikov SQL Server. |
ServerGroupAdministratorRole ServerGroupReaderRole | Člani teh vlog imajo popoln dostop do registriranih skupin strežnikov.. |
SQLAgentUserRole SQLAgentReaderRole SQLAgentOperatorRole | Člani teh vlog imajo popoln dostop do opravil agenta SQL Server. |
Shema za vloge vgrajene baze podatkov v SQL Server:
Vloge aplikacij
Vloga aplikacije je objekt baze podatkov (enako kot običajna vloga baze podatkov), ki omogoča preverjanje pristnosti gesla za spreminjanje varnostnega konteksta v bazi. Za razliko od vlog baze podatkov so vloge aplikacij privzeto neaktivne in se aktivirajo, ko aplikacija izvede sp_setapprole in vnese ustrezno geslo.
V nasprotju z običajnimi vlogami se aplikacije vlog skoraj nikoli ne uporabljajo. Izjema je njihova uporaba v večplastnih aplikacijah..
Filtriranje podatkov v SQL strežniku
Filtriranje podatkov v SQL strežniku s shranjenimi postopki / pogledi / funkcijami je mogoče pripisati izvajanju načela najmanjših privilegijev, saj ne zagotavljate dostopa do vseh podatkov v tabeli, ampak le do nekaterih od njih.
Na primer, lahko uporabniku dodelite samo SELECT pravice iz pogleda in preprečite neposreden dostop do tabel, ki se uporabljajo v pogledu. Tako boste omogočili dostop do le dela podatkov iz tabele, tako da v pogledu nastavite filter kjer.
Filtriranje podatkov prek varnostne ravni
Varnost na ravni vrstic ali Varnost na ravni vrstice (RLS) omogoča filtriranje podatkov tabel za različne uporabnike s filtrom po meri. To se izvaja s pomočjo POLITIKE VARNOSTI v T-SQL
Na tem zaslonu je pravilnik konfiguriran tako, da bo uporabnik Sales1 videl vrstice tabele, v katerih je vrednost stolpca Sales uporabniško ime (Sales1), uporabnik Manager pa bo videl vse vrstice.
Sheme v SQL Serverju
Nekateri predmeti SQL Server (tabele, postopki, pogledi, funkcije) imajo shemo. Sheme lahko predstavljate kot vsebnike za različne predmete (ali imensko območje, če poznate programiranje).
Na primer, če ima uporabnik pravice izbrati iz sheme, potem lahko uporabnik izbere tudi vse predmete te sheme. To pomeni, da predmeti, ki spadajo v shemo, podedujejo njena dovoljenja. Ko uporabniki ustvarijo predmete v diagramu, predmeti pripadajo lastniku diagrama, ne uporabniku. Uporabniki po sistemu ne podedujejo dovoljenj. I.e. uporabniki s privzeto shemo dbo nimajo dovoljenj za to shemo - morajo biti izrecno navedena.
Glavna razlika med shemami in vlogami je, da se vlogam lahko dodelijo dovoljenja za shemo. Na primer, vloga testrola ima lahko izbirna dovoljenja iz sheme1 in dovoljenja za izbiro / posodobitev na shemi2. Predmet lahko pripada samo eni shemi, vendar ima več vlog pravice do njega.
Vgrajena vezja
SQL Server ima vgrajene sistemske sheme:
- dbo
- gost
- sys
- INFORMATION_SCHEMA
Shema dbo je privzeta shema za nove baze podatkov, uporabnik dbo pa lastnik dbo sheme. Novi uporabniki v bazi podatkov imajo privzeto shemo dbo kot privzeto shemo. Druge vgrajene sheme so potrebne za sistemske predmete SQL Server..
Šifriranje podatkov z uporabo SQL strežnika
SQL Server lahko šifrira podatke, postopke in povezave s strežnikom. Šifriranje je možno s pomočjo potrdila, asimetričnega ali simetričnega ključa. SQL Server uporablja hierarhični model šifriranja, torej vsak sloj hierarhije šifrira plast pod njim. Podprti so vsi dobro znani in priljubljeni algoritmi za šifriranje. Za izvajanje algoritmov šifriranja se uporablja Windows Crypto API..
Najpogostejši vrsti šifriranja sta TDE (Transparent Data Encryption) in Vedno šifrirano.
Prozorno šifriranje podatkov
Prozorno šifriranje podatkov ali Prozorno šifriranje podatkov šifrira celotno bazo podatkov. Če je ukraden fizični medij ali datoteka .mdf / .ldf, napadalec ne bo mogel dostopati do informacij v bazi podatkov.
Tabela, ki predstavlja celoten postopek
Osnovno šifriranje baze podatkov s pomočjo T-SQL:
USE mojster;
GO
Ustvari MASTER KEY ENCRYPTION S PASSWORD = 'geslo';
pojdi
CREATE CERTIFICATE ServerCert S SUBJECT = 'DEK potrdilo';
pojdi
UPORABITE AdventureWorks2012;
GO
USTVARITE KLJUČ ZA VSTOPANJE PODATKOV
Z ALGORITEM = AES_128
VKLJUČENO PO SERVERU CERTIFICATE ServerCert;
GO
ALTER DATABASE AdventureWorks2012
VKLJUČEN ENKRIPCIJO;
GO
Vedno šifrirano
Ta tehnologija vam omogoča shranjevanje šifriranih podatkov v SQL Server brez prenosa šifrirnih ključev na sam SQL Server. Vedno šifriran, kot TDE, šifrira podatke v bazi podatkov, vendar ne na ravni baze podatkov, temveč na ravni stolpcev.
Za šifriranje Always Encrypted uporablja 2 tipki:
- Šifrirni ključ stolpca (CEK)
- Glavni ključ stolpca (CMK)
Vsi postopki šifriranja in dešifriranja podatkov potekajo na odjemalcu, samo šifrirana vrednost šifrirnega ključa (CEK) se shrani v bazo podatkov.
Vedno šifriran vam omogoča tudi, da omejite dostop do podatkov tudi za DBA, s čimer imate priložnost, da ne skrbite, da bo skrbnik dobil dostop do podatkov, ki ne bi smeli.
Kdaj uporabiti šifriranje strežnika SQL?
Šifriranje podatkov je eden pomembnih varnostnih ukrepov, vendar je šifriranje na strežniških virih zahtevno in je včasih odveč..
Če uporabniki dostopajo do podatkov prek javnega omrežja, je za zagotovitev varnosti morda potrebna šifriranje, če pa se podatki prenašajo prek varnega intraneta ali VPN, šifriranja podatkov ni treba. Prav tako je vredno razmisliti o možnosti šifriranja podatkov, če obstaja nevarnost kraje fizičnih medijev z bazami podatkov.
Izvedba šifriranja bi morala biti dobro načrtovana: upoštevati morate dodatno obremenitev strežnika, ne glede na to, ali lahko aplikacije, ki delujejo z vašim strežnikom, izvajajo podporo za to vrsto šifriranja na svoji strani in številne druge nianse.
Uporaba skupinskih računov za storitve za SQL Server
Skupinski računi storitev za upravljanje ali gMSA - To je poseben račun, ki ga samodejno upravlja Active Directory. gMSA je razvoj tehnologije MSA, saj MSA ni bilo mogoče uporabiti v scenarijih grozda.
gMSA odpravlja potrebo po ročni spremembi gesla za račun. Ko konfigurirate gMSA, navedete, na katerih strežnikih se bo izvajal račun gMSA, kako pogosto bo Active Directory spremenil geslo in kdo ima pravico do ogleda gesla. Na strežnikih, na katere bo nameščen gMSA, vam ni treba določiti gesla, ko določite ustrezen račun gMSA.
Upoštevajte, da mora biti različica sistema Windows Server za delo z gMSA vsaj 2012.
Ocena ranljivosti SQL Server prek SSMS
SQL Server Management Studio ima za bazo podatkov funkcijo ocene ranljivosti..
Izberite bazo podatkov -> Naloge -> Ocena ranljivosti -> Skeniranje ranljivosti.
Optični bralnik bo ocenil zbirko podatkov glede na priljubljene napake v varnostni konfiguraciji in dal ustrezna priporočila..
Zagotovo bi morali s tem optičnim bralnikom iti skozi ta bralnik podatkovnih baz. Lahko razkrije skrite težave, ki niso vidne na prvi pogled..
Revizijska dejavnost v SQL Serverju
SQL Server ponuja možnost revizije katere koli uporabniške aktivnosti v primerku strežnika.
To je zelo zmogljivo orodje, ki vam omogoča popoln nadzor nad dejanji vaših uporabnikov / razvijalcev..
Upoštevajte osnovno nastavitev revizije:
V SSMS na kartici Varnost -> Revizije ustvarite novo revizijo.
Nato morate za revidiranje izdelati revizijsko specifikacijo, ki bo navajala dogodke, ki jih boste spremljali.
Ko ustvarite in aktivirate revizijo, lahko v revizijskem dnevniku vidite dogodke, ki jih zabeleži revizijski postopek..
Najboljše prakse splošne varnosti SQL Serverja
Vedno upoštevajte načelo najmanj privilegijev. Vključno s konfiguriranjem računa storitve storitve SQL Server z uporabo gMSA. Nikoli ne uporabljajte domenskega računa s privilegiji skrbnika domene..
Načelo najmanj privilegijev
Ko ustvarjate nove uporabnike, priporočamo uporabo načela LUA (Uporabnik z najmanj privilegiranimi računi ali Račun z najmanj pravicami) To načelo je pomemben del varnosti strežnika in podatkov..
Uporabnikom z upravnimi pravicami je priporočljivo izdati dovoljenja samo za tiste operacije, ki jih bodo potrebovali. Vloge vdelanih strežnikov je treba uporabljati samo, če se njihov nabor dovoljenj ujema z nalogami uporabnika..
Podeljevanje vlog, ne pa uporabnikom
Ko je veliko uporabnikov, je upravljanje z njihovimi dovoljenji težje in tudi težje preprečuje napake pri podeljevanju pravic.
Priporočamo, da vlogam dodelite dovoljenja in uporabnikom dodate vloge. Tako boste dosegli večjo preglednost, saj bodo imeli vsi uporabniki določene vloge enake pravice. Dodajanje ali odstranjevanje uporabnikov iz vloge je lažje kot ponovno ustvarjanje posameznih dovoljenih nizov za posamezne uporabnike. Vloge se lahko gnezdijo, vendar to ni priporočljivo zaradi manjše preglednosti in potencialne poslabšanja uspešnosti (če je preveč ugnezdenih vlog).
Uporabniške pravice za shemo lahko odobrite. V tem primeru bodo uporabniki takoj lahko delali z novo ustvarjenimi predmeti v tej shemi, v nasprotju z vlogami pa bodo morali vlogi pri ustvarjanju novega predmeta dodeliti pravice do njega.