Kľúčové funkcie zabezpečenia servera SQL Server

V tomto článku sa pozrieme na nástroje zabezpečenia servera SQL a osvedčené postupy na nastavenie a zabezpečenie tejto databázy DBMS..

obsah:

  • Autentifikácia v SQL Serveri
  • Autorizácia na serveri SQL Server
  • Aplikačné úlohy
  • Filtrovanie údajov v SQL Serveri
  • Schémy v SQL Serveri
  • Šifrovanie dát pomocou servera SQL
  • Používanie účtov spravovaných skupinou pre SQL Server
  • Posúdenie zraniteľnosti servera SQL pomocou SSMS
  • Audítorská činnosť v SQL Serveri
  • Osvedčené postupy všeobecnej bezpečnosti servera SQL

Najprv si pripomeňme základné bezpečnostné koncepty servera SQL Server. MSSQL riadi prístup k objektom prostredníctvom overenie pravosti a povolenie.

  • overenie pravosti - Toto je proces prihlásenia do servera SQL Server, keď používateľ odošle svoje údaje na server. Autentifikácia identifikuje autentifikovaného užívateľa;
  • povolenie - Toto je proces určovania, ku ktorým chráneným objektom má užívateľ prístup a aké operácie sú pre tieto prostriedky povolené.

Mnoho objektov servera SQL Server má svoje vlastné povolenia, ktoré je možné dediť z nadradeného objektu. Povolenia môžu byť udelené jednotlivému používateľovi, skupine alebo úlohe.

Autentifikácia v SQL Serveri

Účet SQL Server je možné rozdeliť na dve časti: Prihlasovacie meno a užívateľ.

  • Prihlasovacie meno - Toto je globálne prihlásenie pre celú inštanciu servera SQL Server. S ním prejdete procesom overovania;
  • užívateľ - toto je člen databázy spojený s konkrétnym prihlasovacím menom.

Napríklad vaše prihlasovacie údaje k serveru môžu byť doména \ meno používateľa, a je možné zavolať užívateľa v databáze spojenej s týmto prihlásením domain_databaseUser. Takmer vždy sa prihlasovacie meno a užívateľ v databáze zhodujú v názve, musíte však pamätať na to, že sa môžu líšiť, mať rôzne názvy.

SQL Server podporuje 2 režimy overenie pravosti:

  • Overenie systému Windows (Windows Authentication) - autentifikácia sa vykonáva pomocou zabezpečenia Windows. Používatelia, ktorí sú už overení v systéme Windows a majú práva na server SQL Server, nemusia poskytovať ďalšie poverenia.
  • Zmiešané overovanie (Autentifikácia v zmiešanom režime) - v tomto režime je okrem autentifikácie Windows podporovaná aj autentifikácia samotného servera SQL prostredníctvom prihlasovacieho mena a hesla.

Spoločnosť Microsoft odporúča používať autentifikáciu systému Windows, ak je to možné. Na autentifikáciu pomocou prihlasovacieho mena a hesla sa údaje (prihlasovacie meno a heslo) prenášajú po sieti, aj keď v šifrovanej podobe. Pri overovaní systému Windows sa prenáša séria šifrovaných správ cez sieť, do ktorej nie je zahrnuté heslo používateľa..

Niektoré aplikácie, najmä tie staršie, nepodporujú overovanie systému Windows, takže pri nastavovaní režimu overovania je potrebné zvážiť, ktoré aplikácie sa pripoja k serveru..

SQL Server podporuje tri typy Prihlasovacie meno (prihlasovacie mená):

  • Lokálny účet Používateľ alebo účet systému Windows doména/ dôveryhodná doména.
  • Skupina Windows. Udelenie prístupu k miestnej skupine Windows alebo skupine z domény AD. Umožňuje vám poskytnúť prístup všetkým používateľom, ktorí sú členmi skupiny.
  • Prihlásenie do servera SQL (Overenie servera SQL). SQL Server ukladá hašovacie meno a heslo do databázy majster, pomocou interných metód overovania na overenie prihlásenia.

