CouchDB: criação de usuário sem autenticação. comportamento padrão?

2

Desculpe por esta pergunta sim / não, mas eu não encontrei o documento que iria esclarecê-lo, ou eu devo ter perdido aqui . É um comportamento padrão que você pode simplesmente criar uma nova entrada de usuário para um couchDB (sem ser um usuário administrador) da seguinte maneira:

curl -X PUT http://localhost:5984/_users/org.couchdb.user:jan \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -d '{"name": "jan", "password": "apple", "roles": [], "type": "user"}'

Eu apenas tentei. Ele funciona e cria um novo usuário. Eu não tinha certeza se isso é intencional ou não (existe um administrador de servidor, então não é um admin-party). Esse comportamento pode ser limitado / configurado para evitar inscrições em massa indesejadas?

    
por nylki 10.12.2015 / 16:11

3 respostas

5

Encontrei a resposta para minha pergunta aqui :

In addition, the _users database is now treated different from other databases:

An anonymous user can only create a new document.

Então, sim , um usuário anônimo (não autenticado) pode criar um novo usuário em um CouchDB.

Para configurar / limitar esse comportamento, você pode modificar a função validate_doc_update dentro do documento _design/_auth design, que já lida com certas limitações de criação de usuários (consulte exemplo oficial ). O cheque !is_server_or_database_admin(userCtx, secObj) já existe lá. Para permitir que apenas administradores adicionem novos usuários, você poderia:

    throw({forbidden : 'Users can only be created by server or db admins in this specific CouchDB installation'})

No início dessa declaração, para proibir qualquer ação adicional, quando não autenticado como administrador do banco de dados.

A parte em validate_doc_update se parece com:

//[… existing code …]
if(!is_server_or_database_admin(userCtx, secObj)) {
    throw({forbidden : 'Users can only be created by server or db admins in this specific CouchDB installation'})
    //[… existing code …] 
}

Consulte o exemplo (role para a parte inferior) na documentação oficial para mais detalhes.

    
por 14.12.2015 / 11:59
1

EDITAR: desculpe, isso não está respondendo a pergunta. Eu não li com cuidado o suficiente.

O comportamento padrão é "Admin Party", o que significa que, se nenhum administrador inicial for criado (veja abaixo), todo mundo é admin. Então, para responder a pergunta - sim.

O CouchDB oferece mecanismos básicos de autenticação.

A parte mais importante da documentação é: link . Os usuários são armazenados em um banco de dados de autenticação e os administradores são armazenados no arquivo local.ini. Para adicionar um administrador:

  • encontre o arquivo local.ini executando o comando: couchdb -c
  • abra o arquivo local.ini
  • na seção [admins] descomente a linha admin e adicione uma senha em texto simples
  • relançar o CouchDB. Em seguida, a senha será criptografada (verifique com reabertura local.ini)

Você também pode adicionar uma função admin ao banco de dados de usuários, mas mesmo que o nome seja o mesmo, é apenas outro usuário.

Consulte também o link

    
por 12.12.2015 / 14:15
1

Para impedir que um usuário anônimo crie novos usuários no banco de dados "_users" no CouchDB 2.2, abra o gerenciador Fauxton DB e clique no banco de dados "_users".

Clique na guia "Permissões" e defina "Usuários" como "admin" e "Funções" como "_admin".

Defina também os "Membros" para "admin" e "Roles" para "_admin".

Salve o arquivo e pronto.

(thx para Eric e Chris nos usuários do CouchDB)

    
por 23.11.2018 / 21:48

Tags