MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Rejestrowanie audytu dla MongoDB

Jednym z aspektów bezpieczeństwa zarządzania bazą danych jest zrozumienie, kto, kiedy i kiedy uzyskał dostęp do bazy danych i co zrobił. Mimo że zabezpieczyliśmy już usługę MongoDB, nadal chcemy wiedzieć, kto co robi i wykrywać, czy jest coś dziwnego. W dochodzeniu w sprawie naruszenia danych dziennik audytu pozwala nam przeanalizować aktywność historyczną, zrozumieć, z którego punktu końcowego pochodził atakujący i jakie operacje wykonał, gdy znalazł się w bazie danych.

W tym blogu przyjrzymy się rejestrowaniu audytów dla MongoDB i implementacji.

Włączanie rejestrowania kontrolnego w MongoDB

Aby włączyć logowanie audytu w MongoDB, musimy przejść do pliku konfiguracyjnego mongod.conf, sekcja auditLog:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson

Istnieją 3 rodzaje miejsc docelowych dzienników, którymi są:plik, syslog i konsola. Idealnie możemy przesłać dziennik audytu do pliku w formacie JSON lub BSON. Możemy również włączyć dziennik audytu podczas uruchamiania usługi MongoDB, jak pokazano poniżej:

mongod --dbpath /var/lib/mongodb --auditDestination file --auditFormat BSON --auditPath /var/lib/mongodb/audit_mongodb.bson

Filtr kontroli w MongoDB

Nadal w sekcji auditLog znajduje się parametr o nazwie filter. Możemy filtrować wzorzec akcji, który chcemy zarejestrować. Na przykład, jeśli chcemy zalogować uwierzytelnianie do określonej bazy danych, możemy użyć poniższego polecenia:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: '{ atype: "authenticate", "param.db": "user_profile" }'

Śledzi każde uwierzytelnienie w bazie danych user_profile. Inny przykład:chcemy śledzić działania; upuść indeks, zmień nazwę kolekcji i upuść kolekcję w bazie danych profil_użytkownika. Polecenie to:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: { atype: { $in: [ "dropIndex", "renameCollection", "dropCollection" ] }, "param.ns": /^user_profile\\./ } }

Możemy również monitorować proces audytu dla określonych ról, musielibyśmy zdefiniować role i bazę danych w filtrze:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: { roles: { role: "readWrite", db: "user_profile" } }

Zarejestruje każdą akcję związaną z użytkownikiem, który ma role readWrite w bazie danych user_profile.

W przypadku rejestrowania audytu operacji zapisu i odczytu, musimy najpierw włączyć audytAuthorizationSuccess w MongoDB. Możemy uruchomić poniżej polecenie :

db.adminCommand( { setParameter: 1, auditAuthorizationSuccess: true } )

Lub inną opcją jest zmiana następujących elementów w mongod.conf jak poniżej:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: { roles: { role: "readWrite", db: "user_profile" } }
setParameter: { auditAuthorizationSuccess: true }

Percona Server dla MongoDB udostępnia funkcje rejestrowania audytu za darmo, podczas gdy w MongoDB jest ono dostępne tylko w wersji Enterprise Edition. Należy pamiętać, że włączenie tego parametru wpłynie na wydajność bazy danych MongoDB, szczególnie w środowisku produkcyjnym.

Co dalej?

Możemy wysłać dziennik audytu MongoDB do systemu Logging Management System, na przykład:stos ELK (Elasticsearch, Logstash i Kibana) lub możemy użyć systemu Log Management System od dostawcy do celów analizy.

Najprostszym sposobem jest użycie narzędzia jq tools w środowisku Linux do odczytania dziennika w formacie JSON lub BSON.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Aktualizacja/zmiana o manguście?

  2. 3 proste kroki, aby poprawić bezpieczeństwo instalacji MongoDB

  3. Mongo nie może się uruchomić

  4. Haszowanie hasła Mongoose

  5. Jakie są zalety korzystania z bazy danych pozbawionej schematów, takiej jak MongoDB, w porównaniu z relacyjną bazą danych?