Importante
Obsoleto en la versión 7.1: Utilice el auditConfig parámetro del clúster en su lugar.
Definición
setAuditConfigNuevo en la versión 5.0.
setAuditConfiges un comando administrativo que establece nuevas configuraciones de auditoría para las instancias del servidormongodymongosen tiempo de ejecución.Utiliza el método
db.adminCommand( { command } )para ejecutarsetAuditConfigen la base de datosadmin.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Importante
Este comando no es compatible con los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulta Comandos no compatibles.
Sintaxis
El comando tiene la siguiente sintaxis:
db.adminCommand( { setAuditConfig: 1, filter: <Filter Document>, auditAuthorizationSuccess: <Boolean> } )
Campos de comandos
El comando tiene los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| entero | Ejecutar |
| Documento | |
| booleano | Registrar todas o solo las autorizaciones de acceso fallidas |
Comportamiento
Habilita la auditoría para usar setAuditConfig en tiempo de ejecución.
auditAuthorizationSuccess permite la auditoría del éxito de la autorización para la acción authCheck. El valor del parámetro debe ser true para auditar las operaciones de lectura y escritura. Sin embargo, cuando auditAuthorizationSuccess está false, la auditoría tiene un menor impacto en el rendimiento porque el sistema de auditoría solo registra fallos de autorización.
Las actualizaciones de configuración se distribuyen a través del mecanismo oplog, lo que significa que las actualizaciones en los nodos de mongod se distribuyen rápidamente a los nodos secundarios. Existe un mecanismo de distribución diferente en los nodos mongos. Los nodos mongos deben consultar regularmente el servidor primario para actualizaciones de configuración a través de poll. Puede observar datos desactualizados debido a un retraso en el polling si ejecuta setAuditConfig en el servidor primario y getAuditConfig en una partición antes de que la partición haya realizado el polling al servidor primario para obtener detalles de configuración actualizados.
Ejemplos
En estos ejemplos se han reformateado los mensajes de auditoría. Aparecen en una sola línea en la entrada de registro.
Creación y eliminación de la colección de auditoría
Habilita la auditoría cuando se crea o elimina una colección.
db.admin.runCommand( { setAuditConfig: 1, filter: { atype: { $in: [ "createCollection", "dropCollection" ] } }, auditAuthorizationSuccess: false } )
Cuando la colección inventory se crea en la base de datos sales, el sistema de auditoría registrará un mensaje como este:
{ "atype" : "createCollection", "ts" : { "$date" : "2021-08-09T13:45:05.372+00:00" }, "uuid" : { "$binary" : "RKU/YLizS6K9se2GUU7ZVQ==", "$type" : "04" }, "local" : { "ip" : "127.0.0.1", "port" : 27502 }, "remote" : { "ip" : "127.0.0.1", "port" : 51918 }, "users" : [], "roles" : [], "param" : { "ns" : "sales.inventory" }, "result" : 0 }
Cuando la colección inventory se descarta de la base de datos sales, el sistema de auditoría registrará un mensaje como este:
{ "atype" : "dropCollection", "ts" : { "$date" : "2021-08-09T13:45:00.661+00:00" }, "uuid" : { "$binary" : "0gle4/pSQli+LUcz43ykag==", "$type" : "04" }, "local" : { "ip" : "127.0.0.1", "port" : 27502 }, "remote" : { "ip" : "127.0.0.1", "port" : 51928 }, "users" : [], "roles" : [], "param" : { "ns" : "sales.inventory" }, "result" : 0 }
Auditar interacciones con documentos
Configura auditAuthorizationSuccess en true y crea un filtro que incluya acciones de interés para auditar las operaciones de lectura y guardado.
db.admin.runCommand( { setAuditConfig: 1, filter: { atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findandmodify" ] } }, auditAuthorizationSuccess: true } )
Busque la colección inventory en la base de datos sales usando el comando find para crear una entrada de registro de auditoría como esta:
{ "atype" : "authCheck", "ts" : { "$date" : "2021-08-09T15:28:10.788+00:00" }, "uuid" : { "$binary" : "ngwRt5CRTZqgE4TsfleoqQ==", "$type" : "04" }, "local" : { "ip" : "127.0.0.1", "port" : 27502 }, "remote" : { "ip" : "127.0.0.1", "port" : 51930 }, "users" : [], "roles" : [], "param" : { "command" : "find", "ns" : "sales.inventory", "args" : { "find" : "inventory", "filter" : { "widget" : 1 }, "lsid" : { "id" : { "$binary" : "FNWNxiitQ8GHKrHx8eJSbg==", "$type" : "04" } }, "$clusterTime" : { "clusterTime" : { "$timestamp" : { "t" : 1628521381, "i" : 1 } }, "signature" : { "hash" : { "$binary" : "AAAAAAAAAAAAAAAAAAAAAAAAAAA=", "$type" : "00" }, "keyId" : { "$numberLong" : "0" } } }, "$db" : "sales" } }, "result" : 0 }