sql >> Databáze >  >> NoSQL >> MongoDB

Protokolování auditu pro MongoDB

Jedním z bezpečnostních aspektů správy databáze je pochopit, kdo, kdy a co dělal k databázi. Přestože jsme již službu MongoDB zabezpečili, stále chceme vědět, kdo co dělá, a zjistit, zda se neděje něco divného. Při vyšetřování narušení dat nám protokol auditu umožňuje analyzovat historickou aktivitu, pochopit, ze kterého koncového bodu útočník přišel a jaké operace provedl, když byl v databázi.

V tomto blogu zkontrolujeme protokolování auditu pro MongoDB a implementaci.

Povolení protokolování auditu v MongoDB

Chcete-li povolit protokolování auditu v MongoDB, musíme přejít do konfiguračního souboru mongod.conf, sekce auditLog:

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

Existují 3 typy cílů protokolu, kterými jsou:soubor, syslog a konzola. V ideálním případě můžeme protokol auditu odeslat do souboru v podporovaném formátu JSON nebo BSON. Můžeme také povolit protokol auditu během spouštění služby MongoDB, jak je znázorněno níže:

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

Filtr auditu v MongoDB

Stále v sekci auditLog je parametr zvaný filtr. Vzor akce, který chceme protokolovat, můžeme filtrovat. Například, pokud chceme přihlásit ověření do konkrétní databáze, můžeme použít níže uvedený příkaz:

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

Bude sledovat každé ověření do databáze uživatelského profilu. Další příklad:chceme sledovat akce; zrušit index, přejmenovat kolekci a odstranit kolekci v databázi uživatelského_profilu. Příkaz by byl:

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

Můžeme také sledovat proces auditu pro konkrétní role, museli bychom definovat role a databázi ve filtru:

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

Zaznamená každou akci související s uživatelem, který má v databázi user_profile role readWrite.

Pro auditní protokolování operací zápisu a čtení musíme nejprve povolit auditAuthorizationSuccess v MongoDB. Můžeme spustit níže uvedený příkaz:

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

Nebo další možností je změnit následující v mongod.conf, jak je uvedeno níže:

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

Percona Server pro MongoDB poskytuje funkce protokolování auditu zdarma, zatímco v MongoDB je k dispozici pouze v Enterprise Edition. Vezměte prosím na vědomí, že povolení parametru ovlivní výkon databáze vašeho MongoDB, zejména v produkčním prostředí.

Co bude dál?

Můžeme odeslat protokol auditu MongoDB do systému správy protokolování, například:zásobník ELK (Elasticsearch, Logstash a Kibana), nebo můžeme pro účely analýzy použít systém správy protokolů od poskytovatele.

Nejjednodušším způsobem je použití nástroje jq tools v prostředí Linuxu ke čtení protokolu ve formátu JSON nebo BSON.


  1. se nezdařilo s chybou 10068:neplatný operátor:$oid

  2. Ladění Java Garbage Collection pro HBase

  3. Komprese v node.js

  4. Jaký je nejlepší způsob, jak provádět stránkování ajax s MongoDb a Nodejs?