Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

Configurar filtros de auditoria em sistemas autogerenciados

Nesta página

  • Sintaxe do filtro de auditoria
  • Configuração de filtro em tempo de execução
  • Configuração de filtro na inicialização do sistema
  • Exemplos
  • Saiba mais

Observação

Auditoria no MongoDB Atlas

O MongoDB Atlas oferece suporte de auditoria para todos os clusters M10 e maiores. O Atlas é compatível com a especificação de um filtro de auditoria formatado em JSON, conforme documentado abaixo, e com o uso do construtor de filtros de auditoria do Atlas para simplificar a configuração da auditoria. Para saber mais, consulte a documentação do Atlas para Configurar auditoria do banco de dados e Configurar um filtro de auditoria personalizado.

O MongoDB Enterprise oferece suporte à auditoria de várias operações. Quando ativado, o recurso de auditoria, por padrão, registra todas as operações auditáveis, conforme detalhado em Ações, detalhes e resultados do evento de auditoria. Você pode especificar filtros de evento para limitar quais eventos são registrados.

Você pode configurar filtros de auditoria na inicialização ou configurar o MongoDB para permitir a configuração do filtro em tempo de execução.

Os filtros de auditoria têm o mesmo formato que os documentos de predicados de consulta especificados para comandos find . Para ver exemplos de filtros de auditoria, consulte Exemplos.

A partir do MongoDB 5.0, as configurações de auditoria para nós mongod e mongos podem ser configuradas em tempo de execução.l Um grupo desses nós pode participar de uma configuração de auditoria distribuída.

Para incluir um nó em uma configuração de auditoria distribuída, atualize o arquivo de configuração do nó da seguinte maneira e reinicie o servidor.

Parâmetro
Valor
true
Desconfigurar
Desconfigurar

O servidor registra um erro e falha ao iniciar se:

  • runtimeConfiguration é true e

  • auditLog.filter ou auditAuthorizationSuccess estiver definido.

Para modificar os filtros de auditoria e o parâmetro auditAuthorizationSuccess no tempo de execução, consulte setAuditConfig.

Os filtros de auditoria podem ser especificados na linha de comando ou mais no arquivo de configuração utilizado para iniciar a instância do mongod ou mongos.

Os filtros podem ser especificados no YAML na sessão auditLog do arquivo de configuração. Veja os exemplos abaixo para exemplos de configurações.

Observação

Se o runtimeConfiguration estiver habilitado, então o arquivo de configuração não poderá ser utilizado para especificar filtros de auditoria.

Para registrar todos os eventos auditáveis, não especifique um filtro de auditaria. Por padrão, a instalação de auditaria registra todas as operações auditáveis.

O seguinte exemplo de auditorias somente as ações createCollection e dropCollection utilizando o filtro:

{ atype: { $in: [ "createCollection", "dropCollection" ] } }

Para especificar um filtro de auditoria, coloque o documento do filtro entre aspas simples para passar o documento como uma string.

mongod --dbpath data/db --auditDestination file --auditFilter '{ atype: { $in: [ "createCollection", "dropCollection" ] } }' --auditFormat BSON --auditPath data/db/auditLog.bson

Inclua opções adicionais, conforme necessário, para sua configuração. Por exemplo, se você deseja que clientes remotos se conectem à sua implantação ou se os membros da implantação forem executados em hosts diferentes, especifique o --bind_ip.

Para especificar o filtro de auditoria em um arquivo de configuração, você deve utilizar o formato YAML do arquivo de configuração.

storage:
dbPath: data/db
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ atype: { $in: [ "createCollection", "dropCollection" ] } }'

O <field> pode incluir qualquer campo na mensagem de auditoria. Para operações de autenticação (ou seja, atype: "authenticate"), as mensagens de auditoria incluem um campo db no documento param.

O seguinte exemplo de auditorias somente as operações do authenticate que ocorrem no banco de dados do test utilizando o filtro:

{ atype: "authenticate", "param.db": "test" }

Para especificar um filtro de auditoria, coloque o documento do filtro entre aspas simples para passar o documento como uma string.

mongod --dbpath data/db --auth --auditDestination file --auditFilter '{ atype: "authenticate", "param.db": "test" }' --auditFormat BSON --auditPath data/db/auditLog.bson

Inclua opções adicionais, conforme necessário, para sua configuração. Por exemplo, se você deseja que clientes remotos se conectem à sua implantação ou se os membros da implantação forem executados em hosts diferentes, especifique o --bind_ip.

Para especificar o filtro de auditoria em um arquivo de configuração, você deve utilizar o formato YAML do arquivo de configuração.

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 todas as operações do authenticate entre bancos de dados, omita "param.db": "test" e use o filtro { atype: "authenticate" }.

O <field> pode incluir qualquer campo na mensagem de auditoria. Para operações de criação e eliminação de coleções (ou seja, atype: "createCollection" e atype: "dropCollection"), as mensagens de auditoria incluem um campo do spacenames ns no documento param.

