Nota
Auditoría en MongoDB Atlas
MongoDB Atlas admite la auditoría 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 la base de datos y Configurar un filtro de auditoría personalizado.
MongoDB Enterprise supports auditoría de diversas operaciones. Cuando está habilitada, la función de auditoría, por defecto, registra todas las operaciones auditables según lo detallado en Acciones, detalles y resultados de eventos de auditoría. Puede especificar filtros de eventos para limitar los eventos que se registran.
Puedes configurar los filtros de auditoría en el inicio o puedes 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 de filtros en tiempo de ejecución
A partir de MongoDB 5.0, las configuraciones de auditoría para los nodos mongod y mongos pueden configurarse 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:
runtimeConfigurationestrueyO bien
auditLog.filteroauditAuthorizationSuccessestá establecido.
Para modificar los filtros de auditoría y el parámetro en tiempo de auditAuthorizationSuccess ejecución,setAuditConfig consulte.
Configuración del filtro al iniciar el sistema
Los filtros de auditoría se pueden especificar en la línea de comandos o en el archivo de configuración utilizado para iniciar la instancia de mongod o mongos.
Uso de 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 no se puede usar el archivo de configuración 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. Por defecto, la función de auditoría registra todas las operaciones auditables.
Filtrar por varios 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" ] } }'
Filtrar en operaciones de autenticación en una sola base de datos
El <field> puede incluir cualquier campo en el mensaje de auditoría. Para operaciones de autenticación (es decir, atype: "authenticate"), los mensajes de auditoría incluyen un campo db en el documento param.
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" }.
Filtrar en la creación de colecciones y operaciones de eliminación para una sola 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 utilizando el 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" } }'
Filtrar por operaciones de lectura y escritura
Para capturar operaciones de lectura y escritura en la auditoría, también debe permitir que el sistema de auditoría registre los éxitos de autorización utilizando el parámetro auditAuthorizationSuccess. [1]
Nota
Habilitar auditAuthorizationSuccess degrada el rendimiento más que registrar únicamente los fallos de 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 permitir que el sistema de auditoría registre los éxitos de autorización utilizando el parámetro auditAuthorizationSuccess. [1]
Nota
Habilitar auditAuthorizationSuccess degrada el rendimiento más que registrar únicamente los fallos de autorización.
Este filtro audita varias operaciones de lectura y escritura en la colección orders de 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 }
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 parámetro auditAuthorizationSuccess sin --auth habilitar; sin embargo, todas las operaciones devolverán éxito en las comprobaciones de autorización. |