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

Uma visão geral do gerenciamento de usuários do MongoDB

O gerenciamento de usuários do banco de dados é uma parte particularmente importante da segurança de dados, pois devemos entender quem está acessando o banco de dados e definir os direitos de acesso de cada usuário. Se um banco de dados não tiver um gerenciamento de usuários adequado, o acesso do usuário ficará muito confuso e difícil de manter com o passar do tempo.

MongoDB é um banco de dados NoSQL e armazenamento de documentos. A aplicação do conceito RBAC (Role Based Access Control) é fundamental para implementar o gerenciamento de usuário adequado para gerenciar as credenciais do usuário.

O que é o controle de acesso baseado em função (RBAC)?

RBAC é uma abordagem que restringe o sistema apenas a usuários autorizados. Em uma organização, são criados papéis para várias funções de trabalho, no banco de dados criamos os direitos de acesso para realizar algumas operações atribuídas a um determinado papel.

Os membros da equipe (ou outros usuários do sistema) recebem determinadas funções e, por meio deles, são atribuídas permissões para executar funções do sistema do computador. Os usuários não recebem permissões diretamente, mas apenas as obtêm por meio de sua função (ou funções). Gerenciar direitos de usuários individuais se torna uma questão de simplesmente colocar a função apropriada na conta do usuário; isso simplifica as operações gerais (como adicionar usuários ou alterar departamentos de usuários).

Três regras principais são definidas para o RBAC:

  • Atribuição de função :um assunto pode executar permissões somente se o assunto tiver sido escolhido ou tiver uma função atribuída.
  • O papel da autorização :o papel ativo de um sujeito deve ser autorizado para o sujeito. Com a regra 1 acima, essa regra garante que os usuários possam desempenhar funções apenas para aqueles que estão autorizados.
  • Autorização de permissão :Um assunto pode executar permissões somente se a permissão for autorizada para a função ativa do assunto. Com as regras 1 e 2, essa regra garante que os usuários possam exercer permissão apenas para aqueles que estão autorizados.

Este blog revisará brevemente o controle de acesso baseado em função no banco de dados MongoDB.

Funções de usuário do MongoDB

O MongoDB tem vários tipos de papéis no banco de dados, esses são...

Funções incorporadas

Fornece acesso a dados e ações ao MongoDB por meio de autorização baseada em função e possui funções internas que fornecem vários níveis de acesso no banco de dados.

Role dá vários privilégios para fazer algo no recurso que foi criado. As funções internas do MongoDB têm várias categorias:

  • Banco de dados do usuário :Funções Os usuários do banco de dados têm uma função para manipular dados na coleta que não é do sistema. Exemplos de funções do banco de dados do usuário são:read, readWrite.
  • Administração de banco de dados :A Administração de Banco de Dados de Funções lida com o gerenciamento administrativo de bancos de dados, como administração de usuários, esquema e objetos nele.
  • Exemplos de funções de administração de banco de dados são:dbAdmin, userAdmin, dbOwner.
  • Administração de cluster :A função da administração do cluster é administrar todo o sistema MongoDB, incluindo seus replicasets e shards. Exemplos de funções de administração de cluster são:clusterAdmin, clusterManager.
  • Backup e restauração :Este Roles é específico para funções relacionadas ao backup de banco de dados no MongoDB. Exemplos de funções são:backup, restauração.
  • Funções de todos os bancos de dados :As funções estão no banco de dados admin e têm acesso a todos os bancos de dados, exceto local e config. Os exemplos são:readAnyDatabase, readWriteAnyDatabase, userAdminAnyDatabase.
  • Superusuário :As funções têm a capacidade de conceder acesso a todos os usuários, a todos os privilégios, em todos os bancos de dados. Exemplo desta função:root

Funções definidas pelo usuário

Além das funções incorporadas, podemos criar nossas próprias funções de acordo com nossas necessidades, quais privilégios daremos a essas funções. Para criar funções, você pode usar o comando de função db.createRole(). Além de poder criar papéis, existem várias outras funções para gerenciar papéis existentes como:db.dropRole() que é útil para deletar papéis existentes no banco de dados, funções db.getRole() para obter todas as informações de papéis específicos.

Privilege Actions no MongoDB

