MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Log de auditoria para MongoDB

Um dos aspectos de segurança do gerenciamento de um banco de dados é entender quem acessou o banco de dados, quando e o que eles fizeram. Embora já tenhamos protegido o serviço MongoDB, ainda queremos saber quem está fazendo o quê e detectar se há algo estranho. Em uma investigação de violação de dados, um log de auditoria nos permite analisar a atividade histórica, entender de qual endpoint o invasor veio e quais operações eles fizeram quando estavam dentro do banco de dados.

Neste blog, revisaremos o log de auditoria para o MongoDB e sua implementação.

Ativando o log de auditoria no MongoDB

Para habilitar o log de auditoria no MongoDB, precisamos acessar o arquivo de configuração do mongod.conf, seção auditLog:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson


Existem 3 tipos de destinos de log, que são:arquivo, syslog e console. Idealmente, podemos enviar o log de auditoria para um arquivo, em formato compatível com JSON ou BSON. Também podemos habilitar o log de auditoria durante a inicialização do serviço MongoDB conforme mostrado abaixo:

mongod --dbpath /var/lib/mongodb --auditDestination file --auditFormat BSON --auditPath /var/lib/mongodb/audit_mongodb.bson

Filtro de auditoria no MongoDB

Ainda na seção auditLog, existe um parâmetro chamado filter. Podemos filtrar o padrão de ação que queremos registrar. Por exemplo, se quisermos registrar a autenticação em um banco de dados específico, podemos usar o comando abaixo:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: '{ atype: "authenticate", "param.db": "user_profile" }'

Ele rastreará cada autenticação no banco de dados user_profile. Outro exemplo:queremos rastrear as ações; descartar índice, renomear coleção e descartar coleção no banco de dados user_profile. O comando seria:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: { atype: { $in: [ "dropIndex", "renameCollection", "dropCollection" ] }, "param.ns": /^user_profile\\./ } }


Também podemos monitorar o processo de auditoria para os papéis específicos, precisaríamos definir os papéis e banco de dados no filtro:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: { roles: { role: "readWrite", db: "user_profile" } }

Ele registrará todas as ações relacionadas ao usuário que possui as funções readWrite no banco de dados user_profile.

Para o log de auditoria de operações de gravação e leitura, precisamos primeiro habilitar o auditAuthorizationSuccess no MongoDB. Podemos executar o comando abaixo:

db.adminCommand( { setParameter: 1, auditAuthorizationSuccess: true } )

Ou outra opção é alterar o seguinte no mongod.conf conforme abaixo:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: { roles: { role: "readWrite", db: "user_profile" } }
setParameter: { auditAuthorizationSuccess: true }

Percona Server for MongoDB fornece os recursos de log de auditoria gratuitamente, enquanto no MongoDB está disponível apenas na Enterprise Edition. Observe que habilitar o parâmetro afetará o desempenho do banco de dados do seu MongoDB, especialmente no ambiente de produção.

O que vem a seguir?

Podemos enviar o log de auditoria do MongoDB para um Logging Management System, exemplo:pilha ELK (Elasticsearch, Logstash e Kibana) ou podemos usar o Log Management System do provedor para fins de análise.

A maneira mais simples é usar o utilitário jq tools no ambiente Linux para ler o log no formato JSON ou BSON.