Nagyon fontos a biztonságos környezet, a legkisebb jogosultság elvének érvényesítése a szervereken és adatbázisokban, de ez nehezen megvalósítható a nagy környezetekben, ahol sok ember rendelkezik megemelt jogosultságokkal, vagy több embernek vannak jogosultságai az adatok vagy sémák feletti feladatok elvégzésére.
Egy további intézkedésként ezekben a forgatókönyvekben érdemes bevezetni egy ellenőrzési naplót, és ezeket gyakran felülvizsgálni.
A SQL Server biztosítja az ellenőrzési naplók szerver- és adatbázis szintű bevezetésének lehetőségét. Az SQL Server 2008-tól kezdve az összes SQL Server-kiadás támogatja a szerverszintű auditokat. Az adatbázis-ellenőrzések az SQL Server 2016 (13.x) SP1-től kezdődően támogatottak. Ezt megelőzően az adatbázis szintű auditálás az Enterprise, Developer és Evaluation kiadásokra korlátozódott.
Ebben a bejegyzésben bemutatom az auditnaplók konfigurálását és megtekintését:
Auditnapló létrehozása
A biztonság menüpont alatt lépjen az Audits menüpontra, és válassza az Új audit…
Adjon nevet az auditnak, és válassza ki az audit célját (én személy szerint a fájlok helyét részesítem előnyben).
Válassza ki a kívánt paramétereket, majd kattintson az OK gombra.
Az audit most létrejön, a működéshez csak engedélyezze az auditot.
MEGJEGYZÉS: mielőtt bármilyen változtatást végezne az audit konfiguráción, először le kell tiltania azt.
Kiszolgálói szintű ellenőrzés megvalósítása
Elkészítettük az ellenőrzési helyünket, most folytatjuk a kiszolgálói szinten ellenőrizni kívánt műveletek létrehozását.
A Biztonsági mappa alatt keresse meg a Kiszolgálói ellenőrzési specifikációkat, kattintson a jobb gombbal, és válassza az Új kiszolgálói ellenőrzési specifikáció… lehetőséget.
A következő ablakban adjunk meg egy nevet az auditnak (több is lehet), és válasszuk ki az előző lépésben létrehozott auditot.
Válasszuk ki az auditálandó műveletet vagy műveleteket. Hogy ellenőrizze, mi szerepel az egyes műveleteknél, kérjük, olvassa el itt a Microsoft dokumentációjából.
Amint végzett, kattintson az OK gombra az ellenőrzési specifikáció létrehozásához.
Ezért a példáért csak az ellenőrizendő DBCC műveletet vettem fel (ahogy később látni fogjuk ebben a bejegyzésben)
Az ellenőrzési specifikáció is letiltva van létrehozva, hogy működjön, engedélyezze a képen látható módon.
Figyelem: mielőtt bármilyen változtatást végeznénk az audit specifikáción, először le kell tiltani.
Adatbázisszintű ellenőrzés létrehozása
A folyamat viszonylag azonos az adatbázisszintű ellenőrzési specifikáció létrehozásához, a fő különbség az, hogy a lehetőség minden adatbázisban a Biztonsági mappa alatt található.
Jobb klikk az Adatbázis ellenőrzési specifikáció mappára, majd Új adatbázis ellenőrzési specifikáció…
Válassza ki az adatbázis ellenőrzés nevét és az ellenőrzési célt (ebben a példában az első lépésben létrehozottat).
Az adatbázis-ellenőrzések másik lényeges különbsége, hogy ki kell választanunk az ellenőrizni kívánt objektumot vagy sémát.
Válassza ki az ellenőrizni kívánt műveleteket (itt láthatja az egyes műveletek leírását), majd kattintson az Ok gombra.
Ezzel a példával a SELECT parancsot fogom ellenőrizni a Tanfolyam nevű táblázat felett egy iskolai mintaadatbázisban.
Az ellenőrzési specifikáció létrehozása után engedélyeznie kell annak futtatását.
Figyelem: mielőtt bármilyen módosítást végezne az ellenőrzési konfiguráción, először le kell tiltania azt.
Az audit naplók áttekintése
Az auditok konfigurálása és futtatása csak a munka fele, semmit sem ér, ha nem tekintjük át proaktívan és gyakran a naplókat.
A naplók áttekintésére 2 lehetőség van, az SSMS és a T-SQL használatával
Ezért a példáért végrehajtottam néhány mondatot, hogy a fentiekben konfigurált szerver és adatbázis auditokat kiváltsam, így láthatunk néhány adatot.
SSMS
Az eseménynaplók megtekintéséhez a Management Studio segítségével csak válassza ki a létrehozott Auditot, kattintson rá a jobb gombbal és válassza az Audit naplók megtekintése opciót
Az audit napló egy SQL Server log típusú típusban fog megjelenni, és láthat néhány példát, amit kiváltottam
T-SQL
Az opció használatához a DMF sys.fn_get_audit_file-t, megadva a fájl helyét, és a fájlnévhez használja a *.sqlaudit-et, hogy az összes fájlt tartalmazza.
Ezt a lekérdezést használom ehhez a példához:
SELECT event_time,action_id,statement,database_name,server_principal_name
FROM sys.fn_get_audit_file ('C:\temp\TestAudit_*.sqlaudit',default,default);
A lekérdezés kimenete így néz ki:
Sárgával jelöltem azokat a műveleteket, amelyeket az adatbázis-specifikációban rögzítettem.
Ezzel az információval készen áll arra, hogy saját auditokat konfiguráljon a küldetéskritikus szervereihez, és gyakran felülvizsgálja azokat, továbbá bevezethet egy riasztási vagy automatikus jelentési logikát, hogy értesüljön a gyanús tevékenységekről.