sql >> Database teknologi >  >> NoSQL >> MongoDB

Revisionslogning for MongoDB

Et af sikkerhedsaspekterne ved at administrere en database er at forstå, hvem der har adgang til databasen, hvornår og hvad de gjorde. Selvom vi allerede har sikret MongoDB-tjenesten, vil vi stadig gerne vide, hvem der gør hvad, og opdage, om der er noget mærkeligt. I en undersøgelse af databrud giver en revisionslog os mulighed for at analysere historisk aktivitet, forstå, fra hvilket endepunkt angriberen kom fra, og hvilke handlinger de foretog, når de var inde i databasen.

I denne blog vil vi gennemgå revisionslogning for MongoDB og implementering.

Aktivering af revisionslogning i MongoDB

For at aktivere revisionslogning i MongoDB skal vi gå til mongod.conf-konfigurationsfilen, afsnittet auditLog:

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

Der er 3 typer logdestinationer, som er:fil, syslog og konsol. Ideelt set kan vi sende revisionsloggen til en fil i JSON- eller BSON-understøttet format. Vi kan også aktivere revisionsloggen under opstart af MongoDB-tjenesten som vist nedenfor:

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

Revisionsfilter i MongoDB

Stadig i auditLog-sektionen er der en parameter kaldet filter. Vi kan filtrere det handlingsmønster, som vi vil logge. For eksempel, hvis vi ønsker at logge godkendelse til en specifik database, kan vi bruge nedenstående kommando:

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

Det vil spore enhver godkendelse til user_profile-databasen. Et andet eksempel:vi vil spore handlingerne; drop indeks, omdøb samling og drop samling i user_profile database. Kommandoen ville være :

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

Vi kan også overvåge revisionsprocessen for de specifikke roller, vi bliver nødt til at definere rollerne og databasen i filteret:

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

Det vil logge hver handling relateret til brugeren, som har readWrite-rollerne i user_profile-databasen.

For revisionslogning af skrive- og læseoperationer skal vi først aktivere auditAuthorizationSuccess i MongoDB. Vi kan køre nedenstående kommando :

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

Eller en anden mulighed er at ændre følgende i mongod.conf som nedenfor:

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

Percona Server til MongoDB giver revisionslogningsfunktionerne gratis, mens den i MongoDB kun er tilgængelig i Enterprise Edition. Bemærk venligst, at aktivering af parameteren vil påvirke databaseydelsen af ​​din MongoDB, især i produktionsmiljøet.

Hvad er det næste?

Vi kan sende MongoDB-revisionsloggen til et logstyringssystem, f.eks.:ELK (Elasticsearch, Logstash og Kibana) stak, eller vi kan bruge logstyringssystemet fra udbyderen til analyseformål.

Den enkleste måde er at bruge værktøjet jq tools i Linux-miljøet til at læse loggen i JSON- eller BSON-format.


  1. Hvordan konfigurerer jeg min MongoDB til at tage hensyn til UTF-8?

  2. Hvad er en TransientTransactionError i Mongoose (eller MongoDB)?

  3. Modellering for venner-skema i mongoose?

  4. Node.js - vent på flere asynkrone opkald