SQL Server sa automaticky integruje do služby Active Directory. Ak chcete distribuovať práva doménového účtu, musíte použiť názov domény NetBios a prihlasovacie údaje k účtu. Napríklad pre používateľské meno používateľa v doméne.local bude „doména \ meno používateľa“.

Autorizácia na serveri SQL Server

Na autorizáciu server SQL Server používa zabezpečenie založené na rolách, ktoré vám umožňuje priradiť povolenia k rolám alebo skupine / doméne systému Windows, a nie k jednotlivým používateľom. SQL Server má vstavané úlohy servera a databázy, ktoré majú preddefinovanú množinu povolení.

Na serveri SQL Server sú 3 úrovne zabezpečenia, ktoré môžu byť reprezentované ako hierarchia od najvyššej po najnižšiu:

  • Úroveň servera - na tejto úrovni môžete distribuovať práva do databáz, účtov, rolí serverov a skupín dostupnosti;
  • Databázová úroveň zahŕňajú schémy, používateľov databázy, databázové úlohy a fulltextové katalógy;
  • Obvodová úroveň zahŕňajú objekty, ako sú tabuľky, zobrazenia, funkcie a uložené procedúry.

Vstavané serverové role

rolepopis
sysadminČlen role má plné práva na všetky prostriedky servera SQL.
ServerAdminČlenovia roly môžu zmeniť nastavenia konfigurácie na úrovni servera a vypnúť server.
securityadminÚčastníci roly spravujú prihlasovacie údaje a ich vlastnosti. Môžu udeliť prístupové práva GRANT, DENY a REVOKE na úrovni servera a na úrovni databázy, ak k nim majú prístup.

securityadmin sa príliš nelíši od role sysadmin, pretože členovia tejto role môžu potenciálne získať prístup ku všetkým prostriedkom SQL Server.

processadminÚčastníci roly môžu ukončiť procesy bežiace na serveri SQL Server.
setupadminČlenovia rolí môžu pridávať a odstraňovať prepojené servery pomocou TSQL.
bulkadminČlenovia rolí môžu vykonávať operácie BULK INSERT.
diskadminČlenovia rolí môžu spravovať záložné zariadenia. V praxi sa táto úloha prakticky neuplatňuje..
dbcreatorČlenovia rolí môžu vytvárať, upravovať, mazať a obnovovať databázy.
verejnosťKaždé prihlásenie servera SQL je v tejto úlohe. Verejné členstvo nie je možné zmeniť. Ak používateľ nemá povolenie na objekt, ku ktorému má prístup, zdedí pre tento objekt oprávnenie verejnej roly..

Schéma úlohy servera SQL:

V praxi nie je použitie rolí servera zvlášť bežné, pretože užívateľ často potrebuje jedinečnú sadu povolení. Výnimkou môže byť rola sysadmin pre správcov systému a verejná rola.

Vstavané databázové role

rolepopis
db_ownerÚčastníci roly môžu vykonať všetky kroky na konfiguráciu a údržbu databázy vrátane odstránenia.
db_securityadminČlenovia rolí môžu zmeniť členstvo v iných rolách. Členovia tejto skupiny môžu potenciálne zvýšiť svoje práva na db_owner, preto by ste mali túto rolu považovať za rovnocennú s db_owner.
db_accessadminČlenovia roly môžu riadiť prístup k databáze pre existujúce prihlásenia na serveri.
db_backupoperatorČlenovia roly môžu databázu zálohovať.
db_ddladmin Členovia rolí môžu vykonať akýkoľvek príkaz DDL v databáze.
db_datawriter Členovia rolí môžu vytvárať / upravovať / mazať údaje vo všetkých užívateľských tabuľkách v databáze.
db_datareaderČlenovia rolí môžu čítať údaje zo všetkých užívateľských tabuliek.
db_denydatawriter
db_denydatareaderČlenovia roly odmietli prístup k tabuľkám užívateľských databáz.

