Menu Docs
Página inicial do Docs
/ / /
Ruby Driver
/

Gerenciamento de usuários

O mongo Ruby Driver fornece um conjunto de métodos para gerenciar usuários em um MongoDB deployment. Todos estes métodos são definidos na classe Mongo::Auth::User::View , que define o comportamento para executar operações relacionadas ao usuário em um reconhecimento de data center. Você pode acessar a visualização de usuário de um banco de dados chamando o método users no objeto Mongo::Database correspondente:

client.database.users

Observe que isso abrirá uma visualização no reconhecimento de data center ao qual o cliente já está conectado. Para interagir com os usuários definidos em um reconhecimento de data center diferente, chame o método use do cliente e passe o nome do reconhecimento de data center com o qual você deseja se conectar:

client.use(:users).database.users

Neste exemplo, todas as operações seriam realizadas no reconhecimento de data center users .

Para obter mais informações sobre usuários e gerenciamento de usuários, consulte a documentação on-line do MongoDB.

Quando um cliente se conecta ao servidor, o MongoDB distingue o banco de dados de dados no qual o cliente executará as operações dafonte de autenticação , que é o banco de dados de dados que armazena o usuário como o cliente está autenticando.

Em muitos casos, a fonte de autenticação é a mesma do reconhecimento de data center. Quando são diferentes, as operações de gerenciamento de usuários devem ser realizadas no reconhecimento de data center de origem de autenticação. Por exemplo, para criar um usuário autenticando com certificado X.509, que deve ser definido no reconhecimento de data center do $external :

client.use('$external').database.users.create(
'C=US,ST=New York,L=New York City,O=MongoDB,OU=x509,CN=localhost',
roles: [{role: 'read', db: 'admin'}],
)

Observe que a fonte de autenticação não é especificada para criar o usuário - a fonte de autenticação é usada apenas durante o processo de autenticação. Se o #create for invocado com um objeto User com auth_source definido, a origem de autenticação será ignorada para fins de gerenciamento de usuários.

Há duas maneiras de criar um novo trigger de banco de dados com o Ruby Driver.

A maneira mais simples de criar um novo usuário é usar o método create , passando um nome de usuário, senha e roles:

client.database.users.create(
'alanturing',
password: 'enigma',
roles: [ Mongo::Auth::Roles::READWRITE ]
)

Outra maneira de criar um usuário é primeiro criar um objeto Mongo::Auth::User com todas as informações do usuário e, em seguida, passar esse objeto para o método create .

user = Mongo::User.new(
user: 'alanturing',
password: 'enigma',
roles: [ Mongo::Auth::Roles::READWRITE ]
)
client.database.users.create(user)

Note que as credenciais do seu novo usuário serão armazenadas em qualquer reconhecimento de data center ao qual seu objeto client está conectado atualmente. Este será o auth_source do seu usuário, e você deve estar conectado ao mesmo reconhecimento de data center para atualizar, remover ou obter informações sobre o usuário que acabou de criar no futuro.

O método create usa Hash opções como um segundo argumento opcional. A opção :roles permite a você conceder permissões ao novo usuário. Por exemplo, o papel Mongo::Auth::Roles::READ_WRITE concede ao usuário a capacidade de ler e escrever no reconhecimento de data center no qual foram criados. Cada função pode ser especificada como String ou Hash. Se quiser conceder permissões a um usuário em um reconhecimento de data center diferente daquele em que ele foi criado, você poderá passar esse nome de reconhecimento de data center na role Hash. Para criar um usuário alanturing com permissão para ler e escrever no reconhecimento de data center machines , você pode executar o seguinte código:

client.database.users.create(
'alanturing',
password: 'enigma',
roles: [{ role: Mongo::Auth::Roles::READWRITE, db: 'machines' }]
)

Para obter mais informações sobre funções no MongoDB, consulte a documentação de funções integradas.

Além da opção :roles , o método create suporta uma opção :session , que permite a você especificar um objeto Mongo::Session para utilizar para esta operação, como também, uma opção :write_concern , que especifica a referência de escrita desta operação quando executada em um conjunto de réplicas.

Veja também:

Para visualizar informações sobre um usuário que já existe no reconhecimento de data center, utilize o método info :

client.database.users.info('alanturing')

Se o usuário existir, esse método retornará um objeto Array contendo um Hash com informações sobre o usuário, como ID, nome de usuário, banco de dados em que foi criado e suas roles. Se o usuário não existir, esse método retornará uma array vazia.

O método info também usa um Hash opcional de opções como segundo argumento. Atualmente, a única opção suportada é :session, que permite a você especificar um objeto Mongo::Session para utilizar para esta operação.

O Driver Ruby não tem um método que lista todos os usuários que existem atualmente em um banco de dados.

Veja também:

Para atualizar um usuário que já existe no reconhecimento de data center, você pode utilizar o método update de duas maneiras. A primeira maneira é especificar o nome do usuário que você deseja atualizar, junto com um novo conjunto de opções.

Aviso

Você deve incluir todas as opções de usuário nas opções Hash, mesmo aquelas opções cujos valores permanecerão os mesmos. Omitir uma opção é o mesmo que defini-la para um valor vazio.

client.database.users.update(
'alanturing',
roles: [ Mongo::Auth::Roles::READ_WRITE ]
password: 'turing-test'
)

A segunda maneira de atualizar um usuário é passar um objeto Mongo::Auth::User atualizado para o método update em vez de um nome de usuário.

user = Mongo::Auth::User.new({
user: 'alanturing',
roles: [ Mongo::Auth::Roles::READ_WRITE ],
password: 'turing-test'
})
client.database.users.update(user)

Opcionalmente, o método update usa uma Hash de opções como segundo argumento. As duas opções possíveis para esse método são :session, que permite especificar um objeto Mongo::Session no qual executar essa operação, e :write_concern, que define uma referência de escrita se essa operação for executada em um conjunto de réplicas.

Veja também:

Para remover um usuário do reconhecimento de data center, utilize o método remove :

client.database.users.remove('alanturing')

Você pode passar Hash de opções como segundo argumento. As duas opções suportadas para o método remove são :session e :write_concern . :session permite a você especificar um objeto Mongo::Session para utilizar para esta operação. :write_concern especifica a referência de escrita da operação se você estiver executando esse comando em um conjunto de réplicas.

O Ruby Driver não fornece um método para remover todos os usuários de um reconhecimento de data center.

Veja também:

Voltar

Monitoramento

Nesta página

  • Usuários e bancos de dados
  • Criando usuários
  • Informações do usuário
  • Atualizando usuários
  • Removendo usuários