Nota
Auditoría en MongoDB Atlas
MongoDB Atlas admite auditorías para todos M10 y clústeres más grandes. Atlas permite especificar un filtro de auditoría con formato JSON, como se documenta a continuación, y usar el generador de filtros de auditoría de Atlas para simplificar la configuración de auditoría. Para obtener más información, consulte la documentación de Atlas para
Configurar la auditoría de base de datos yconfigurar un filtro de auditoría personalizado.
MongoDB Enterprise es compatible Auditoría de diversas operaciones. Cuando está habilitada, la función de auditoría registra, de forma predeterminada, todas las operaciones auditables, tal como se detalla en "Acciones, detalles y resultados de eventos de auditoría". Puede especificar filtros de eventos para limitar los eventos que se registran.
Puede configurar filtros de auditoría al inicio o puede configurar MongoDB para permitir la configuración de filtros en tiempo de ejecución.
Sintaxis del filtro de auditoría
Los filtros de Auditar tienen la misma forma que los documentos de predicado de query especificados para los comandos find. Para ver ejemplos de filtros de auditoría, consulta Ejemplos.
Configuración del filtro en tiempo de ejecución
A partir de MongoDB,5.0 las configuraciones de auditoría para mongod los mongos nodos y se pueden configurar en tiempo de ejecución. Un grupo de estos nodos puede participar en una configuración de auditoría distribuida.
Para incluir un nodo en una configuración de auditoría distribuida, actualice el archivo de configuración del nodo de la siguiente manera y reinicie el servidor.
Parameter | Valor |
|---|---|
| |
Sin establecer | |
Sin establecer |
El servidor registra un error y no puede iniciarse si:
runtimeConfigurationestrueyauditLog.filterauditAuthorizationSuccessse establece o.
Para modificar los filtros de auditoría y el parámetro en tiempo de auditAuthorizationSuccess ejecución,auditConfig consulte.
Configuración del filtro al iniciar el sistema
Los filtros de auditoría se pueden especificar en la línea de comando o en el archivo de configuración utilizado para iniciar la mongod instancia mongos o.
Uso del archivo de configuración
Los filtros se pueden especificar en YAML, en la auditLog sesión del archivo de configuración. Consulte los ejemplos a continuación para ver ejemplos de configuración.
Nota
Si runtimeConfiguration está habilitado, entonces el archivo de configuración no se puede utilizar para especificar filtros de auditoría.
Ejemplos
Registrar todos los eventos auditables
Para registrar todos los eventos auditables, no especifique un filtro de auditoría. De forma predeterminada, la función de auditoría registra todas las operaciones auditables.
Filtro para múltiples tipos de operaciones
El siguiente ejemplo audita solo las acciones createCollection y las acciones dropCollection utilizando el filtro:
{ atype: { $in: [ "createCollection", "dropCollection" ] } }
Para especificar un filtro de auditoría, encierre el documento del filtro entre comillas simples para pasarlo como un string.
mongod --dbpath data/db --auditDestination file --auditFilter '{ atype: { $in: [ "createCollection", "dropCollection" ] } }' --auditFormat BSON --auditPath data/db/auditLog.bson
Incluir opciones adicionales según sea necesario para la configuración. Por ejemplo, si se desea que los clientes remotos se conecten a su implementación o si los miembros de su implementación se ejecutan en hosts diferentes, especificar el --bind_ip.
Para especificar el filtro de auditoría en un archivo de configuración, debe utilizar el formato YAML del archivo de configuración.
storage: dbPath: data/db auditLog: destination: file format: BSON path: data/db/auditLog.bson filter: '{ atype: { $in: [ "createCollection", "dropCollection" ] } }'
Filtro de operaciones de autenticación en una única base de datos
El <field> campo puede incluir cualquier campo en el mensaje de auditoría. Para las operaciones de autenticación (poratype: "authenticate" ejemplo,), los mensajes de auditoría incluyen un db campo en el param documento.
El siguiente ejemplo audita únicamente las operaciones authenticate que ocurren en la base de datos test mediante el uso del filtro:
{ atype: "authenticate", "param.db": "test" }
Para especificar un filtro de auditoría, encierre el documento del filtro entre comillas simples para pasarlo como un string.
mongod --dbpath data/db --auth --auditDestination file --auditFilter '{ atype: "authenticate", "param.db": "test" }' --auditFormat BSON --auditPath data/db/auditLog.bson
Incluir opciones adicionales según sea necesario para la configuración. Por ejemplo, si se desea que los clientes remotos se conecten a su implementación o si los miembros de su implementación se ejecutan en hosts diferentes, especificar el --bind_ip.
Para especificar el filtro de auditoría en un archivo de configuración, debe utilizar el formato YAML del archivo de configuración.
storage: dbPath: data/db security: authorization: enabled auditLog: destination: file format: BSON path: data/db/auditLog.bson filter: '{ atype: "authenticate", "param.db": "test" }'
Para filtrar en todas las operaciones de authenticate entre las bases de datos, omite "param.db": "test" y usa el filtro { atype: "authenticate" }.
Filtro sobre operaciones de creación y eliminación de colecciones para una única base de datos
El <field> puede incluir cualquier campo en el mensaje de auditoría. Para la creación de colecciones y operaciones de descarte (es decir, atype: "createCollection" y atype:
"dropCollection"), los mensajes de auditoría incluyen un campo de espacio de nombres ns en el documento param.
El siguiente ejemplo audita solo las operaciones createCollection y dropCollection que ocurren en la base de datos test mediante el uso del filtro:
Nota
La expresión regular requiere dos barras invertidas (\\) para escapar del punto (.).
{ atype: { $in: [ "createCollection", "dropCollection" ] }, "param.ns": /^test\\./ }
Para especificar un filtro de auditoría, encierre el documento del filtro entre comillas simples para pasarlo como un string.
mongod --dbpath data/db --auth --auditDestination file --auditFilter '{ atype: { $in: [ "createCollection", "dropCollection" ] }, "param.ns": /^test\\./ }' --auditFormat BSON --auditPath data/db/auditLog.bson
Incluir opciones adicionales según sea necesario para la configuración. Por ejemplo, si se desea que los clientes remotos se conecten a su implementación o si los miembros de su implementación se ejecutan en hosts diferentes, especificar el --bind_ip.
Para especificar el filtro de auditoría en un archivo de configuración, debe utilizar el formato YAML del archivo de configuración.
storage: dbPath: data/db security: authorization: enabled auditLog: destination: file format: BSON path: data/db/auditLog.bson filter: '{ atype: { $in: [ "createCollection", "dropCollection" ] }, "param.ns": /^test\\./ }'
Filtrar por rol de autorización
El siguiente ejemplo audita las operaciones de los usuarios con el rol readWrite en la base de datos test, incluyendo los usuarios con roles que heredan de readWrite, utilizando el filtro:
{ roles: { role: "readWrite", db: "test" } }
Para especificar un filtro de auditoría, encierre el documento del filtro entre comillas simples para pasarlo como un string.
mongod --dbpath data/db --auth --auditDestination file --auditFilter '{ roles: { role: "readWrite", db: "test" } }' --auditFormat BSON --auditPath data/db/auditLog.bson
Incluir opciones adicionales según sea necesario para la configuración. Por ejemplo, si se desea que los clientes remotos se conecten a su implementación o si los miembros de su implementación se ejecutan en hosts diferentes, especificar el --bind_ip.
Para especificar el filtro de auditoría en un archivo de configuración, debe utilizar el formato YAML del archivo de configuración.
storage: dbPath: data/db security: authorization: enabled auditLog: destination: file format: BSON path: data/db/auditLog.bson filter: '{ roles: { role: "readWrite", db: "test" } }'
Filtro en operaciones de lectura y escritura
Para capturar operaciones de lectura y escritura en la auditoría, también debe habilitar el sistema de auditoría para registrar los éxitos de autorización mediante el auditAuthorizationSuccess parámetro. []1
Nota
Habilitar degrada el rendimiento más que registrar solo las fallas de auditAuthorizationSuccess autorización.
Este filtro audita múltiples operaciones de lectura y escritura:
{ atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] } }
Las operaciones auditadas incluyen:
Para especificar un filtro de auditoría, encierre el documento del filtro entre comillas simples para pasarlo como un string.
mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] } }' --auditFormat BSON --auditPath data/db/auditLog.bson
Incluir opciones adicionales según sea necesario para la configuración. Por ejemplo, si se desea que los clientes remotos se conecten a su implementación o si los miembros de su implementación se ejecutan en hosts diferentes, especificar el --bind_ip.
Para especificar el filtro de auditoría en un archivo de configuración, debe utilizar el formato YAML del archivo de configuración.
storage: dbPath: data/db security: authorization: enabled auditLog: destination: file format: BSON path: data/db/auditLog.bson filter: '{ atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] } }' setParameter: { auditAuthorizationSuccess: true }
Filtrar operaciones de lectura y escritura para una colección
Para capturar operaciones de lectura y escritura en la auditoría, también debe habilitar el sistema de auditoría para registrar los éxitos de autorización mediante el auditAuthorizationSuccess parámetro. []1
Nota
Habilitar degrada el rendimiento más que registrar solo las fallas de auditAuthorizationSuccess autorización.
Este filtro audita múltiples operaciones de lectura y escritura en la colección orders en la base de datos test:
{ atype: "authCheck", "param.ns": "test.orders", "param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] } }
Las operaciones auditadas incluyen:
Para especificar un filtro de auditoría, encierre el documento del filtro entre comillas simples para pasarlo como un string.
mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ atype: "authCheck", "param.ns": "test.orders", "param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] } }' --auditFormat BSON --auditPath data/db/auditLog.bson
Incluir opciones adicionales según sea necesario para la configuración. Por ejemplo, si se desea que los clientes remotos se conecten a su implementación o si los miembros de su implementación se ejecutan en hosts diferentes, especificar el --bind_ip.
Para especificar el filtro de auditoría en un archivo de configuración, debe utilizar el formato YAML del archivo de configuración.
storage: dbPath: data/db security: authorization: enabled auditLog: destination: file format: BSON path: data/db/auditLog.bson filter: '{ atype: "authCheck", "param.ns": "test.orders", "param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] } }' setParameter: { auditAuthorizationSuccess: true }
Filtrar mensajes de registro del esquema OCSF
A partir de MongoDB 8.0, MongoDB puede escribir mensajes de registro en FormatoOCSF. El esquema OCSF contiene campos diferentes a los del mongo esquema predeterminado.
El siguiente filtro de auditoría captura las acciones de actividad de red que se registran en el esquema OCSF:
{ category_uid: 4 }
Para especificar un filtro de auditoría, encierre el documento del filtro entre comillas simples para pasarlo como un string.
mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ category_uid: 4 }' --auditFormat JSON --auditSchema OCSF --auditPath data/db/auditLog.json
Para especificar el filtro de auditoría en un archivo de configuración, debe utilizar el formato YAML del archivo de configuración.
storage: dbPath: data/db security: authorization: enabled auditLog: destination: file format: JSON path: data/db/auditLog.json filter: '{ category_uid: 4 }' schema: OCSF setParameter: { auditAuthorizationSuccess: true }
Para obtener más información sobre los mensajes de registro de OCSF, consulte Mensajes de auditoría de esquema de OCSF.
Especificar operadores de consulta de nivel superior ($o)
Para filtrar por varios campos de mensajes de auditoría, puede especificar un operador de consulta de nivel superior como. Por ejemplo, el siguiente filtro captura operaciones $or donde atype es authenticate o la operación fue realizada por un usuario con el readWrite rol:
{ $or: [ { atype: "authenticate" }, { "roles.role": "readWrite" } ] }
Para especificar un filtro de auditoría, encierre el documento del filtro entre comillas simples para pasarlo como un string.
mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ $or: [ { atype: "authenticate" }, { "roles.role": "readWrite" } ] }' --auditFormat BSON --auditPath data/db/auditLog.bson
Incluir opciones adicionales según sea necesario para la configuración. Por ejemplo, si se desea que los clientes remotos se conecten a su implementación o si los miembros de su implementación se ejecutan en hosts diferentes, especificar el --bind_ip.
Para especificar el filtro de auditoría en un archivo de configuración, debe utilizar el formato YAML del archivo de configuración.
storage: dbPath: data/db security: authorization: enabled auditLog: destination: file format: BSON path: data/db/auditLog.bson filter: '{ $or: [ { atype: "authenticate" }, { "roles.role": "readWrite" } ] }'
Obtén más información
| [1] | (,1 2) Puede habilitar el auditAuthorizationSuccess parámetro sin --auth habilitar; sin embargo, todas las operaciones devolverán éxito para las verificaciones de autorización. |