As ações de privilégios no MongoDB são ações que podem ser executadas por um usuário em um recurso. O MongoDB possui várias categorias de ação, a saber:

  • Ações de gerenciamento de banco de dados, ações relacionadas a comandos relacionados à administração de banco de dados, como ações changePassword, createCollection, createIndex.
  • Ações de consulta e gravação, ações relacionadas à execução de manipulação de dados em uma coleção. Por exemplo, na ação de inserção, o comando que pode ser executado nessa ação é o comando de inserção que pode ser inserido em documentos.
  • Ações de gerenciamento de implantação, ações relacionadas a alterações na configuração do banco de dados. Algumas ações que se enquadram na categoria Gerenciamento de implantação são cpuProfiler, storageDetails, killOp.
  • Ações de replicação, ações relacionadas à execução de recursos de replicação de banco de dados, como replSetConfigure, replSetHeartbeat.
  • Ações de administração do servidor, ações relacionadas a comandos de recursos de administração do servidor no mongoDB, como ações logrotate que são usadas para alternar bancos de dados de log no nível do sistema operacional.
  • Ações de fragmentação, ações relacionadas a comandos de bancos de dados de fragmentação de banco de dados, como addShard, para adicionar novos nós de fragmento.
  • Ações de sessão, ações relacionadas a sessões de recursos em um banco de dados, como listSessions, killAnySession.
  • Ações de diagnóstico, ações relacionadas ao diagnóstico de recursos como dbStats para descobrir as condições mais recentes no banco de dados.
  • Ações de monitoramento gratuitas, ações relacionadas ao monitoramento no banco de dados.

Gerenciando usuários e funções do MongoDB

Você pode criar um usuário e atribuí-lo a funções internas, por exemplo, da seguinte maneira:

db.createUser( {

user: "admin",

pwd: "thisIspasswordforAdmin",

roles: [ { role: "root", db: "admin" } ]

} );

No script acima, significa que o usuário admin será criado com uma senha que foi definida com funções raiz internas, onde a função está incluída na categoria Superusuário.

Além disso, você pode atribuir mais de uma função a um usuário, aqui está um exemplo:

db.createUser(

{user:'businessintelligence', 

pwd:'BIpassw0rd', 

roles:[{'role':'read', 'db':'oltp'}, { 'role':'readWrite', 'db':'olapdb'}]

});

Os usuários de Business Intelligence têm 2 funções, primeiro as funções de leitura no banco de dados oltp e as funções readWrite no banco de dados olapdb.

A criação de funções definidas pelo usuário pode usar o comando db.createRole(). Você deve determinar o propósito de criar a função para que possa determinar quais ações estarão nessa função. Veja a seguir um exemplo de criação de uma função para monitorar o banco de dados Mongodb:

use admin

db.createRole(

   {

     role: "RoleMonitoring",

     privileges: [

       { resource: { cluster: true }, actions: [ "serverStatus" ] }

     ],

     roles: []

   }

)

Então podemos atribuir o papel definido pelo usuário ao usuário que vamos criar, pode usar o seguinte comando:

db.createUser( {

user: "monuser",

pwd: "thisIspasswordforMonitoring",

roles: [ { role: "RoleMonitoring", db: "admin" } ]

} );

Enquanto isso, para atribuir a função a um usuário existente, você pode usar o seguinte comando:

db.grantRolesToUser(

    "existingmonuser",

    [

      { role: "RoleMonitoring", db: "admin" }

    ]

)

Para revogar um usuário existente de uma função, você pode usar o seguinte comando:

db.revokeRolesFromUser(

    "oldmonguser",

    [

      { role: "RoleMonitoring", db: "admin" }

    ]

)

Ao usar funções definidas pelo usuário, podemos criar funções como desejarmos de acordo com as ações que tomaremos nessas funções, como funções para restringir os usuários que só podem excluir linhas em determinados bancos de dados.

Conclusão

A aplicação de direitos de acesso pode melhorar a segurança. O mapeamento de funções e usuários no banco de dados facilita o gerenciamento do acesso do usuário.

Certifique-se de que todas essas informações sobre funções e direitos estejam documentadas adequadamente com acesso restrito ao documento. Isso ajuda você a compartilhar as informações com o outro DBA ou pessoal de suporte e é útil para auditorias e solução de problemas.