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
role | popis |
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
role | popis |
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. |
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.