O seguinte exemplo de auditorias somente as operações do createCollection e dropCollection que ocorrem no banco de dados do test utilizando o filtro:

Observação

A expressão regular requer duas barras invertidas (\\) para escapar do ponto (.).

{ atype: { $in: [ "createCollection", "dropCollection" ] }, "param.ns": /^test\\./ } }

Para especificar um filtro de auditoria, coloque o documento do filtro entre aspas simples para passar o documento como uma string.

mongod --dbpath data/db --auth --auditDestination file --auditFilter '{ atype: { $in: [ "createCollection", "dropCollection" ] }, "param.ns": /^test\\./ } }' --auditFormat BSON --auditPath data/db/auditLog.bson

Inclua opções adicionais, conforme necessário, para sua configuração. Por exemplo, se você deseja que clientes remotos se conectem à sua implantação ou se os membros da implantação forem executados em hosts diferentes, especifique o --bind_ip.

Para especificar o filtro de auditoria em um arquivo de configuração, você deve utilizar o formato YAML do arquivo de configuração.

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\\./ } }'

O exemplo a seguir audita as operações realizadas por usuários com a função readWrite no banco de dados test, incluindo usuários com funções que herdam de readWrite, usando o filtro:

{ roles: { role: "readWrite", db: "test" } }

Para especificar um filtro de auditoria, coloque o documento do filtro entre aspas simples para passar o documento como uma string.

mongod --dbpath data/db --auth --auditDestination file --auditFilter '{ roles: { role: "readWrite", db: "test" } }' --auditFormat BSON --auditPath data/db/auditLog.bson

Inclua opções adicionais, conforme necessário, para sua configuração. Por exemplo, se você deseja que clientes remotos se conectem à sua implantação ou se os membros da implantação forem executados em hosts diferentes, especifique o --bind_ip.

Para especificar o filtro de auditoria em um arquivo de configuração, você deve utilizar o formato YAML do arquivo de configuração.

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ roles: { role: "readWrite", db: "test" } }'

Para capturar operações de leitura e gravação na auditoria, você também deve habilitar o sistema de auditoria para registrar os sucessos de autorização utilizando o parâmetro auditAuthorizationSuccess. [1]

Observação

Habilitar o auditAuthorizationSuccess degrada o desempenho mais do que registrar somente as falhas de autorização.

Este filtro audita diversas operações de leitura e gravação:

{
atype: "authCheck",
"param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] }
}

As operações auditadas incluem:

Para especificar um filtro de auditoria, coloque o documento do filtro entre aspas simples para passar o documento como uma 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

Inclua opções adicionais, conforme necessário, para sua configuração. Por exemplo, se você deseja que clientes remotos se conectem à sua implantação ou se os membros da implantação forem executados em hosts diferentes, especifique o --bind_ip.

Para especificar o filtro de auditoria em um arquivo de configuração, você deve utilizar o formato YAML do arquivo de configuração.

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 }

Para capturar operações de leitura e gravação na auditoria, você também deve habilitar o sistema de auditoria para registrar os sucessos de autorização utilizando o parâmetro auditAuthorizationSuccess. [1]

Observação

Habilitar o auditAuthorizationSuccess degrada o desempenho mais do que registrar somente as falhas de autorização.

Esse filtro audita várias operações de leitura e gravação na coleção orders no banco de dados test:

{
atype: "authCheck",
"param.ns": "test.orders",
"param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] }
}

As operações auditadas incluem:

Para especificar um filtro de auditoria, coloque o documento do filtro entre aspas simples para passar o documento como uma 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

Inclua opções adicionais, conforme necessário, para sua configuração. Por exemplo, se você deseja que clientes remotos se conectem à sua implantação ou se os membros da implantação forem executados em hosts diferentes, especifique o --bind_ip.

Para especificar o filtro de auditoria em um arquivo de configuração, você deve utilizar o formato YAML do arquivo de configuração.

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 }

Para filtrar vários campos de mensagem de auditoria, você pode especificar um operador de consulta de nível superior como $or. Por exemplo, o filtro a seguir captura operações em que atype é authenticate ou a operação foi executada por um usuário com a função readWrite :

{
$or: [
{ atype: "authenticate" },
{ "roles.role": "readWrite" }
]
}

Para especificar um filtro de auditoria, coloque o documento do filtro entre aspas simples para passar o documento como uma 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

Inclua opções adicionais, conforme necessário, para sua configuração. Por exemplo, se você deseja que clientes remotos se conectem à sua implantação ou se os membros da implantação forem executados em hosts diferentes, especifique o --bind_ip.

Para especificar o filtro de auditoria em um arquivo de configuração, você deve utilizar o formato YAML do arquivo de configuração.

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ $or: [ { atype: "authenticate" }, { "roles.role": "readWrite" } ] }'
[1](1, 2) Você pode habilitar o parâmetro auditAuthorizationSuccess sem habilitar o --auth; entretanto, todas as operações serão geradas corretamente para verificações de autorização.

Voltar

Configurar