Je tiež potrebné osobitne zdôrazniť špeciálne úlohy v databáze msdb.

db_ssisadmin

db_ssisoperator

db_ssisltduser

Členovia týchto rolí môžu spravovať a používať SSIS (SQL Server Integration Services)..
dc_admin

dc_operator

dc_proxy

Členovia týchto rolí môžu spravovať a používať zberač údajov..
PolicyAdministratorRoleČlenovia tejto roly majú plný prístup k politikám servera SQL Server.
ServerGroupAdministratorRole

ServerGroupReaderRole

Členovia týchto rolí majú plný prístup k registrovaným skupinám serverov..
SQLAgentUserRole SQLAgentReaderRole SQLAgentOperatorRoleČlenovia týchto rolí majú plný prístup k úlohám servera SQL Server Agent.
Poznámka: nezabudnite, že členovia rolí dc_ssisadmin a dc_admin môžu zvýšiť svoje práva na sysadmin.

Schéma pre vstavané databázové role na serveri SQL Server:

Aplikačné úlohy

Aplikačná rola je databázový objekt (rovnaký ako bežná databázová rola), ktorý umožňuje autentifikáciu pomocou hesla zmeniť bezpečnostný kontext v databáze. Na rozdiel od databázových rolí sú aplikačné role predvolene neaktívne a aktivujú sa, keď aplikácia spustí sp_setapprole a zadá príslušné heslo..

Na rozdiel od bežných rolí sa aplikačné role takmer nikdy nepoužívajú. Výnimočne je možné ich použitie nájsť vo viacvrstvových aplikáciách..

Filtrovanie údajov v SQL Serveri

Filtrovanie údajov na serveri SQL pomocou uložených procedúr / zobrazení / funkcií možno pripísať implementácii princípu najmenších oprávnení, pretože nezabezpečujete prístup ku všetkým údajom v tabuľke, ale iba k niektorým z nich..

Napríklad môžete užívateľovi udeliť z pohľadu len práva SELECT a zabrániť priamemu prístupu k tabuľkám, ktoré sa používajú v zobrazení. Poskytnete tak prístup k iba časti údajov z tabuľky nastavením filtra Filter v zobrazení.

Filtrovanie údajov pomocou zabezpečenia na úrovni riadkov

Riadok na úrovni zabezpečenia alebo Zabezpečenie na úrovni riadku (RLS) umožňuje filtrovať údaje tabuľky pre rôznych používateľov pomocou vlastného filtra. Uskutočňuje sa to prostredníctvom BEZPEČNOSTNEJ POLITIKY v T-SQL

Na tejto snímke obrazovky je politika nakonfigurovaná takým spôsobom, že používateľ Sales1 uvidí riadky tabuľky, v ktorej je hodnota stĺpca Predaj užívateľským menom (Sales1) a správca uvidí všetky riadky.

Schémy v SQL Serveri

Niektoré objekty servera SQL (tabuľky, procedúry, zobrazenia, funkcie) majú schému. Schémy je možné chápať ako kontajnery pre rôzne objekty (alebo menný priestor, ak ste oboznámení s programovaním).

Napríklad, ak má užívateľ práva na výber zo schémy, môže si tiež vybrať zo všetkých objektov tejto schémy. To znamená, že objekty, ktoré patria do schémy, zdedia svoje povolenia. Keď používatelia vytvárajú objekty v diagrame, objekty patria vlastníkovi diagramu, nie užívateľovi. Používatelia nezdedia povolenia zo systému. tj používatelia s predvolenou schémou dbo nemajú k tejto schéme udelené povolenia - musia byť explicitne špecifikovaní.

Hlavný rozdiel medzi schémami a rolami spočíva v tom, že sa rolám môžu udeliť oprávnenia na schémy. Napríklad úloha testrole môže mať oprávnenia na výber zo schémy1 a oprávnenia na výber / aktualizáciu na schéme2. Objekt môže patriť iba do jednej schémy, ale práva naň môžu mať niekoľko rolí.

