Ključne varnostne funkcije v strežniku SQL

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

VlogaOpis
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.
securityadminUdelež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.

ProcessadminUdelež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.
javnostiVsaka 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

VlogaOpis
db_ownerUdelež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.
Opomba: ne pozabite, da lahko člani vlog dc_ssisadmin in dc_admin dvignejo svoje pravice do sysadmin.

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.