sql >> Base de Datos >  >> NoSQL >> MongoDB

Registro de auditoría para MongoDB

Uno de los aspectos de seguridad de administrar una base de datos es comprender quién accedió a la base de datos, cuándo y qué hizo. Aunque ya hemos asegurado el servicio MongoDB, todavía queremos saber quién está haciendo qué y detectar si hay algo extraño. En una investigación de violación de datos, un registro de auditoría nos permite analizar la actividad histórica, comprender de qué punto final provino el atacante y qué operaciones realizó una vez que estuvo dentro de la base de datos.

En este blog, revisaremos el registro de auditoría para MongoDB y su implementación.

Habilitación del registro de auditoría en MongoDB

Para habilitar el registro de auditoría en MongoDB, debemos ir al archivo de configuración mongod.conf, sección auditLog:

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

Hay 3 tipos de destinos de registro, que son:archivo, syslog y consola. Idealmente, podemos enviar el registro de auditoría a un archivo, en formato compatible con JSON o BSON. También podemos habilitar el registro de auditoría durante el inicio del servicio MongoDB como se muestra a continuación:

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

Filtro de auditoría en MongoDB

Todavía en la sección auditLog, hay un parámetro llamado filter. Podemos filtrar el patrón de acción que queremos registrar. Por ejemplo, si queremos registrar la autenticación en una base de datos específica, podemos usar el siguiente comando:

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

Hará un seguimiento de cada autenticación a la base de datos de perfil_usuario. Otro ejemplo:queremos rastrear las acciones; soltar el índice, cambiar el nombre de la colección y soltar la colección en la base de datos de perfil_usuario. El comando sería:

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

También podemos monitorear el proceso de auditoría para roles específicos, necesitaríamos definir los roles y la base de datos en el filtro:

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

Registrará cada acción relacionada con el usuario que tiene los roles de lectura y escritura en la base de datos de perfil_usuario.

Para el registro de auditoría de las operaciones de escritura y lectura, primero debemos habilitar auditAuthorizationSuccess en MongoDB. Podemos ejecutar el siguiente comando:

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

O otra opción es cambiar lo siguiente en mongod.conf como se muestra a continuación:

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

Percona Server para MongoDB brinda funciones de registro de auditoría de forma gratuita, mientras que en MongoDB solo está disponible en Enterprise Edition. Tenga en cuenta que habilitar el parámetro afectará el rendimiento de la base de datos de su MongoDB, especialmente en el entorno de producción.

¿Qué sigue?

Podemos enviar el registro de auditoría de MongoDB a un sistema de gestión de registros, por ejemplo:pila ELK (Elasticsearch, Logstash y Kibana) o podemos usar el sistema de gestión de registros del proveedor para fines de análisis.

La forma más sencilla es utilizar la utilidad de herramientas jq en el entorno Linux para leer el registro en formato JSON o BSON.