Definition
Syntax
To set auditConfig
for your deployment, run the following command on the admin
database:
db.adminCommand( { setClusterParameter: { auditConfig: <value> } } )
To view current values for the auditConfig
cluster parameter, run the following command on the admin
database:
db.adminCommand( { getClusterParameter: "auditConfig" } )
Parameter Fields
auditConfig.auditAuthorizationSuccess
Type: boolean
Default: false
Enables the auditing of authorization successes for the authCheck action.
To audit read and write operations,
auditConfig.auditAuthorizationSuccess
must be set totrue
.When
auditConfig.auditAuthorizationSuccess
isfalse
, the audit system only logs the authorization failures forauthCheck
. WhenauditAuthorizationSuccess
isfalse
, auditing has less performance impact because the audit system only logs authorization failures.
auditConfig.filter
Type: document
Default: none
Filter expression that controls which types of operations that the audit system records.
The document fields can be any field in the audit message, including fields returned in the param document. The field values are query condition expressions.
To view a sample filter document, see the Examples section.
Behavior
Auditing must be enabled to use auditConfig
.
Retrieving Audit Configurations
If runtime audit configuration is enabled, the auditAuthorizationSuccess
parameter doesn't appear in the mongod
or mongos
configuration file. The server will fail to start if the parameter is present.
If you run getClusterParameter
on auditConfig
, nodes that do not participate in a runtime audit configuration return their current configuration file settings for auditLog.filter
and setParameter.auditAuthorizationSuccess
.
Setting Audit Configurations
When you set audit configurations with setClusterParameter
, changes immediately take effect on all config servers and shards in a sharded cluster.
Setting too wide of an audit filter or enabling auditConfig.auditAuthorizationSuccess
can degrade performance.
Example
The following example uses the setClusterParameter
command to enable auditing when a collection is created or deleted. The audit messages have been reformatted. They appear on a single line in the log file.
db.adminCommand( { setClusterParameter: { auditConfig: { filter: { atype: { $in: [ "createCollection", "dropCollection" ] } }, auditAuthorizationSuccess: false } } } )
After setting the auditConfig
parameter, if you create an inventory
collection in the sales
database, the audit system logs a message that resembles the following:
{ "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 }
If the inventory
collection is dropped from the sales
database, the audit system logs a message similar to the following:
{ "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 }