Vstavané obvody

SQL Server má vstavané systémové schémy:

  • dbo
  • hosť
  • sys
  • INFORMATION_SCHEMA

Schéma dbo je predvolená schéma pre nové databázy a užívateľ dbo je vlastníkom schémy dbo. V predvolenom nastavení majú noví používatelia v databáze ako predvolenú schému schému dbo. Ostatné vstavané schémy sú potrebné pre systémové objekty SQL Server..

Šifrovanie dát pomocou servera SQL

SQL Server môže šifrovať údaje, procedúry a pripojenia k serveru. Šifrovanie je možné pomocou certifikátu, asymetrického alebo symetrického kľúča. SQL Server používa hierarchický šifrovací model, to znamená, že každá vrstva hierarchie šifruje vrstvu pod ňou. Podporované sú všetky známe a populárne šifrovacie algoritmy. Na implementáciu šifrovacích algoritmov sa používa rozhranie Windows Crypto API..

Najbežnejšie typy šifrovania sú TDE (Transparent Data Encryption) a Always Encrypted.

Transparentné šifrovanie údajov

Transparentné šifrovanie údajov alebo Transparentné šifrovanie údajov šifruje celú databázu. Ak dôjde k odcudzeniu fyzického média alebo súboru .mdf / .ldf, útočník nebude mať prístup k informáciám v databáze.

Graf, ktorý predstavuje celý proces

Základné šifrovanie databázy pomocou T-SQL:

USE master;
GO
VYTVORIŤ HLAVNÚ KĽÚČOVÚ ENCRYPCIU HESLO = 'heslo';
go
VYTVORIŤ CERTIFIKÁT ServerCert S SUBJECT = 'DEK certifikát';
go
USE AdventureWorks2012;
GO
VYTVORIŤ KĽÚČ DATABÁZOVEJ KLÁVESY
S ALGORITHM = AES_128
ŠÍRKA CERTIFIKÁTOM SERVERU ServerCert;
GO
ALTER DATABASE AdventureWorks2012
SET ENCRYPTION ON;
GO

Vždy šifrované

Táto technológia umožňuje ukladať šifrované údaje na server SQL Server bez prenosu šifrovacích kľúčov na samotný server SQL Server. Vždy šifrované, napríklad TDE, šifruje údaje v databáze, ale nie na úrovni databázy, ale na úrovni stĺpca.

Na šifrovanie, vždy šifrované, používa 2 kľúče:

  • Kľúč pre šifrovanie stĺpcov (CEK)
  • Hlavný kľúč stĺpca (CMK)

Všetky procesy šifrovania a dešifrovania údajov prebiehajú na klientovi, v databáze je uložená iba šifrovaná hodnota šifrovacieho kľúča (CEK)..

Vždy šifrované vám tiež umožňuje obmedziť prístup k údajom aj pre DBA, čo vám dáva možnosť obávať sa, že správca získa prístup k údajom, ktoré by nemali byť.

Kedy použiť SQL Server Encryption?

Šifrovanie údajov je jedným z dôležitých bezpečnostných opatrení, ale šifrovanie môže byť náročné na prostriedky servera a niekedy môže byť zbytočné..

Ak používatelia pristupujú k údajom prostredníctvom verejnej siete, môže byť na zabezpečenie zabezpečenia potrebné šifrovanie, ale ak sa údaje prenášajú prostredníctvom zabezpečeného intranetu alebo VPN, nie je potrebné šifrovať údaje. Je tiež potrebné zvážiť možnosť šifrovania údajov, ak hrozí krádež fyzického média s databázami.

Implementácia šifrovania by mala byť dobre naplánovaná: musíte vziať do úvahy ďalšie zaťaženie servera, či aplikácie, ktoré pracujú so serverom, môžu implementovať podporu tohto typu šifrovania na svojej strane a mnoho ďalších nuancií..

