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

Como criar usuário e adicionar função no MongoDB


O MongoDB é um banco de dados orientado a documentos multiplataforma que torna o armazenamento e a recuperação de dados rápidos e fáceis. O banco de dados usa uma estrutura semelhante a JSON para os documentos, principalmente familiar aos aplicativos modernos.

O MongoDB usa coleções e manuscritos em que os documentos consistem em pares chave-valor, a unidade básica de dados no MongoDB. Em contraste, as coleções contêm funções e documentos equivalentes às tabelas de banco de dados relacional.

Criar um novo usuário no MongoDB


Para adicionar novos usuários ao sistema, o MongoDB fornece uma técnica interna conhecida como db.createUser(). Em contraste com os sistemas de banco de dados tradicionais, os usuários do MongoDB estão vinculados a um banco de dados local chamado Banco de Dados de Autenticação. Assim, eles não estão vinculados globalmente, como bancos de dados SQL convencionais.

Além disso, o banco de dados de autenticação e o nome do usuário servem como um identificador exclusivo. Portanto, se dois usuários são criados em bancos de dados diferentes, mas compartilham os mesmos nomes, eles são identificados como dois usuários separados. Portanto, se alguém quiser criar um único usuário com permissões em vários bancos de dados, deve-se permitir que um único usuário tenha direitos/funções no banco de dados aplicável, em vez de criar o usuário várias vezes em bancos de dados diferentes.

Exemplo:
db.createUser(

{       user: "Foss",

        pwd: "password",

         roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})

Comandos de gerenciamento de usuários

Nome(s) Descrição
createUser Este método cria um novo usuário.
dropAllUsersFromDatabase Exclui todos os usuários de um banco de dados.
dropUser Concede uma tarefa e seus privilégios a um usuário.
grantRolesToUser Uma função e seus privilégios associados são atribuídos a um usuário.
revokeRolesFromUser Remove a função de um usuário.
updateUser Este método é usado para atualizar os dados de um usuário.
usersInfo Este método retorna informações sobre os usuários fornecidos.

Adicionando um usuário


Ao adicionar o usuário a um banco de dados especificado, use o método “db.createUser()”. É importante observar que adicionar usuários com opções é muito mais simples do que inserir um documento de usuário em um banco de dados não relacional.

Exemplo:
use foss               // specify the DB

db.createUser(

  {

    user: "fosslinux",

    pwd: passwordPrompt(),  // or cleartext password if you wish

    roles: [

       { role: "read", db: "foss" },

       { role: "read", db: "articles" },

       { role: "read", db: "tutorials" },

       { role: "readWrite", db: "tutorialguides" }

    ]

  }

)

Depois de conectar a instância do MongoDB no exemplo acima, você pode anexá-la ao foss DB para executar o comando db.createUser(). A base de dados utilizada funcionará como a Base de Dados de Autenticação do Utilizador.

A senha e o nome de usuário são fornecidos no documento que contém nossa chamada de método como pares de chave-valor. O uso de funções controla o acesso aos bancos de dados. Um usuário deve ter uma função para acessar qualquer banco de dados, até mesmo seu próprio Banco de Dados de Autenticação. Além disso, um usuário recebe acesso a outros bancos de dados no sistema usando funções. Assim, os privilégios de um usuário não estão limitados ao seu banco de dados de autenticação. Portanto, isso permite que os usuários tenham vários privilégios em vários bancos de dados, conforme necessário. O princípio do privilégio mínimo permite que os usuários mantenham o escopo de acesso do banco de dados o menor possível.‍

Como criar um usuário administrador no MongoDB


A criação de um usuário administrador no MongoDB é feita usando o método db.createUser(), que permite criar um usuário. No entanto, depois de criar um usuário, você precisa atribuir funções de administrador. Essas funções concedem privilégios de administrador ao usuário.

Criar um usuário para um único banco de dados no MongoDB


Se quisermos criar um usuário que possa trabalhar apenas com um banco de dados, podemos usar um comando semelhante ao acima, mas devemos usar a opção “userAdmin” apenas uma vez.

Exemplo:
db.createUser(

{        user: "Fosslinux",

         pwd: "password",

         roles:[{role: "userAdmin" , db:"Foss"}]})

Detalhamento do código:

  1. Em primeiro lugar, deve-se especificar o “nome de usuário” e a “senha” a serem criados.
  2. Atribua a função para esse usuário, que é o administrador do banco de dados; isso é atribuído à função "usuário admin", pois a função permite que o usuário tenha privilégios administrativos apenas para o banco de dados especificado no banco de dados
  3. Por fim, o parâmetro DB define o banco de dados no qual o usuário deve ter direitos administrativos.

Gerenciando usuários


