Czy istnieje sposób na kontrolę logowania do MySQL? Chciałbym móc utworzyć nazwę użytkownika dla każdego pracownika, a tym samym utworzyć ścieżkę audytu logowania. Jednak googling nie przyniósł dobrych rezultatów.
Im więcej możemy skontrolować, tym lepiej. Przynajmniej miło byłoby wiedzieć, kto się zalogował. Jeszcze lepiej byłoby zobaczyć, kto wykonał jakie zapytanie. Dzienniki służą głównie do informowania klientów, że je mamy, ponieważ w bazie danych znajdują się potencjalnie poufne informacje.
Oczywiście, możliwość sprawdzenia zapytań wykonanych przez każdego użytkownika (i kiedy) dałoby nam także możliwość lepszego wskazania, kto jest przyczyną problemu z bezpieczeństwem, jeśli taki się pojawi.
mysql
authentication
audit
statichippo
źródło
źródło
Odpowiedzi:
Prawdopodobnie chciałbyś skorzystać z ogólnego dziennika zapytań .
Jedną ważną rzeczą związaną z logowaniem dla bezpieczeństwa jest to, że osoba atakująca nie może uzyskać dostępu do dziennika, aby usunąć ślady swojej obecności, dlatego rozważ pliki tylko do dołączania .
FWIW w Oracle możemy automatycznie wysyłać dzienniki do zdalnego dziennika systemowego , ale nie sądzę, aby MySQL miał tę funkcję. Być może mógłbyś sfałszować go za pomocą SNMP, ale nie próbowałem tego.
źródło
Odpowiedź @Gauis jest doskonała. Aby dodać do tego, możesz:
MySQL 5.1 umożliwia teraz przechowywanie dziennika ogólnego i dziennika powolnych zapytań jako tabel SQL.
Dodaj to do /etc/my.cnf:
Uruchom ponownie mysql
Następnie, gdy mysqld utworzy dziennik ogólny, zamiast pliku tekstowego utworzy tabelę jako tabelę CSV w folderze / var / lib / mysql / mysql (baza danych schematów mysql).
Po prostu zrób to, aby to zobaczyć:
Wszystkie połączenia się w nim zgromadzą.
Dla ciebie nie jest to bardzo przydatne, jeśli chodzi o zapytania. Byłby to po prostu pełny skan tabeli za każdym razem.
Co robić ??? KONWERSJA TO DO MyISAM i INDEKS TABELI !!!!
Opcjonalnie możesz chcieć umieścić indeks pełnotekstowy w polu argumentu.
Właśnie skonfigurowałem MySQL 5.5.9 na serwerze i wypróbowałem to. Oto wynik:
Teraz możesz wyszukiwać według znacznika czasu i wyszukiwać określone tokeny w polu argumentu.
Na przykład zauważ linię 4 instrukcji SELECT, którą zrobiłem. Moje logowanie zostało zarejestrowane w polu argumentu jako
[email protected] on
. Możesz je śledzić.Co jeśli generał stanie się zbyt duży (Uwierz mi, stanie się zbyt duży bardzo szybko)
Co robić ???
BTW Po przejściu ogólnego dziennika do trybu offline, możesz go uruchomić, aby zebrać różne loginy, które zrobiły coś w mysqld:
Mam klienta z 3 serwerami DB. Eeach z DB Server zawiera ponad 1 000 000 000 (1 miliard [tysiące milionów]) linii. Wykonanie powyższego skryptu zajęło około 2,5 godziny. Tabela audit_user_host zakończyła się 27 różnymi logowaniami.
Powinieneś być gotowy do drogi.
Baw się z tym wszystkim!
źródło
Zamiast robić tyle rzeczy ręcznie, po prostu zainstaluj wtyczkę Audit, która daje więcej wglądu na poziomie użytkownika
http://www.mysql.com/products/enterprise/audit.html
Jest dostępny w wybranych komercyjnych wersjach MySQL. Byłoby wspaniale, gdyby jakikolwiek widelec MySQL dodał również w wersji społecznościowej, aby większość ludzi mogła skorzystać z tej funkcji, w przeciwnym razie musimy polegać na rozwiązaniu dostarczonym przez @RolandoMySQLDBA.
źródło
@statichippo
Jak zainstalować rejestrowanie kontroli na MySQL.
+ Rejestrowanie inspekcji obsługuje tylko MySQL Enterprise
+ Możesz zainstalować rejestrowanie audytu w społeczności MySQL:
1. Skopiuj plik audit_log.so przez Możesz zainstalować MySQL Enterprise Trial, a następnie skopiować plik audit_log.so do społeczności MySQL.
2. Skopiuj plik audit_log.so do katalogu wtyczki jako / usr / lib64 / mysql / plugin lub możesz wyświetlić katalog wtyczek poprzez:
Przejdź do konsoli mysql: mysql> pokaż zmienne globalne, takie jak „% plugin%”;
3. Zainstaluj rejestrowanie kontroli jako:
mysql> ZAINSTALUJ WTYCZKĘ audit_log SONAME 'audit_log.so';
mysql> POKAŻ ZMIENNE JAK 'audit_log%';
4. Rejestrowanie wyników audytu:
tail -f /var/lib/mysql/audit.log
Wielkie dzięki.
źródło