Používanie účtov spravovaných skupinou pre SQL Server

Účty spravované skupinou alebo združenie GSM - Toto je špeciálny účet, ktorý je automaticky spravovaný službou Active Directory. gMSA je vývoj technológie MSA, pretože MSA nebolo možné použiť v klastrových scenároch.

gMSA vylučuje potrebu manuálnej zmeny hesiel pre účet. Pri nastavovaní gMSA určíte, na ktorých serveroch bude účet gMSA bežať, ako často služba Active Directory zmení heslo a kto má právo heslo zobraziť. Na serveroch, na ktorých bude nainštalovaný gMSA, nemusíte pri zadávaní zodpovedajúceho účtu gMSA zadávať heslo..

Majte na pamäti, že verzia systému Windows Server pre prácu s gMSA musí byť najmenej 2012.

Posúdenie zraniteľnosti servera SQL pomocou SSMS

SQL Server Management Studio má funkciu posúdenia zraniteľnosti databázy..

Vyberte databázu -> úlohy -> Posúdenie zraniteľnosti -> Vyhľadajte zraniteľné miesta.

Skener vyhodnotí databázu kvôli populárnym chybám v bezpečnostnej konfigurácii a vydá príslušné odporúčania..

S týmto skenerom by ste určite mali prejsť týmto skenerom databázy. Môže odhaliť skryté problémy, ktoré nie sú na prvý pohľad viditeľné..

Audítorská činnosť v SQL Serveri

SQL Server poskytuje možnosť auditu akejkoľvek aktivity používateľa v inštancii servera.

Jedná sa o veľmi výkonný nástroj, ktorý vám umožňuje plne kontrolovať činnosť vašich používateľov / vývojárov..

Zvážte základné nastavenie auditu:

V SSMS na karte Zabezpečenie -> Audity vytvorte nový audit.

Potom, pre auditovanie, musíte vytvoriť špecifikáciu auditu označujúcu udalosti, ktoré budú monitorované.

Po vytvorení a aktivácii auditu môžete v protokole auditu zobraziť udalosti zaznamenané postupom auditu..

Osvedčené postupy všeobecnej bezpečnosti servera SQL

Vždy dodržiavajte zásadu najmenších privilégií. Vrátane konfigurácie účtu služby SQL Server pomocou gMSA. Nikdy nepoužívajte účet domény s oprávneniami správcu domény..

Zásada najmenších privilégií

Pri vytváraní nových používateľov sa odporúča použiť zásadu LUA (Užívateľský účet s najmenej privilegovanými vlastnosťami alebo Účet najmenších práv). Tento princíp je dôležitou súčasťou bezpečnosti serverov a údajov..

Používateľom s právami správcu sa odporúča vydávať povolenia iba pre tie operácie, ktoré budú potrebovať. Roly zabudovaného servera by sa mali používať iba vtedy, keď sa ich sada povolení zhoduje s úlohami používateľa..

Udeľovanie rolí, nie používateľov

Ak existuje veľa používateľov, správa ich povolení sa stáva ťažšou a je tiež ťažšie zabrániť chybám pri udeľovaní práv.

Odporúča sa udeliť oprávnenie na role a pridať používateľov do rolí. Týmto spôsobom dosiahnete väčšiu transparentnosť, pretože všetci používatelia určitej úlohy budú mať rovnaké práva. Pridanie alebo odstránenie používateľov z roly je jednoduchšie ako opätovné vytvorenie jednotlivých súprav povolení pre jednotlivých používateľov. Roly môžu byť vnorené, ale neodporúča sa to z dôvodu menšej transparentnosti a možného zhoršenia výkonu (ak je príliš veľa vnorených rolí)..

Môžete udeliť užívateľské práva na schému. V tomto prípade budú používatelia okamžite schopní pracovať s novovytvorenými objektmi v tejto schéme, na rozdiel od rolí, pri vytváraní nového objektu budú musieť mať roly pridelené práva.