setAuditConfig
Importante
Descontinuado na versão 7.1: Em vez disso, use o parâmetro de cluster auditConfig
.
Definição
setAuditConfig
Novidades na versão 5.0.
setAuditConfig
é um comando administrativo que define novas configurações de auditoria para instâncias de servidormongod
emongos
no tempo de execução.Use o método
db.adminCommand( { command } )
para executarsetAuditConfig
no banco de dadosadmin
.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Importante
Este comando não é suportado em clusters MongoDB Atlas . Para obter informações sobre o suporte do Atlas para todos os comandos, consulte Comandos não suportados.
Sintaxe
O comando tem a seguinte sintaxe:
db.adminCommand( { setAuditConfig: 1, filter: <Filter Document>, auditAuthorizationSuccess: <Boolean> } )
Campos de comando
O comando tem os seguintes campos:
Campo | Tipo | Descrição |
---|---|---|
setAuditConfig | inteiro | EXECUTAR setAuditConfig |
filter | documento | |
auditAuthorizationSuccess | booleano | Registrar todas ou somente autorizações de acesso com falha |
Comportamento
Habilite a auditoria para usar setAuditConfig
no tempo de execução.
auditAuthorizationSuccess
habilita a auditoria do sucesso da autorização para a ação authCheck . O valor do parâmetro deve ser true
para auditar as operações de leitura e gravação. No entanto, quando auditAuthorizationSuccess
é false
a auditoria tem menos impacto no desempenho porque o sistema de auditar apenas registra falhas de autorização .
As atualizações de configuração são distribuídas por meio do mecanismo oplog , o que significa que as atualizações nos nós mongod
são distribuídas para nós secundários muito rapidamente. Há um mecanismo de distribuição diferente nos nós mongos
. mongos
nós precisam poll
o servidor primário em intervalos regulares para atualizações de configuração. Você pode ver dados obsoletos devido ao atraso da pesquisa se executar setAuditConfig
no servidor primário e getAuditConfig
em um fragmento antes que o fragmento tenha pesquisado o servidor principal para obter detalhes de configuração atualizados.
Exemplos
Nesses exemplos, as mensagens de auditoria foram reformatadas. Eles aparecem em uma única linha no arquivo de log.
Criação e exclusão de collection de auditoria
Ative a auditoria quando uma coleção for criada ou excluída.
db.admin.runCommand( { setAuditConfig: 1, filter: { atype: { $in: [ "createCollection", "dropCollection" ] } }, auditAuthorizationSuccess: false } )
Quando a coleção inventory
é criada no banco de dados sales
, o sistema de auditoria registrará uma mensagem como esta:
{ "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 }
Quando a collection inventory
é descartada do banco de dados sales
, o sistema de auditoria registra uma mensagem como esta:
{ "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 }
Interações do documento de auditoria
Defina auditAuthorizationSuccess
como true
e crie um filtro que inclua ações de interesse para auditar as operações de leitura e gravação.
db.admin.runCommand( { setAuditConfig: 1, filter: { atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findandmodify" ] } }, auditAuthorizationSuccess: true } )
Atlas Search a coleção inventory
no banco de dados sales
usando o comando find
para criar uma entrada de registro de auditoria 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 }