[[oktatas:adatbázis-kezelés|< Adatbázis-kezelés]] ====== Adatbázis-biztonság ====== * **Szerző:** Sallai András * Copyright (c) 2015, Sallai András * Szerkesztve: 2015, 2019 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Az adatbázis biztonságának rétegei ===== * hozzáférés vezérlés * auditálás * azonosítás * titkosítás * integritás ellenőrzése * mentés és visszaállítás * az alkalmazás biztonsága {{:oktatas:adatbázis-kezelés:adatbazis_biztonsag_retegei.png|}} ===== Hozzáférés vezérlés ===== ==== Jogok meghatározása ==== GRANT jogok ON objektum_neve TO szereplo_neve; ==== Sorszintű biztonság ==== CREATE VIEW nézet_neve AS SELECT * FROM tábla_neve WHERE mező_neve = user; ==== Adatbázis elérés ==== Az adatbázis elérés szabályozása a hálózaton. * adatbázis beállítások - my.ini vagy my.cnf * tűzfalbeállítások - Netfilter, [[http://dev.mysql.com/downloads/mysql-proxy/|Mysql-proxy]] {{:oktatas:adatbázis-kezelés:mysql_netfilter.png|}} {{:oktatas:adatbázis-kezelés:mysql_proxy.png|}} ===== Auditálás ===== ==== Naplózás ==== Minden tevékenységet naplózunk és rendszeresen ellenőrzünk. * kilépés/belépés * változtatások #general_log_file = /var/log/mysql/mysql.log #general_log = 1 expire_logs_days = 10 /var/log/mysql/mysql.log ==== PHPMyAdmin ==== * Kiszolgáló: localhost -> Állapot fül -> Felügyelet gomb (stb) ===== Azonosítás ===== | felhasználónév | jelszó | fontos: jelszó erősség követelmény (tartalmazzon): * szám * kis- és nagybetű * nem betű és nem szám karakter * legalább 10 karakter hosszú Hozzáférés: * A programnak külön felhasználója legyen, amely MySQL felhasználó. * A felhasználóknak külön hozzáférés, amely NEM MySQL felhasználó. {{:oktatas:adatbázis-kezelés:mysql_felhasznalok.png|}} A programnak csak **usage** hozzáférést adunk. ===== Integritás, Titkosítás ===== Adatintegritás a következő algoritmusok biztosítják: * AES * RC4 * 3DES * MD5 * SHA1 * SHA512 * SSL * TLS ===== Mentés és visszaállítás ===== Mentés: mysqldump -u root -p[titok] [adatbazinev] > mentesfajnev.sql mysqldump --all-databases > mysql-mentes.sql * PHPMyAdmin Visszaállítás: mysql -u root -p[titok] [adatbazisnev] < mentesfajlnev.sql * PHPMyAdmin Mentés szerveren: * rsync A mentés lehet: * teljes mentés * inkrementális mentés A crontab rendszerrel időzítjük. ===== Alkalmazások biztonsága ===== ==== SQL injekció ==== Ellenőrizzük a bekért adatmezőket, mielőtt adatbázisban rögzítjük azokat. Egy az alábbihoz hasonló bevitellel, a jelszavak megkerülhetők. Ezt nevezzük SQL injekciónak: a" or 1 = 1 " Ennek megelőzésére egyik lehetőség a mysqli használata esetén a mysqli_real_escape_string() függvény használata: $user = mysqli_real_escape_string($con, $data['user']);