Para gerenciar usuários, é preciso entender os papéis que precisam ser definidos, pois o MongoDB possui uma lista completa de funções, como read-role e read-write. O comando “read role” só permite acesso somente leitura aos bancos de dados. A “função de leitura e gravação” fornece acesso de leitura e gravação ao banco de dados; isso significa que o usuário pode emitir os comandos de atualização, inserção e exclusão nas coleções desse banco de dados.

Exemplo:
db.createUser(
{
            user: "Foss",

            pwd: "password",

            roles:[

            {
                        role: "read" , db:"Tutorials"},

    {
                        role: "readWrite" , db:"Guides"}

            }
                          ]
})

O exemplo acima mostra que um usuário conhecido como Foss é criado e atribuído a várias funções em vários bancos de dados. No mesmo modelo, Foss recebe permissão Read-Only no banco de dados “Tutorials” e permissões Read-Write no banco de dados “Guides”.

Adicionando funções ao MongoDB


As funções concedem aos usuários acesso aos recursos do MongoDB. Além disso, o MongoDB fornece várias funções internas que permitem que os administradores controlem o acesso a um sistema MongoDB. No entanto, quando essas funções não podem descrever o conjunto desejado de privilégios, pode-se criar novas funções em um banco de dados específico. Exceto pelas funções criadas no banco de dados do administrador, uma função só pode incluir direitos que se aplicam ao banco de dados e aqueles herdados de outras funções.

Uma função definida no banco de dados admin pode conter direitos aplicáveis ​​ao banco de dados admin, a outros bancos de dados ou ao recurso de cluster e pode herdar funções de outros bancos de dados. Para estabelecer uma nova função, use “db.createRole()” e especifique a matriz de direitos e a matriz de funções herdadas.

O MongoDB define funções exclusivamente combinando o nome do banco de dados com o nome da função. Cada função tem como escopo o banco de dados que você cria, mas o MongoDB armazena todas as informações de função na coleção adminSystemRoles no banco de dados admin. Por exemplo, as ações creative role e grant roles no recurso de banco de dados devem garantir que as funções sejam criadas e concedidas no banco de dados. O grantRole especifica os privilégios para as novas funções e as funções a serem herdadas. O usuário AdminAnyDatabase e o administrador de usuário de funções internas fornecem as ações CreateRole e concedem funções em seus respectivos recursos.

Para criar uma função com as restrições de autenticação especificadas, deve-se definir a ação AuthenticationRetrictions no recurso de banco de dados, no qual a função é então criada.

O método db.grantRole to User() recebe os seguintes argumentos;
Parâmetro Tipo Descrição
Usuário String Envolve o nome do usuário a quem conceder as funções.
Funções Matriz Envolve uma série de funções adicionais a serem concedidas ao usuário.
Escrever preocupação Documento É opcional e visa a modificação do comando. Ele também recebe os mesmos campos com o comando get last error.

O parâmetro roles pode especificar as funções definidas pelo usuário e internas, que podem ser obtidas selecionando a função com seu nome. Isso é feito conectando-se ao mongod (um processo de daemon primário para o sistema MongoDB que lida com solicitações de dados, executa operações de gerenciamento em segundo plano e gerencia o acesso a dados). Alternativamente, o mongos (que é responsável por estabelecer uma conexão entre os aplicativos cliente e o cluster sharded ), com os direitos fornecidos na seção de requisitos. Por exemplo, meu usuário admin criado em um controle de acesso habilitado pode criar funções no admin e em outros bancos de dados.

Comandos de gerenciamento de função

Nomes\s Descrição
createRole Cria uma função e diz o que ela pode fazer.
dropRole Remove a função que foi definida pelo usuário.
dropAllRolesFromDatabase Remove todas as funções que os usuários de um banco de dados configuraram.
grantPrivilegesToRole atribui privilégios a uma função que o usuário escolhe.
grantRolesToRole informa de quais funções uma função definida pelo usuário pode herdar privilégios.
invalidateUserCache Quando você usa invalidateUserCache, o cache na memória das informações do usuário, como credenciais e funções, é liberado.
revokePrivilegesFromRole remove os privilégios de uma função definida pelo usuário que os possui.
revokeRolesFromRole remove as funções herdadas de uma função definida pelo usuário que você não deseja.
rolesInfo retorna informações sobre a função ou funções desejadas.
updateRole Atualiza uma função que foi configurada pelo usuário.

Conclusão


O banco de dados MongoDB, que permite o armazenamento e a recuperação de dados de forma fácil e rápida, pode permitir a criação de um usuário usando o comando “db.createUser()”. Por outro lado, o comando “AdminAnyDatabase” fornece aos usuários todos os privilégios para acessar o banco de dados sob a função de administrador. Este artigo foi além e ilustrou como conceder funções e direitos. Esperamos que você ache útil. Se sim, não se esqueça de deixar uma observação na seção de comentários abaixo.