Configurar filtros de auditoria em sistemas autogerenciados
Nesta página
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.
Sintaxe do filtro de auditoria
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.
Configuração de filtro em tempo de execução
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
eauditLog.filter
ouauditAuthorizationSuccess
estiver definido.
Para modificar os filtros de auditoria e o parâmetro auditAuthorizationSuccess
no tempo de execução, consulte setAuditConfig
.
Configuração de filtro na inicialização do sistema
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
.
Uso do arquivo de configuração
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.
Exemplos
Registrar todos os eventos auditáveis
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.
Filtrar para vários tipos de operação
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" ] } }'
Filtrar em operações de autenticação em um único banco de dados
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" }
.
Filtrar em Criação de Coleções e Operações de Lançamento para um Banco de Dados Único
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\\./ }'
Filtrar por função de autorização
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" } }'
Filtrar em operações de leitura e escrita
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 }
Filtrar em operações de leitura e escrita para uma coleção
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 }
Especificar operadores de consulta de nível superior ($or)
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" } ] }'
Saiba mais
[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. |